Arduino lässt sich nicht mehr programmieren - "programmer not responding"

Hallo zusammen,

wenn ich versuche mein Arduino Uno zu programmieren (IDE 1.0, Ubuntu11.10), bricht der Upload mit der Fehlermeldung “programmer not responding” ab. Ich habe schon diverse Hinweise beim googlen bzw. hier im Forum gefunden, leider führt keiner zum Ziel.

Die IDE ist was Board & Port betrifft richtig konfiguriert - ich habe in der aktuellen Konfiguration auch schon erfolgreich upgeloaded (deutsch?). Ich hatte das Problem kürzlich schon mal, als ich mit geöffnetem Serial Monitor versucht habe das Arduino neu zu programmieren. Ich vermute also es liegt am Arduino, der sich irgendwie der Kommunikation verweigert. Leider weiß ich nicht mehr, wie ich es damals geschafft habe…

Wie kann ich mein Arduino wieder dazu bewegen sich der Kommunikation NICHT mehr zu verweigern?

Danke
Christian

Oft passiert es daß die Serielle Schnittstelle das Upload blockiert.
Nimm das beispiel Blink aus den Beispielen der IDE und lade dieses hinauf. Während des Upload-Vorgangs drücke die Reset-Taste und lasse sie los sobald der IDE schreibt "Binary sketch size: 1026 bytes (of a 30720 byte maximum)".
Wahrscheinlich klappts nicht beim ersen mal und Du mußt es mehrfach wiederholen.
Um diesem Problem aus dem Weg zu gehen füge ein delay(2000); vor dem serial.begin(); in das setup() ein.
Grüße Uwe

...Danke für die Rückmeldung! Leider hatte ich noch keinen Erfolg (10-20mal probiert) - immerhin blinkt die RX LED jetzt ein paar mal...

Upload-Vorgangs drücke die Reset-Taste und lasse sie los sobald der IDE schreibt "Binary sketch size:

...startet der Upload nicht erst dann?

Zwischen den einzelnen Versuchen: abstecken oder ist das egal?

Christian

…nachdem ich auf den Arduino erfolgreich einen neuen Bootloader gebrannt habe, geht es leider immer noch nicht. Folgende Fehlermeldung kommt, wenn ich versuche ein Sketch auf den Arduino zu laden:

Binary sketch size: 1010 bytes (of a 32256 byte maximum)
/usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -v -v -v -v -patmega328p -carduino -P/dev/ttyACM0 -b115200 -D -Uflash:w:/tmp/build4693591452339528400.tmp/Blink.cpp.hex:i

avrdude: Version 5.11.1, compiled on Oct 30 2011 at 10:37:28
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is “/usr/share/arduino/hardware/tools/avrdude.conf”
User configuration file is “/home/christian/.avrduderc”
User configuration file does not exist or is not a regular file, skipping

Using Port : /dev/ttyACM0
Using Programmer : arduino
Overriding Baud Rate : 115200
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding

avrdude done. Thank you.

Hat noch jemand eine Idee, woran’s jetzt noch liegen könnte?

Danke
Christian

gibt es denn ein /dev/ttyACM0 in Deinem System?
mach mal ein "lsusb" bzw. ein "lsusb -v" als root. Was sagt den /var/log/messages wenn Du den Arduino per USB anschliesst? Hier sollten Meldungen auftauchen, das ein neues Gerät gefunden wurde. Ggf. kannst Du auch nach dem Anstecken des Arduino mal ein "dmesg" als root aufrufen, hier sollten auch entsprechende Meldungen auftauchen.
Mario.

gibt es denn ein /dev/ttyACM0 in Deinem System?

Sonst könnte ich den ja nicht in der Arduino IDE auswählen, oder?

christian99:
Sonst könnte ich den ja nicht in der Arduino IDE auswählen, oder?

Da Du nicht geschrieben hast, was Du ausgewählt hast, oder mit welchen Einstellungen Du arbeitest, hätte ich meine Kristallkugel befragen müssen. Leider ist die gerade zur jährlichen Inspektion.
Ein Antwort auf meine anderen Fragen (lsusb / dmesg / var/log/messages) würde die Chancen auf Hilfe sicherlich deutlich verbessern.

Hier die Ausgabe von lsusb

christian@christian-desktop:~$ sudo lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 05e3:070e Genesys Logic, Inc. USB 2.0 Card Reader
Bus 006 Device 002: ID 045e:0745 Microsoft Corp. Nano Transceiver v1.0 for Bluetooth
Bus 003 Device 009: ID 2341:0043

