|
楼主 |
发表于 2014-6-13 09:33:14
|
显示全部楼层
本帖最后由 biying 于 2014-6-14 02:31 编辑
报警音出来了,但是报警音中为什么会伴有“嗒嗒-嗒-------嗒嗒”的爆破音呢?
奇怪,为什么我现在把程序里的DTPS=0x00;
DTVALC=0x55;
DTVALB=0x55;
这三行去掉了仍然可以有PWM输出,重新写一片全新芯片也一样
如果while (1)里只有这几句: OCR1C=71;
delay_ms(50);
OCR1C=70;
delay_ms(50);
那么爆破音出现的间隔是9秒,是“嗒-----嗒-嗒”9秒后又“嗒-----嗒-嗒”这种。单片机上电从输出PWM音后也是9秒后出现爆破音。
如果把延时改为 OCR1C=71;
delay_ms(40);
OCR1C=70;
delay_ms(40);
那么爆破音出现的间隔是2.67秒,是“嗒”2.67秒后又“嗒”这种。
如果把延时改为 OCR1C=71;
delay_ms(30);
OCR1C=70;
delay_ms(30);
那么爆破音出现的间隔是9秒,是“嗒”,2.67秒后又“嗒”,2.67秒后又“嗒--嗒”这种,周期也是9秒。
如果把延时改为 OCR1C=71;
delay_ms(5);
OCR1C=70;
delay_ms(5);
那么爆破音出现的间隔是0.5秒,是“嗒”0.5秒后又“嗒”这种。我数了11个,耗时5秒。
改为OCR1C=250;
delay_ms(5);
OCR1C=249;
delay_ms(5); 后听不到爆破音了
改为OCR1C=137;
delay_ms(5);
OCR1C=138;
delay_ms(5); 那么爆破音出现的间隔是5秒,是“嗒-嗒-嗒”然后5秒后又“嗒-嗒-嗒”这种。
改为OCR1C=137;
delay_ms(5);
OCR1C=137;
delay_ms(5); 后是听不到爆破音的,也就是说只要是频率不变就不出问题。
改了这么多,看似没有规律,到底是哪里出了问题?PWM啊,你要给我出难题了。
反复看了马老师关于PWM的帖子,其中一句话给我了灵感:改变PWM的频率,改在计数器溢出中断服务中后(占空比调节依然在主循环中),杂音居然消失了!之前在数据手册中也有看到溢出中断中可以修改TOP值,怎么当时就不会引起重视呢?理论不行,就只有在实践中碰到问题,再回头肯理论了。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|