Arduino中国 | Flamingo EDA

TAG | bootloader

May/09

23

晶振惹的祸

某Arduino,之前可以正常工作,一日发现突然不能正常下载,出错信息依然是经典的:

avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

按照之前的套路,出现这一问题之前Arduino能够正常工作,多半应该是bootloader的问题。于是乎找来USBtinyISP,打开Arduino IDE烧写bootloader,然而情况不妙,avrdude无法正常与AVR通信:

avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

第一次遇到这种情况,ISP部分应该只与最小系统有关,仔细查找了原因之后,唯一可能有问题的应该只有晶振了。用示波器量了量晶振两脚的电压,似乎没有什么大的区别,于是按替换原则换了一个新的晶振上去,问题解决!

这是我第一次遇到这样的现象,看来datasheet里强调的稳定的晶振电路的确是有道理的,我等在设计这部分电路的时候还是要仔细考虑一下的;-)