<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />07.7.20
Mega8 的同步通信
这几天在调试自己做的mega8 试验板,感觉还不错,内部资源用起来还是挺顺的,但是被同步串口通信给卡住了,经示波器检查,(经过几次经验的积累,我已经很习惯得使用示波器了来检查信号输出是不是正常的了) 发现TXD有信号输出,但是XCK就是不输出clock信号,通过改寄存器的设置发现,TXD输出的信号是正常的,并且无论DDRD4 写的是输入还是输出模式,TXD都一直在发送数据,我想是不是模式设错了, 设成了异步模式?后来发现“写”的无论是同步模式还是异步模式,输出的结果还是一样的,通过AVR stdio的仿真,发现MUSEL是1(同步模式的),经过再三检查datasheet, 通过一遍又一遍的看pdf 仔细检查了各个寄存器,还是没有看出问题,最后在和小强检查时才发现是因为UCSRC和UBRRH共用,写的时候最高位要设置的原因。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
心得:
1. 看datasheet的时候不要错过任何一个细节。不要觉得没有用就不看了。
2. 仿真的也不一定是完全正确的。看到的也不一定是真实的,即使是读写寄存器的值的时候,看仿真输出是你要的结果,在电路板上跑起来的时候就不一定是你要的了。
文章评论(0条评论)
登录后参与讨论