usbasp mit avrdude: Fehler: Programm aktivieren: Ziel antwortet nicht. 1

Ich habe einen "usbasp"-Programmierer von AliExpress für die Verwendung mit meinen ATtiny84A AVR-Geräten gekauft. Auf der Oberseite der Platine ist der Text "USBASP V2.0 LC Technology" aufgedruckt, und es sieht ungefähr so ​​​​aus:

usbasp

Ich habe ein C232HM (FTDI)-Kabel, das ich seit einiger Zeit erfolgreich als Avrdude-Programmierer verwende, sodass ich weiß, dass meine AVR-Geräte funktionieren und dass ich die richtigen Pins am ATtiny84 verwende.

Leider habe ich mit diesem neuen Programmierer keinen Erfolg gehabt. Nach dem Verbinden von VCC (mit Jumper J1 auf 5V gesetzt), GND, MOSI, MISO, SCK und RESET (und dreifachem Prüfen!) avrdudeergibt sich folgender Fehler:

$ avrdude -c usbasp -p attiny84 -vvvv 

avrdude: Version 6.3, compiled on Sep 17 2016 at 02:19:28
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/usr/local/Cellar/avrdude/6.3/etc/avrdude.conf"
         User configuration file is "/Users/me/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : usb
         Using Programmer              : usbasp
avrdude: usbasp_open("usb")
avrdude: seen device from vendor ->www.fischl.de<-
avrdude: seen product ->USBasp<-
         AVR Part                      : ATtiny84
         Chip Erase delay              : 4500 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : possible i/o
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65     6     4    0 no        512    4      0  4000  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           flash         65     6    32    0 yes      8192   64    128  4500  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00

         Programmer Type : usbasp
         Description     : USBasp, http://www.fischl.de/usbasp/

avrdude: usbasp_initialize()
avrdude: usbasp_transmit("USBASP_FUNC_GETCAPABILITIES", 0x00, 0x00, 0x00, 0x00)
avrdude: usbasp_spi_set_sck_period(0)
avrdude: auto set sck period (because given equals null)
avrdude: usbasp_transmit("USBASP_FUNC_SETISPSCK", 0x00, 0x00, 0x00, 0x00)
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: usbasp_transmit("USBASP_FUNC_CONNECT", 0x00, 0x00, 0x00, 0x00)
avrdude: usbasp_program_enable()
avrdude: usbasp_transmit("USBASP_FUNC_ENABLEPROG", 0x00, 0x00, 0x00, 0x00)
         <= [01] 
avrdude: error: program enable: target doesn't answer. 1 
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: usbasp_close()
avrdude: usbasp_transmit("USBASP_FUNC_DISCONNECT", 0x00, 0x00, 0x00, 0x00)

avrdude done.  Thank you.

Es funktioniert nicht mit einer externen 5-V-Versorgung (J1 entfernt) oder mit J1 auf 3,3 V eingestellt.

Mit meinem Oszilloskop kann ich sehen, dass die Uhr mit etwa 92,6 kHz läuft, aber die MISO- und MOSI-Signale haben eine sehr niedrige Amplitude - etwa 1,1 V für MISO und 0,8 V für MOSI. Diese Spannungen erscheinen mir etwas niedrig:

Umfang

Ich habe gelesen, dass J3 verwendet werden kann, um den Programmierer in den "langsamen" Modus zu versetzen (beachten Sie, dass der ATtiny84, den ich gerade zu programmieren versuche, bereits mit 8 MHz vom internen Oszillator läuft). Beim Hinzufügen von J3 sehe ich jedoch keine Änderung der Taktrate - es läuft immer noch mit etwa 92,6 kHz.

Nach dem, was ich gelesen habe, neigen die "chinesischen" USB-Programmierer dazu, mit einer Version der Software auszuliefern, die die Erkennung der Taktgeschwindigkeit ermöglicht. -BIch bin mir jedoch nicht sicher, ob dies zur Unterstützung der Option "-B" führt, da das Oszilloskop zeigt, dass die Uhr immer noch mit 92,6 kHz läuft, unabhängig davon, welchen Wert ich angebe.

Ich habe sichergestellt, dass keine anderen Schaltkreise den Programmierer stören. Ich habe auch einen zweiten, "frischen" ATtiny84 ausprobiert (also Sicherungen immer noch auf 1 MHz eingestellt), ebenfalls ohne Erfolg. Der C232HM-Programmierer funktioniert jedoch einwandfrei.

