|
楼主 |
发表于 2011-11-9 21:54:54
|
显示全部楼层
回复【8楼】albert_w
括号 , 位运算优先级很低的,低于==
-----------------------------------------------------------------------
是优先级的问题,先前一直不认为问题会出在优先级上面!多谢!你QQ多少啊,方便说下吗?或加我也可:390960120,qq交流可能更实时些
写了个程序发现遇到问题还挺多的,又遇到个问题,如下所述:
基本参数为mega8,ICCAVR,8M晶振,实现125khz ASK键控调幅通信(输出125khz时代表二进制1,输出0hz即0V时代表二进制0),打算使用10kbps的通信速率。用定时器1的CTC模式弄出了125khz方波,用定时器2的CTC模式弄出了10khz的方波(100uS的周期),示波器观察这两个方波的频率是很准的。
为了测试通信频率的稳定性,采取了以下方法:为了简便和直观,不让125khz参与测试。让PB1口循环输出10101010进行测试。具体方法为:开放定时器2的比较匹配中断,第一个中断到来后,PB1口输出1(作为I/O口输出4.5V,代表二进制1);第二个中断到来后,PB1口输出0(作为I/O口输出0V,代表二进制0),第三个中断到来后,PB1口输出1(作为I/O口输出4.5V,代表二进制1),第四个中断到来后,PB1口输出0(作为I/O口输出0V,代表二进制0),依此循环往复进行。
如上所述,理论上在PB1口会复现定时器2的10khz方波,但是通过示波器发现PB1口的方波只有6khz多,不知何故,猜测可能是100uS的周期不能满足中断函数运行需要的时间,但8M晶振应该运行起来挺快的。想通过PB1稳定输出10khz频率有什么好方法吗?有知道的能说下吗?多谢 |
|