前段时间自制了一块Arduino MEGA2560的开发板,出现一个奇怪的现象:
烧录Arduino固件后,LED闪烁程序正常跑。
第一次烧录覆盖掉原来的LED闪烁程序后也正常。
但是第二次烧录后出现:avrdude: stk500v2_ReceiveMessage(): timeout
然后查找了三篇文章:
arduino avrdude: stk500v2_ReceiveMessage(): timeout错误的解决方法_Zihh的博客-CSDN博客
arduino MEGA 2560 avrdude: stk500v2_ReceiveMessage(): timeout 错误的解决方法_MIRuACLE_的博客-CSDN博客
以及社区的文章:arduino - avrdude: stk500v2_ReceiveMessage(): timeout - Stack Overflow
按照以上四篇文章方法还是出现此问题,然后怀疑是烧录问题,因为我一开始是用uno开发板烧ISP进2560的,于是买了一个USBtinyISP 下载器,还是遇到这个问题。
因为下载是通过CH340转的串口,于是我便测量了一下CH340复位脚
发现烧录后复位根本没起作用,因此怀疑复位脚电容太大导致无法复位
果然翘掉这个电容就好了,不会再出现avrdude: stk500v2_ReceiveMessage(): timeout问题
最终此电容改为22pF。
因为这份原理图是原来用在ATMEGA328芯片上的,也就是Arduino uno的开发板。
而328芯片此处用104电容是没问题的,可以正常烧录,但是到2560会导致无法复位。