Also scheint nichts, was ich gelesen habe, mit dem zu korrelieren, was ich auf meinem Gerät sehe. Ich frage mich, ob diese MOSI/MISO-Spannungen zu niedrig sind (und warum) und ich bin auch verwirrt darüber, warum weder J3 noch -Bdie Taktrate zu beeinflussen scheint.

Was könnte falsch sein? Was kann ich noch untersuchen?

EDIT: Weitere Informationen hinzugefügt.

Der ATtiny erhält etwa 5,1 V vom Programmierer. Dies scheint während des Vorgangs nicht zu schwanken oder abzufallen.

Spuren mit ATtiny84 vorhanden:

  • Gelb: SCL (USBasp Pin 7 / ATtiny84 Pin 9) - 5V
  • Cyan: MISO (USBasp Pin 9 / ATtiny84 Pin 8) - ~1,1 V
  • Magenta: MOSI (USBasp Pin 1 / ATtiny84 Pin 7) - ~3,3 V
  • Blau: RESET (USBasp Pin 5 / ATtiny84 Pin 4) - 5V

voll

Die RESET-Leitung wird vom Programmierer zweimal auf Low gezogen, und die MOSI-Leitung geht auf ca. 3,3 V. Dann nach ca. 100ms beginnt der SCL bei 0-5V zu pulsieren, ca. 94 kHz, und es gibt Aktivität sowohl auf der MOSI- als auch auf der MISO-Leitung, aber es sieht ziemlich schrecklich aus:

Nahaufnahme

Ohne ATtiny84 (SLK, RESET, MISO und MOSI Floating) sieht der Bereich so aus:

kein ATtiny

Die magentafarbene Spur ist MOSI und steigt auf etwa 5 V an, sieht aber hässlich aus (vielleicht weil sie schwebt):

kein ATtiny gezoomt

Es gibt auch irgendeine Art von Signal auf MISO, vielleicht Störungen von MOSI?

Ich habe einen 330-kOhm-Widerstand zwischen MOSI und GND und einen 1-MOhm-Widerstand zwischen MISO und GND (immer noch kein ATtiny vorhanden) und es hat die Spuren ein wenig aufgeräumt:

mit Widerständen

Was ich jedoch nicht wirklich verstehe, ist, warum das MOSI-Signal (Magenta) so unsauber ist und warum auf MISO (Cyan) ein Taktsignal vorhanden ist.

1,1 V und 0,8 V sind nicht nur "etwas" niedrig, sondern viel zu niedrig. Welche (gemessene) Versorgungsspannung erhält der ATTiny, wenn er an den Programmierer angeschlossen ist? Was macht RESET? Wie sieht MOSI am USBASP aus, wenn es vom ATtiny getrennt ist?
Ich habe meiner Frage einige weitere Informationen hinzugefügt, die hoffentlich Ihre Fragen beantworten sollten. Vielen Dank für einen Blick.
Vielleicht müssen MISO/MOSI hier Klimmzüge haben. Das wäre ein Problem in der Firmware des Programmierers, wenn Push-Pull oder interne Pullups nicht verwendet werden.
Mit Klimmzügen auf MISO und MOSI liegen sie mit dem ATtiny84 an Ort und Stelle bei etwa 4,7-5 V. Keiner wird unter etwa 4,7 V heruntergezogen.
Mit dem 330k-Pulldown erreicht MOSI nur etwa 1,6 V, wenn es hoch ist. In Kombination mit den langsamen Anstiegs- und Abfallzeiten deutet dies auf einen Serienwiderstand von ~700k hin. Auf der Unterseite der USBASP-Platine in der MOSI-Leitung sollte sich ein niederohmiger (270 Ohm?) Widerstand (R5?) befinden. Kannst du das testen? Wenn der ATtiny nicht antwortet oder fehlt, schwebt MISO und es ist mit Übersprechen zu rechnen.
Ich melde mich wieder, wenn ich etwas mehr Zeit zum Nachforschen habe (bald). Vielen Dank für Ihre bisherigen Vorschläge.
Nein, MOSI und SCLK sind nicht "schwimmend", sie sind "nicht abgeschlossen". MISO ist jedoch schwebend, bis das Ziel entscheidet, dass es aktiviert wurde und reagieren sollte. Was Sie auf MISO sehen, ist lediglich die Kopplung der Uhr oder MOSI mit dem schwebenden Eingang. Das unförmige MOSI-Signal sieht aus wie ein Analog- oder Ladeproblem; Der Programmierer kann einen Widerstand zur Pegelwandlung verwenden und der falsche Wert ist möglicherweise installiert, außerdem scheint sich ein Kondensator irgendwie als Last eingeschlichen zu haben. Die Lektion ist wirklich, nicht undokumentierte Artikel aus zweifelhaften Quellen zu kaufen .
@ChrisStratton fairer Punkt, obwohl der Preis es zu einem vernünftigen Versuch macht. Es stellte sich heraus, dass ich es einige Monate später zum Laufen brachte, indem ich die 2011-Firmware von fischl.de/usbasp installierte, und seitdem funktioniert es einwandfrei.

