智能车制作
标题:
关于pit产生频率为100hz,占空比为15%的程序,求大神指点
[打印本页]
作者:
asdgagsdgasdgd
时间:
2012-10-29 19:03
标题:
关于pit产生频率为100hz,占空比为15%的程序,求大神指点
#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; //清除中断标志位
}
作者:
蕞後1.页
时间:
2012-11-3 20:43
能解释下15%占空比和100HZ频率怎么算的吗?
作者:
zhw08
时间:
2012-11-8 13:43
频率应该是10HZ吧,时间T=20*5ms,频率f=10HZ。占空比是if语句里面的3/20=15%。。。
作者:
愤怒的小丽丽
时间:
2013-8-8 10:44
,PIT能产生方波吗?它里面是用到产生方波的,不过是由PWM初始化产生的。
作者:
一粒尘埃
时间:
2013-8-12 18:20
用PIT可以产生方波啊,用IO的高低电平切换就可以啊, 还有为什么不用PWM模块直接产生呢?
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2