找回密码
 立即注册

QQ登录

Carduino Uno R3控制器上传程序失败

来源: 已解决 skyshu2000 2014-11-26 11:50 显示全部楼层 |阅读模式
Carduino Uno R3控制器无法上传程序


背景情况:
从奥松taobao店购买的4WD小车机器人,组装后进行程序调试;本来一切良好,基本上是USB线插上Carduino的控制器就能使用,但是有一次上传代码提示找不到原来的COM3口,从此再也无法上传程序了。我又用原来从别处买的ArduinoUno R3的控制器实验,结果也无法上传。而且此后进行多种尝试,两个控制器板子都无法上传程序了。


运行环境:
台式机Win7 X64 Ultimate SP1 EN-US
Arduino IDE: arduino-1.0.6-windows.exe (Arduino官网 www.arduino.cc下载)


症状:
1)  USB线连接电脑,插入Carduino的USB接口,结果DeviceManager列表中没有任何变化,始终只有一个Ports(COM& LPT) -> Communications Port (COM1)的条目,
1.png


2)  如果在ArduinoIDE的Tools-> Serial Port列表中选择COM1的话,点击上传按钮(Upload),回得到如下错误提示,且程序上传失败。
avrdude: stk500_getsync(): not in sync: resp=0x00
2.png


file:///C:/Users/Yang/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg


3)  在USB线 插入Carduino控制器接口时,板子上的LED-L会快速闪烁大概1秒钟,然后熄灭;绿色的ON灯会常亮;此后任何操作,三个LED灯 L, TX,RX都不会亮。(TX和RX灯至始至终都没有亮过
333.png
file:///C:/Users/Yang/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg



以下尝试都失败:
a)     在Carduino控制器接通USB情况下,按板子上的RESET按钮;
b)     在Device Manager中通过Add legacy hardware强制添加一个硬件设备并使用Arduino程序包中的驱动程序驱动,但是添加的硬件无法被系统开启(系统提示是:Thisdevice cannot start.(Code 10));
c)      尝试卸载Arduino程序,重新安装Arduino 包括版本1.0.5/1.0.6/1.5.8BETA;
d)     使用在贵处购买的USBtinyISP设备对固件进行更新,虽然Arduino IDE提示更行成功,但是还是无法上传程序;
e)     在一台笔记本电脑上(ThinkPad E40)上使用Win7X64 Ultimate SP1/ Win7 X86 Ultimate SP1/ Ubuntu 14.04.1操作系统进行上述尝试,均失败;



软件问题排除,应该是硬件问题
A.     直到今天使用从贵处再次购买的机械臂配件中的一块新的Carduino UnoR3控制器,链接到台式机电脑,在DeviceManager列表中被完美识别
4.png

file:///C:/Users/Yang/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg

B.     使用Arduino IDE 1.0.6,程序可以上传成功 (使用Blink.ino并修改闪烁频率)被执行。在上传过程中RX和 TX的LED灯会相应闪烁。




如果是硬件问题的话?
据此推断,是否是驱动器板上的USB接口的芯片或者相关部件发生问题,导致系统根本无法检测到任何USB设备联入计算机,进而无法识别?如果是这样的话,有什么办法可以解决么?


希望高手能帮忙解答,问题已经困扰一周了。万分感谢。

回复

使用道具 举报

大神点评7

奥松-Tony 2014-11-27 08:54 显示全部楼层
skyshu2000 发表于 2014-11-26 18:02
Tony, 谢谢你的回复

我注意到你的图示中标注了两个ICSP的接口,我需要用你给我的程序对两个接口都进行烧 ...

仅对USB口的芯片进行烧写,后面那个需要正常下载Arduino UNO R3的Bootloader,这样你看可以解决您的问题吗?
回复 支持 1 反对 0

使用道具 举报

