Arduino Diecimila (ATMEGA168) + JTAG ICE MKII Hell..Habe ich den Chip gebraten?

Vor zwei Wochen habe ich meinen AVR JTAG ICE MKII herausgeholt und erfolgreich ein paar C-Programme über AVRStudio 4 SP3 auf meinen Arduino gebrannt. Alles funktionierte sehr gut.

Das Leben hat mich eingeholt und ich habe den Arduino oder JTAG bis gestern nicht angerührt. Ich beschloss, dass ich mit ein paar XBees spielen wollte. Heruntergeladenes XCTU zum Aktualisieren der Firmware und was nicht. Mir wurde klar, dass ich die Arduino-Firmware auf dem Diecimila neu installieren musste, um das Arduino-XBee-Schild zum Aktualisieren der Firmware zu verwenden. Ich habe versucht, die ursprüngliche Arduino-Bootloader-Hex-Datei über JTAGICE2 mit AVRProg in AVRStudio zu laden, und bin auf ein Problem gestoßen, das ich in den letzten 9 Stunden nicht lösen konnte.

Ich habe auf AVRDude umgestellt, damit ich eine ausführliche Ausgabe sehen kann. Jedes Mal, wenn ich AVRDude verwende, um den ATMEGA168 zu programmieren, erhalte ich Folgendes:

avrdude: AVR device initialized and ready to accept instructions

Reading |                                                    | 0% 0.00savrdude:
Send: u [75]   [20]
avrdude: Recv:
Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0xffffff
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

Ich habe auch erhalten:

avrdude: jtagmkII_setparm()
avrdude: jtagmkII_setparm(): Sending set parameter command (parm 0x03, 1 bytes): 0xa0 (1 bytes msg)
avrdude: jtagmkII_setparm(): bad response to set parameter command: RSP_FAILED
avrdude: jtagmkII_getsync(): ISP activation failed, trying debugWire
avrdude: jtagmkII_setparm()
avrdude: jtagmkII_setparm(): Sending set parameter command (parm 0x03, 1 bytes): 0xac (1 bytes msg)
avrdude: jtagmkII_setparm(): bad response to set parameter command: RSP_DEBUGWIRE_SYNC_FAILED
avrdude: failed to sync with the JTAG ICE mkII in ISP mode
avrdude: jtagmkII_close()
avrdude: jtagmkII_close(): Sending sign-off command: avrdude: usb_fill_buf(): usb_bulk_read() error error reaping URB: No such device
avrdude: jtagmkII_recv(): Timeout receiving packet

avrdude: jtagmkII_close(): timeout/error communicating with programmer (status -1) 

Während ich den JTAGICE2 verwendete, verband ich seinen 6-Pin-Header mit dem ICSP-Header auf dem Arduino. Ich würde meine 12-VDC-Wandwarze zuerst an den Arduino anschließen, dann den über USB angeschlossenen JTAGICE2 einschalten und dann AVRStudio öffnen oder AVRDude in DOS verwenden, um zu versuchen, zu programmieren. Beide Programme hatten nie ein Problem mit dem jtag selbst ... nur dem Ziel. Während des JTAGICE2-Problems würde ich den folgenden Befehl verwenden:

arduino-0021...\avr\bin>.\avrdude -C .\avrdude.conf -p m168 -c jtag2isp -P usb:64:b0 -vvvv -b 19200 -t

oder

arduino-0021...\avr\bin>.\avrdude -C .\avrdude.conf -p m168 -c jtagmkII -P usb:64:b0 -vvvv -b 19200 -t

Nach einigen Stunden ohne Erfolg habe ich schließlich einen Arduino Nano v3.0 (ATMEGA328P) herausgeholt und ArduinoISP über die neueste Arduino-Verkabelung darauf gesprengt. Die Drähte gemäß der Arduino.cc-Website (First 'Schematic') korrekt angeschlossen und versucht, den Bootloader erneut auf die Diecimila hochzuladen. Diesmal habe ich den folgenden avrdude-Befehl ausprobiert:

arduino-0021\..\avr\bin>.\avrdude -C .\avrdude.conf -p m168 -c avrisp -P com4 -b 19200 -vvvv -t

Ich erhalte weiterhin den gleichen Fehler. Das Seltsame ist, dass das letzte Programm, das ich vor 2 Wochen auf die Diecimila geladen habe, einwandfrei funktioniert. Ich bekomme das verdammte Ding da einfach nicht weg!

Die Tatsache, dass der Fehler erwähnte, dass die Gerätesignatur des ATMEGA168-Chips 0xffffff ist, macht mir Sorgen.

Jetzt glaube ich, dass dieses Problem aus verschiedenen Gründen auftreten kann:

  1. Beim Programmieren des Arduino vor zwei Wochen mit AVRProg & JTAGICEMK2 wurden eventuell Fuses gesetzt. Ich kann Ihnen jedoch sagen, dass sie sich in dem von AVRProg verwendeten Standardzustand befanden, da ich NIE an der Sicherungslasche herumgeschraubt habe. Meine plausibelste Erklärung ist jedoch, dass der ISP über eine Sicherung deaktiviert wurde.
  2. Irgendwie kann Hardware beschädigt worden sein, wodurch die Programmierfunktion nicht funktioniert. Mir ist kein Schaden bekannt, kann ich aber nicht ausschließen.
  3. Der JTAGICEMKII ist möglicherweise beschädigt ... obwohl derselbe Fehler mit ArduinoISP diese Möglichkeit widerlegen sollte
  4. Während der Google-Recherche habe ich gelesen, dass das JTAG-Flachbandkabel große heikle Probleme hat. Ich bin mir nicht sicher, ob dies ein ernsthaftes Problem ist oder nicht.