Antworten (2)

Ich habe mit einem ähnlichen Problem an meinen Haaren gezogen, und da mir Ihre Informationen beim Einstieg geholfen haben, dachte ich, ich würde mein Ergebnis teilen und hoffen, dass es Ihnen helfen kann. Zunächst einmal verwende ich ein USBASP, das wie Ihres aussieht .

Ich hatte Erfolg mit attiny13 und 45. Ich hatte keine Probleme mit dem attiny13, aber das attiny45, das ich bekam, war standardmäßig auf die Verwendung einer externen Uhr eingestellt. Das heißt, Sie müssen einen Quarz verwenden (ich habe erfolgreich mit 8MHz und 16MHz getestet), um zuerst mit dem Chip zu sprechen. Sobald Sie kommunizieren können, können Sie die Sicherungen so einstellen, dass sie die interne Uhr verwenden. Sobald Sie dies getan haben, wird Ihr Kristall nicht mehr benötigt.

Abgesehen davon blieb mein attiny85 stumm, obwohl ich 8-, 16- und 20-MHz-Quarze getestet und genau die gleiche Verkabelung verwendet hatte.

Wie Sie habe ich etwas Müll auf MISO bemerkt. In meinem Screenshot habe ich die gleichen Farben wie du verwendet. Attiny85 antwortet avrdudeWie Sie sehen können, bekomme ich zunächst Müll auf MISO, aber nach einem Reset und einer kurzen Verzögerung (~110µs) scheint MISO aufzuwachen und sich selbst zu verhalten.

Als Referenz lautet der Befehl, den ich zum Testen verwendet habe:

avrdude -c usbasp -p t85 -B4

Das -B4ist wichtig und ich habe erfolgreich zwischen -B4 und -B20 getestet. Es verlangsamt die Uhr und -B4 war das Minimum für mich, damit es funktioniert. Ich hatte aber Chips, die NICHT mit -B4 geantwortet haben. Um konservativ zu sein, habe ich mit -B16 begonnen.

Ein weiterer interessanter Punkt im Vergleich zu Ihren Screenshots ist, dass meine Reset-Leitung immer LOW ist und kurz auf UP geht. Das scheint bei dir umgekehrt zu sein. Ich habe nicht überprüft, ob dies ein normales Verhalten für das von Ihnen verwendete Attiny84 ist.

Ich hatte das gleiche Problem mit meinem Attiny 25. Als ich -B 4 hinzufügte, stellte mein usbasp eine Uhr auf eine niedrigere Frequenz ein. Sieht so aus, als ob der SCK bis 750000 Hz eingestellt werden kann und der Chip erst ab 187500 Hz und langsamer arbeitet. Mein Chip wird sogar bei einer SCK-Frequenz von 1000 Hz erkannt. Da ich .bat-Dateien verwende, um meine Chips zu programmieren. Ich füge einfach ein -B4 hinzu, um die Uhr zu senken und mich an die Arbeit zu machen. Danke, dass du mir den Befehl gezeigt hast.

Dies beantwortet nicht wirklich die Situation der Frage auf dieser Seite, die meldet, dass die Einstellung -B keine Wirkung hat. Die abgebildete Uhr in der Frage ist ziemlich vernünftig; etwas anderes ist wirklich. Der eigentliche Grund für die Verwendung langsamer Takte mit AVR ISP ist, dass, wenn die Taktteilungssicherung des Ziels versehentlich programmiert wurde, der ISP-Takt unter dem Takt des Ziels liegen muss, der ihn abtastet .