智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2227|回复: 4
打印 上一主题 下一主题

关于pit产生频率为100hz,占空比为15%的程序,求大神指点

[复制链接]

1

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
84
威望
62
贡献
22
兑换币
0
注册时间
2012-10-12
在线时间
6 小时
毕业学校
湖北汽车工业学院
跳转到指定楼层
1#
发表于 2012-10-29 19:03:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2贡献
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
unsigned i=0;        //定义为全局变量
void setbusclk_40M(void)   //设置总线频率为40兆,晶振频率为16兆
{
CLKSEL_PLLSEL=0X00;//寄存SRNR和REFDV只有在PLLSEL=0是才能够写入
PLLCTL_PLLON=1;  //打开PLL电路
SYNR=0X40|0X04;
REFDV=0X80|0X01; //f(vco)=(1+SYNR)/(1+REFDV)*f(osc)*2
POSTDIV=0X00;   //此时f(pll)=f(vco),即锁相环频率等于压控振荡器的频率,总线频率为f(pll)/2;
asm(nop);
asm(nop);   //空语句,等待锁相环频率稳定
while(!(CRGFLG_LOCK==1));    //表明锁相环频率已经稳定,时钟频率也稳定
CLKSEL_PLLSEL=1;   //使能锁相环时钟
}
void initioB(void)     //初始化B口
{
DDRP_DDRP0=0xff;
PTP_PTP0=0Xff;
DDRB=0xff;
}
void initpit(void)   //中断时间设置为5ms
{
PITCFLMT_PITE=0;   //关闭PIT模块
PITCE_PCE0=1;     //定时器通道0使能
PITMUX_PMUX0=0;    //定时器通道0使用微计数器0
PITMTLD0=200-1;     //8位定时器初值的设定
PITLD0=1000-1;      //16位定时器初值设定
PITINTE_PINTE0=1;   //定义器中断通道0中断使能
PITCFLMT_PITE=1;   //定时器通道0使能  time=(PITMTLD0+1)*(PITLD0+1)/f(bus)
}
//1MHZ等于1000000HZ

void main(void) {
  setbusclk_40M();
initioB();
initpit();
EnableInterrupts;

  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PITO(void)
{ PORTB=0X00;
i++;
if(i<=3)
PTP_PTP0=0xff;
else if(i>3&&i<=20)
PTP_PTP0=0x00;
  if(i>20)
  i=0;
PITTF_PTF0=1;      //清除中断标志位
}  

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
111
威望
75
贡献
36
兑换币
0
注册时间
2012-10-13
在线时间
5 小时
毕业学校
湖北汽车工业学院
2#
发表于 2012-11-3 20:43:54 | 只看该作者
能解释下15%占空比和100HZ频率怎么算的吗?
回复

使用道具 举报

0

主题

47

帖子

0

精华

高级会员

Rank: 4

积分
564
威望
295
贡献
159
兑换币
111
注册时间
2012-10-13
在线时间
55 小时
毕业学校
在读生
3#
发表于 2012-11-8 13:43:31 | 只看该作者
频率应该是10HZ吧,时间T=20*5ms,频率f=10HZ。占空比是if语句里面的3/20=15%。。。
回复

使用道具 举报

1

主题

39

帖子

0

精华

高级会员

Rank: 4

积分
539
威望
287
贡献
166
兑换币
184
注册时间
2012-12-11
在线时间
43 小时
4#
发表于 2013-8-8 10:44:32 | 只看该作者
,PIT能产生方波吗?它里面是用到产生方波的,不过是由PWM初始化产生的。
回复

使用道具 举报

3

主题

428

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1772
威望
827
贡献
527
兑换币
568
注册时间
2012-11-23
在线时间
209 小时
5#
发表于 2013-8-12 18:20:07 | 只看该作者
用PIT可以产生方波啊,用IO的高低电平切换就可以啊,  还有为什么不用PWM模块直接产生呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 03:16 , Processed in 0.061823 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表