...und hier die Logdatei

christian@christian-desktop:/var/log$ tail -f -n 0 /var/log/syslog
May 11 19:20:49 christian-desktop kernel: [ 7768.440023] usb 3-1: new full-speed USB device number 11 using uhci_hcd
May 11 19:20:49 christian-desktop mtp-probe: checking bus 3, device 11: "/sys/devices/pci0000:00/0000:00:1a.0/usb3/3-1"
May 11 19:20:49 christian-desktop kernel: [ 7768.650168] cdc_acm 3-1:1.0: ttyACM0: USB ACM device
May 11 19:20:49 christian-desktop mtp-probe: bus: 3, device: 11 was not an MTP device

Auf ein zweites Arduino lässt sich ohne Probleme Code uploaden. Ich bin mir also recht sicher, es liegt an dem (ersten) Arduino und nicht am Rechner.

Danke & Gruß
Christian

Wenn ich die Reset Taste meines Arduino drücke müsste doch bei funktionierendem Bootloader die LED blinken, richtig? Das passiert nämlich leider nicht, was mich zu dem Schluss führt, dass der Bootloader doch nicht fehlerfrei geschrieben wurde - obwohl nichts dafür spricht.

Hier nochmal die Details:

  • Arduino UNO
  • mySmartUSB light (in programmers.txt folgendes eingefügt:
mySmartUSB.name=mySmartUSB
mySmartUSB.protocol=stk500v2
mySmartUSB.communication=serial
  • mySmart USB stk500 konfiguriert (unter Win natürlich...)
  • mySmartUSB an Arduino angesteckt, Arduino IDE 1.0 -> Boards: Arduino Uno, -> Serial Port: /devttyUSB0, ->Programmer: mySmart USB (durch Eintrag in programmers.txt jetzt vorhanden), -> Burn Bootloader, blaue LED blinkt, IDE: Done Burning Bootloader

....also nix, was auf Fehler hinweist - trotzdem kann ich immer noch nix Uploaden.

Nun bin ich etwas ratlos, was ich noch weiter unternehmen kann und somit Dankbar für jeden konstruktiven Hinweis!

Danke
Christian

Trage doch mal in programmers.txt ein:

mySmartUSB.communication=/dev/ttyACM0

Wie Du mit "dmesg" ja sehen kannst, wird Dein Programmer mit diesem device eingebunden, da es dem ACM Standard entspricht.

Wenn Du "serial" einträgst, wird immer "/dev/ttyUSBx" vorausgesetzt, es sei denn, Du installierst einen entsprechenden patch - den es vermutlich nicht für jede Distribution gibt.

Gruß, mmi.

christian99:
Wenn ich die Reset Taste meines Arduino drücke müsste doch bei funktionierendem Bootloader die LED blinken, richtig? Das passiert nämlich leider nicht, was mich zu dem Schluss führt, dass der Bootloader doch nicht fehlerfrei geschrieben wurde - obwohl nichts dafür spricht.

Nein. Solange Du die Resettaste drückst passiert gar nichts. Der Controller wird gestopt und wartet auf das Ende des Resets. Sobald Du den Resettaster losläßt wird zuerst der Bootloader abgearbeitet. Dieser macht das L (pin 13) Led 2 mal in schneller folge blinken. Wenn eine Upload anliegt, wird dieses durchgeführt. Ansonsten bzw nach dem Upload wird der geladene Sketch abgearbeitet. Da Du mit einem ISP-Programmer arbeitest, könntest Du den Bootloader entfernt haben und in diesem Fall wird sofort der sketch ausgeführt.

Viele Grüße Uwe

Trage doch mal in programmers.txt ein:
Code: mySmartUSB.communication=/dev/ttyACM0

…das wenn ich mache, funktioniert das Brennen des Bootloaders überhaupt nicht mehr.

Meine grundsätzlichen Fragen sind folgende:

  • kann trotz der Erfolgsmeldung “Done Burning Bootloader” das Brennen des Bootloaders nicht okay sein?

  • wenn der Bootloader okay ist, woran kann es dann noch liegen

@Uwe:

Sobald Du den Resettaster losläßt wird zuerst der Bootloader abgearbeitet. Dieser macht das L (pin 13) Led 2 mal in schneller folge blinken.

Aber genau das meine ich doch, bei meinem Arduino blinkt nämlich nix, wenn ich die Taste loslasse - heißt das, es ist kein Bootloader vorhanden, obwohl ich vermeintlich erfolgreich einen gebrannt habe (siehe oben)?