你好,我使用STC8G08A 8pin测试PCA T0这个触发源, 它是基本可以工作的,但是有一个很奇怪问题,这个PCA频率计算好像不对。 详细情况如下,mcu的工作频率我设置为24M, 然后Timer0的工作模式设置为0, 开启12T的模式, 然后每20个ticks溢出,即T0L = (0xffff-20)&0xff, T0H= ((0xffff-20)>>8 ) & 0xff。这个正常应该是100khz的频率。 启动T0,写了中断isr进行调试,观察示波器,确实也是100khz. 但是当PCA的CPS设置010(定时器T0的溢出脉冲), 即CMOD=0x4, 这时开pca有pwm输出,但是频率通过视波器测量,发现是很奇怪的781hz. 应该是我理解有问题,请问这个当“PCA的CPS设置010” 时,应该如何计算?代码如下:
- T0L = (0xffff-20)&0xff;
- T0H= ((0xffff-20)>>8 ) & 0xff;
- AUXR = 0x00; //T0x12 = 0
- ET0=1;
- TR0=1;
-
- CCON = 0x00; // 清空中断,停止PCA计数
- CMOD = 0x04; // 0000 0100:CPS=010
- CL = 0x00; // PCA计数器低字节清零
- CH = 0x00; // PCA计数器高字节清零
-
- // 配置CCP模块为PWM模式
- CCAPPM0 = 0x42; // PCA模块0:PWM模式(8位或7位)
- PCA_PWM0 = 0x40;// 7位PWM(CL溢出值0x7F)
-
- CCON |= 0x80; // CR=1,启动PCA计数
-
- EA=1
复制代码
也做了PCA的单独验证,把 CPS设置为100, 即系统时钟,输出频率理论计算是187.5K, 示波器实测也是对的。 求指点!! |