Atmega128 ISP-Programmierung, Geräte-ID kann nicht gelesen werden

Ich versuche einen Atmega128 zu programmieren. ISP-Programmierung Zuerst habe ich AVR Dragon verwendet, ich kann die Zielspannung lesen, aber wenn ich gehe, um die Gerätesignatur zu lesen, kommt eine Warnung

Der Programmiermodus kann nicht aufgerufen werden.


Bitte überprüfen Sie die Geräteauswahl, Schnittstelleneinstellungen, Zielleistung und Verbindungen zum Zielgerät.

Ich verwende AVR Studio 6. Ich habe andere Atmega128 mit demselben AVR-Dragon programmiert, aber ich habe immer noch versucht, mit STK500 zu programmieren. Es nützt nichts, da ich die gleiche Warnung erhalten habe.

Ich habe in Google gesucht, aber ich habe keine Lösung gefunden. sCK, RESET, MOSI, MISO, VCC, Ground alle Verbindungen sind perfekt und ich habe Bypass-Kondensatoren zwischen Vcc und Masse von Atmega128 gesetzt.

Sogar ich habe den IC durch einen neuen Atmega128 ersetzt, aber das Ergebnis ist dasselbe.

Überprüfen Sie, ob die Schnittstellengeschwindigkeit kleiner oder gleich 250 kHz ist, falls der MEGA auf dem internen 1-MHz-RC läuft. Wenn die Sicherungen bereits auf die Verwendung eines externen Quarzoszillators eingestellt waren, ist dies möglicherweise das Problem und der Oszillator fehlt?

Antworten (2)

Meine üblichen Schritte zur Wiederherstellung von ISP-Problemen:

  1. Strom prüfen. Der Drache liefert keinen Strom über die Vcc-Leitung. Das Ziel muss durch seine eigene Versorgung mit Strom versorgt werden. Die Vcc-Leitung dient nur zum Messen der Zielspannung. Stellen Sie außerdem sicher, dass Sie sich im richtigen Teil des Diagramms zwischen Netzspannung und beabsichtigter Betriebsfrequenz befinden (oder Sie werden feststellen, dass Sie 16 MHz bei 3,3 V nicht erreichen können).

  2. Stellen Sie sicher, dass Sie die richtigen SPI-Pins angeschlossen haben. Auf einigen AVR-Chips haben sie einen alternativen SPI-Port. ISP wird immer die Alternative verwenden, falls vorhanden, aber es ist nicht üblich (aber das hat mich kürzlich auf dem ATmega32M1 gebissen).

  3. Stellen Sie sicher, dass Studio mit dem Drachen spricht (beachten Sie, dass sie jetzt auf Version 7 sind). Wenn es die Zielspannung erreichen kann, ist es wahrscheinlich in Ordnung.

  4. Verringern Sie die Taktrate (gemäß @Rev1.0). Wenn das funktioniert, können Sie versuchen, es wieder hochzufahren und sehen, was Sie daraus machen können.

  5. Versuchen Sie, an die Sicherungen heranzukommen. Wenn Sie so weit kommen können, nehmen Sie Ihre Einstellungen an den Sicherungen vor und Sie können wahrscheinlich loslegen.

  6. Überprüfen Sie den SPI und sehen Sie, ob irgendetwas auf der Platine im Bus kollidieren könnte. Haben Sie einen anderen Chip im Bus, der gerne spricht, wenn er nicht sollte?

  7. Wenn dies fehlschlägt, holen Sie das O-Scope heraus und suchen Sie nach Signalen, die auf Reset, MOSI, MISO und SCK vorhanden sind, und debuggen Sie von dort aus.

Ich musste das schon mehrmals zum Laufen bringen, aber es lag nie an einem schlechten AVR oder einem schlechten Dragon (obwohl ich vielleicht Glück habe). Normalerweise bringt sie irgendwann etwas zum Reden.

"ISP verwendet immer die Alternative". Nicht wahr. Der ATTiny841 hat einen alternativen SPI-Standort, aber der ISP verwendet den Standardstandort. Besser gesagt, die Pins werden im Datenblatt im Abschnitt zur externen seriellen Programmierung immer explizit aufgeführt.
Um die Liste zu ergänzen, speisen Sie einen externen Takt von beispielsweise 1 MHz in den CLKI-Pin ein, nur für den Fall, dass die Sicherungen so eingestellt sind, dass sie den internen Oszillator deaktivieren.
@Tom Carpenter Stimmt über Tiny, aber ich habe seit über 10 Jahren keinen Tiny mehr angefasst. Ich wusste nicht einmal etwas über den alternativen Port für ISP auf AVR, bis wir vor zwei Monaten unseren ersten ATmega32M1 starteten und ISP nicht funktionierte. Musste Flywire verwenden, um den ISP auf den alternativen Port zu verschieben, aber sobald wir es in debugWire hatten, zogen wir die Flywires hoch.

Vielen Dank für die Punkte, Informationen. Ich habe die Anschlüsse und die Stromversorgung überprüft. Alles war gut. Nur die Geräte-ID kann nicht gelesen werden, daher kann ich die Sicherungseinstellungen nicht ändern / modifizieren, auch der Atmega128-IC ist ein neuer IC. Ich habe 11,0592 MHz Quarz verwendet. Als letzte Option habe ich versucht, das Quarzsignal mit einem Oszilloskop zu überprüfen, als ich das Signal / die Frequenz bei XTAL1, XTAL2 überprüfte, fand ich, dass es Null / Masse, kein Impuls / Signal / Frequenz war. Ich habe meinen Quarz gewechselt, sogar die verwendeten Bypass-Kondensatoren. Aber es nützt nichts. Schließlich habe ich diesen atmega128 durch einen bereits verwendeten/programmierten/funktionierenden Atmega128 ersetzt. Jetzt kann ich es auf meiner gleichen Platine programmieren, mit dem gleichen Kristall und dem gleichen AVR-Drachen.