毛驴 发表于 2014-7-10 13:16:10

mega 2560烧录了一个看门狗的程序后,所有的程序都无法下载到板子上了。

如题所说,我往arduino mega 2560里烧录了一个程序,arduino IDE用的是1.5.6-r2程序没烧上,我直接就把arduino关了,然后所有的程序就都烧不上了,出现了下面这种东西:
avrdude: ser_open(): can't open device "\\.\COM4": 拒绝访问。


avrdude: ser_drain(): read error: 句柄无效。


processing.app.debug.RunnerException
        at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:125)
        at processing.app.Sketch.upload(Sketch.java:1719)
        at processing.app.Sketch.exportApplet(Sketch.java:1625)
        at processing.app.Sketch.exportApplet(Sketch.java:1597)
        at processing.app.Editor$DefaultExportHandler.run(Editor.java:2397)
        at java.lang.Thread.run(Unknown Source)
Caused by: processing.app.debug.RunnerException: Problem uploading to board.See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.
        at cc.arduino.packages.Uploader.executeUploadCommand(Uploader.java:111)
        at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:123)
        ... 5 more
是不是bootload出了问题,诸位大神谁知道啊,烧录的看门狗程序见下,/*------ avr看门狗测试 -----*/

#include <avr/wdt.h>
void setup()
{
   pinMode(13,OUTPUT);
   wdt_enable(WDTO_4S); //开启看门狗,并设置溢出时间为4秒
   digitalWrite(13,HIGH);
   delay(100);
   digitalWrite(13,LOW);
   delay(100);
   digitalWrite(13,HIGH);
   delay(100);
   digitalWrite(13,LOW);
   delay(100);
}

void loop()
{
   digitalWrite(13,HIGH);
   delay(600);
   digitalWrite(13,LOW);
   delay(600);
   //wdt_reset(); //喂狗操作,使看门狗定时器复位
}

bg1lsy 发表于 2014-7-10 19:28:28

因为你屏蔽了喂狗的代码,于是2560就会不停的重启.四秒之内你还来不及写入新的程序进去,就又重启了,你看到的现象就是串口时通时断.
解决的办法有两个:方法一是在编译下载程序的过程中最后要写入到2560时再插上usb线,目的就是在四秒中内让单片机进入下载状态,但成功率不太高,插入的时机非常不好把握.方法二是用icsp烧程序进去,需要一个usb转icsp的线.

毛驴 发表于 2014-7-10 19:58:50

用第一个方法试了5次,成功了,谢谢啦。

znstj 发表于 2015-5-22 10:07:15

看门狗会影响BootLoader,给你参考:http://www.makerbeta.com/forum.php?mod=viewthread&tid=236&page=1#pid607
页: [1]
查看完整版本: mega 2560烧录了一个看门狗的程序后,所有的程序都无法下载到板子上了。