Nun, ich bin offiziell ratlos. Ich hoffe, ich habe alle notwendigen Informationen eingefügt. Ich führe dieses Setup auf einem stabilen Windows 7 64-Bit-PC mit der neuesten Arduino-, AVR ToolChain- und AVRStudio-Software aus, die seit zwei Wochen verfügbar ist. Falls es mein Desktop-Computer war, habe ich auch Arduino D/L und libusb-win32 auf meinen Vista-Laptop heruntergeladen, eine AVRDude-Abfrage mit dem ersten DOS-Befehl versucht und den ersten oben aufgeführten Fehler erhalten. Muss ich nur einen neuen Chip kaufen? Ich weiß, dass sie nichts kosten, aber ich würde es vorziehen, es zu speichern und aus meinem Fehler zu lernen, damit ich es das nächste Mal beheben oder das Problem ganz vermeiden kann.

Haben Sie Vorschläge, die helfen könnten? Danke im Voraus für Ihre Antwort.

Ich bin auf ein ähnliches Problem mit meinem PICkit 2 und einigen dsPICs gestoßen. Ich hatte es versäumt, den Vdd- und Vss-Anschluss des PICkit 2 mit meiner Schaltung Vdd/Vss zu verbinden, was alle möglichen zeitweiligen Probleme verursachte. Das Hinzufügen meiner Oszilloskopsonde würde manchmal dazu führen, dass es funktioniert.

Antworten (1)

Ich glaube, ich habe eine zweiteilige Lösung für mein spezielles Problem gefunden. Ich besitze derzeit einen Arduino Diecimila (der den ATMEGA168 mit dem Problem hat) und auch einen neuen Arduino Nano 3.0. Ich ging voran und flashte den Arduino Nano mit der ArduinoISP- Firmware. Ich habe dann 3 28-Pin-ATMEGA328P-DIP-Chips für jeweils 5,00 $ im örtlichen Elektronikgeschäft abgeholt.

Ich habe den ArduinoISP verwendet, um einen der jungfräulichen Chips mit der Arduino-Firmware zu flashen, indem ich den obigen Link mit einem Kristall verwendet habe. Ich habe vor, jetzt einen der anderen ATMEGA328Ps mit der High Voltage Programmer- Firmware zu flashen. Dieser Chip zusammen mit ein wenig Verdrahtung auf einem Steckbrett sollte es mir ermöglichen, alle Sicherungen auf dem ursprünglichen ATMEGA168 zurückzusetzen. Sobald das erledigt ist, kann ich den Arduino Nano verwenden, um den Chip neu zu programmieren.

Da die ATMEGA328Ps jeweils nur 5 $ kosten, ist es mein Endziel, einen 328 als Arduino ISP-Programmierer einzurichten, den 168 als HV-Programmierer einzurichten, einen 328-Chip in meinem aktuellen Arduino Diecimila zu behalten (Upgrade!!), und ich werde es haben ein übrig für was auch immer. Ich kann dann entweder Chips auf der Diecimila tauschen oder ein richtiges Board für die ISP- und HV-Programmer-Boards aufbauen.

Ich habe den JTAG ICE MKII noch nicht mit einem Logik/Oszilloskop getestet. Nicht sicher, ob es die Wurzel des Problems ist oder nicht. Ich werde dieses Problem ansprechen, nachdem ich den HV-Programmierer erstellt habe.

Ich werde über den Erfolg/Misserfolg des HV-Programmierers berichten. Ich muss nur noch ein paar 1K-Widerstände holen, um es abzuziehen. Hat schon mal jemand den HV Programmer ausprobiert? Irgendwelche anderen Vorschläge? Wenn nichts anderes, hoffe ich, dass dies jemandem hilft.

Ich freue mich, Ihnen mitteilen zu können, dass die oben verlinkte Hochspannungsprogrammierer-Firmware laut mir den Arduino Nano verwendet, um den ATMEGA168P zu reparieren, den ich durcheinander gebracht hatte. Heute werde ich Tests am JTAG ICE MKII durchführen, um festzustellen, ob es ein Hardwareproblem gibt.
JTAG ICE MKII funktioniert perfekt nach HVP. Kein wirklicher Schaden angerichtet, also Fall für mein Problem geschlossen.
Es kommt selten vor, dass Menschen weitermachen, nachdem ihr Problem gelöst ist. Normalerweise braucht Typ XYZ jetzt eine Antwort , und wenn der Thread abrupt stoppt (nachdem jemand eine Lösung für sie gepostet hat); sie verschwinden. Scham! Wer auch immer Sie sind, schön, dass Sie Ihre Lösung im Detail melden, Prost.