我用PIC18F2420,4M的晶振,T1定时器高中断输出范围为200-1000HZ的方波,高中断我就用了T1专门做这个频率输出没有做其他的事情。我用定时器输出频率的时候,比如说我让他固定输出500HZ的时候,每隔1~3秒他会蹦出个505Hz出来,然后马上又变回500HZ,在示波器上观察到的是那一瞬间周期少了20US, 下面是我输出频率的计算公式 频率要求是x=0时输出200HZ,x=400时输出1000HZ,x是整数 占空比为50%,半个周期的时间是 T/2=1000000/(2x+200)/2,故 y=65535-(25000/(x+100))*10+14; //14是对周期的修正,考虑到从主程序跳转到中断还需要时间。 t1l=y%256; t1h=y/256;
然后我用PWM做了一路频率输出,一样有波动,示波器观察是偶尔周期多出20US
当频率500以上的时候,波动比较大,不满足要求了,有什么好的方法了?频率波动2以内可以接受吧
|