skyshu2000 2014-11-26 11:53 显示全部楼层
由于帖子字数超限,这里把最后一次成功上传的代码发一下,虽然个人觉得不大可能是代码引起的问题

  1. /***** Global Defines ****/
  2. // defines to identify DCMotor Board Pin
  3. int PIN_DCMotor_RIGHT_EA = 10;  //定义EA(PWM调速)接口
  4. int PIN_DCMotor_RIGHT_I2 = 9; //定义I2接口
  5. int PIN_DCMotor_RIGHT_I1 = 8;        //定义I1接口
  6. int PIN_DCMotor_LEFT_EB = 5;        //定义EB(PWM调速)接口
  7. int PIN_DCMotor_LEFT_I4 = 6;        //定义I4接口
  8. int PIN_DCMotor_LEFT_I3 = 7;        //定义I3接口

  9. void setup(){
  10.   //setup Serial Communication
  11.   Serial.begin(9600);
  12.   
  13.   //define PIN I/O
  14.   pinMode(PIN_DCMotor_RIGHT_EA, OUTPUT);
  15.   pinMode(PIN_DCMotor_RIGHT_I2, OUTPUT);
  16.   pinMode(PIN_DCMotor_RIGHT_I1, OUTPUT);
  17.   pinMode(PIN_DCMotor_LEFT_EB, OUTPUT);
  18.   pinMode(PIN_DCMotor_LEFT_I4, OUTPUT);
  19.   pinMode(PIN_DCMotor_LEFT_I3, OUTPUT);
  20.   
  21.   //initiate DCMotor as STOP status: EA || EB = 0
  22.   analogWrite(PIN_DCMotor_RIGHT_EA, LOW);
  23.   analogWrite(PIN_DCMotor_LEFT_EB, LOW);
  24.   delay(1000);
  25. }

  26. boolean isLoop = true;
  27. void loop(){
  28.   
  29.   if(isLoop){
  30.     //测试过程中只进行有限次操作,避免无限循环
  31.     int performTimeLimit = 2;
  32.     for(int performTimer = 1; performTimer <= performTimeLimit; performTimer++){
  33.       
  34.       Serial.print(">>>>>>>>[Timer_Begin::");
  35.       Serial.print(performTimer);
  36.       Serial.println("]>>>>>>>>>>>");
  37.       
  38.       //enable PIN_DCMotor_RIGHT_EA
  39.       analogWrite(PIN_DCMotor_RIGHT_EA, 128);
  40.       
  41.       //Right-side-wheels Forward
  42.       Serial.println("--ONLY Right-side-wheels Forward--");
  43.       digitalWrite(PIN_DCMotor_RIGHT_I1, LOW);
  44.       digitalWrite(PIN_DCMotor_RIGHT_I2, HIGH);   
  45.       delay(1000);
  46.       
  47.       //Right-side-wheels Backward
  48.       Serial.println("--ONLY Right-side-wheels Backward--");
  49.       digitalWrite(PIN_DCMotor_RIGHT_I1, HIGH);
  50.       digitalWrite(PIN_DCMotor_RIGHT_I2, LOW);   
  51.       delay(1000);
  52.                        
  53.       Serial.println("--(I1, I2)=(LOW, LOW)--");
  54.       digitalWrite(PIN_DCMotor_RIGHT_I1, LOW);
  55.       digitalWrite(PIN_DCMotor_RIGHT_I2, LOW);   
  56.       delay(1000);
  57.                        
  58.       Serial.println("--(I1, I2)=(HIGH, HIGH)--");
  59.       digitalWrite(PIN_DCMotor_RIGHT_I1, HIGH);
  60.       digitalWrite(PIN_DCMotor_RIGHT_I2, HIGH);   
  61.       delay(1000);
  62.       
  63.       Serial.print("<<<<<<<<[Timer_Finish::");
  64.       Serial.print(performTimer);
  65.       Serial.println("]<<<<<<<<<<<");
  66.       Serial.println();
  67.       
  68.     }//for-loop(performTimer)
  69.   
  70.   
  71.     //STOP DCMotor
  72.     analogWrite(PIN_DCMotor_RIGHT_EA, LOW);
  73.     analogWrite(PIN_DCMotor_LEFT_EB, LOW);
  74.     Serial.println("===DCMotor STOP===");
  75.     delay(1000);
  76.   }//if(isLoop)  
  77.   isLoop = false;
  78.   return;  
  79. }
复制代码
回复 支持 反对

使用道具 举报

奥松-Tony 2014-11-26 14:31 显示全部楼层
您这可以尝试给Atmega32U2(USB转串口芯片)烧写固件下固件。32U2的ICSP接口如图所示,可以参考Arduino UNO的主芯片。 1.png

注意上图中的1脚对应标注。

USBtinyISP连接至电脑,以管理员权限运行附件中16U2芯片烧写.cmd。
您看下是否可以解决您的问题。
16U2烧写程序.zip (207.02 KB, 下载次数: 41)
回复 支持 反对

使用道具 举报

skyshu2000 2014-11-26 18:02 显示全部楼层
奥松-Tony 发表于 2014-11-26 14:31
您这可以尝试给Atmega32U2(USB转串口芯片)烧写固件下固件。32U2的ICSP接口如图所示,可以参考Arduino UNO ...

Tony, 谢谢你的回复

我注意到你的图示中标注了两个ICSP的接口,我需要用你给我的程序对两个接口都进行烧写么?
回复 支持 反对

使用道具 举报

skyshu2000 2014-11-27 09:54 显示全部楼层
奥松-Tony 发表于 2014-11-27 08:54
仅对USB口的芯片进行烧写,后面那个需要正常下载Arduino UNO R3的Bootloader,这样你看可以解决您的问题 ...

Hi Tony, 按照你的说明,我用你提供的程序对USB口的芯片进行烧写,但是出现了一个错误提示

  1. Reading | ################################################## | 100% 0.00s

  2. avrdude: verifying ...
  3. avrdude: verification error, first mismatch at byte 0x0000
  4.          0xcf != 0x0f
  5. avrdude: verification error; content mismatch

  6. avrdude: safemode: Fuses OK

  7. avrdude done.  Thank you.
复制代码


USB线连接Carduino 控制器和电脑后,依然无法识别;再通过Arduino IDE (1.0.6) 通过USBtinyISP烧录Bootloader以后,也无法识别。

我来我对你提供的文件中的 16U2芯片烧写.cmd 文件中的 lock:w:0xCF:m 改成 lock:w:0x0F:m, 重复上述操作,虽然在运行 16U2芯片烧写.cmd  后,没有错误提示了,但是不论我是否烧录Bootloader, 电脑对插入的控制器都没有识别。
回复 支持 反对

使用道具 举报

Cinderella 2014-11-27 11:43 显示全部楼层
小菜鸟路过~~~我什么时候才能看懂这些东东 然后也能像大神一样去帮助别人呢
回复 支持 反对

使用道具 举报

重新写一下底层程序就OK啦、
回复 支持 反对

使用道具 举报

您可能感兴趣的文章

您需要登录后才可以回帖 登录 | 立即注册

关注1

粉丝1

帖子1

发布主题
社区热门 MORE+
    社区热帖 MORE+