Forum: Mikrocontroller und Digitale Elektronik USBasp - Timer expired


von Dietmar P. (dietmar2)


Lesenswert?

Hallo,

habe nun div. Fehler mit dem USBasp hinter mir.
Die Fuses sind auch auf c9 bzw. ef gesetzt.

Wenn ich nun den Adapter mit Avrdude anwende:

sudo avrdude -V -F -P USB -c USBasp -p m32 -U flash:w:./bin/main.hex

erhalte ich die Meldung:

avrdude: error: usbasp_transmit: error sending control message: Timer 
expired
make: *** [flash] Fehler 1

Was bedeutet hier die Timerüberschreitung, oder der -Ablauf.

Wenn ich den Atmega8 flashe erscheint am Ende allerdings:

avrdude: verification error, first mismatch at byte 0x008b
0xef != 0xe0
avrdude: verification error; content mismatch

Hängen die beiden Fehler zusammen? Schwingt vielleicht der Quartz nicht? 
Wie kann ich das überprüfen?

Danke für Eure geduldige Hilfe.

von Bernhard M. (boregard)


Lesenswert?

Aus den Fehlermeldungen mit dem USBasp würde ich mal darauf schliessen, 
daß der Bittakt der ISP Programmierung zu hoch ist. Mit welchem Takt 
läuft der zu programmierende Controller?

Versuche mal, mit '-B' Parameter den Takt zu erniedrigen, also etwa:
 sudo avrdude -V -F -P USB -c USBasp -B 10 -p m32 -U 
flash:w:./bin/main.hex

Vorausgesetzt, Du hat die neue USBasp Firmware vom 28.2.2009 und neuen 
avrdude 5.10, die das unterstützen.

Falls du noch alte Versionen hast, dann setze mal den Jumper für die 
niedrigere Geschwindigkeit.

P.S.: Wenn Du das "sudo" wegkriegen willst, schau doch mal folgendes an:
Beitrag "Re: USBASP zum laufen bringen"

von Dietmar P. (dietmar2)


Lesenswert?

Hallo Bernhard,

vorab danke für den Tipp mit dem "sudo".

Leider hat sich das Problem mit -B 10 nicht gelöst:

avrdude -V -F -P USB -c USBasp -B 10 -p m32 -U flash:w:./bin/main.hex
avrdude: set SCK frequency to 93.75 kHz
avrdude: error: usbasp_transmit: error sending control message: Timer 
expired
make: *** [flash] Fehler 1

Habe den Takt noch weiter runtergesetzt un d auch die Variante mit JP 2
probiert, das Ergebnis ist immer die gleiche Fehlermeldung.
Kann das doch mit der Fehlermeldung beim flashen

avrdude: verification error, first mismatch at byte 0x008b
0xef != 0xe0
avrdude: verification error; content mismatch

zusammenhängen?
Kann der Atmega8 einen Fehler haben, von wegen "verification error"?
Könnte vielleicht auch mein Quartz nicht anschwingen? Kann ich das mit 
einem alten Oszi prüfen?

von Bernhard M. (boregard)


Lesenswert?

Mit welchem Takt läuft denn Dein zu programmierender Controller?

Ich hatte ähnliche Effekte auch schon, wenn der Takt viel zu niedrig 
war, dann allerdings hauptsächlich beim EEPROM programmieren. Wobei Dein 
erster Fehler mit dem Timeout auch auftreten kann, wenn Du avrdude 5.8 
hast und nicht 5.10...

Hast Du schon mal alle möglichen Takte durchprobiert?
Also -B .5
-B 1
-B 2
-B 5
-B 10
-B 31
-B 62
-B 125
-B 250
-B 500
-B 1000
-B 2000
(die letzten 3 sind nicht unbedingt sinnvoll....)

von Bernhard M. (boregard)


Lesenswert?

Dietmar P. schrieb:
> Kann der Atmega8 einen Fehler haben, von wegen "verification error"?
> Könnte vielleicht auch mein Quartz nicht anschwingen? Kann ich das mit
> einem alten Oszi prüfen?

Dann geht doch gar nichts, wenn der nicht anschwingt, dann wird der 
USBasp doch von avrdude gar nicht gefunden...

von Dietmar P. (dietmar2)


Lesenswert?

Programmieren will ich einen Atmega32. Bisher habe ich ihn über die 
Parallelschnittstelle geflasht. Ich habe keinen externen Quartz, also 
müssten das intern 1 MHz sein.

Ich habe alle Taktvorgaben B .5 bis 500 ausprobiert, negativ.

Was ich noch festgestellt habe ist, dass der Fehler mit dem Timer auch 
dann kommt, wenn an der ISP-Schnittstelle garnichts angeschlossen ist.
Weiterhin, wenn ich den Adapter nicht am USB vom PC abziehen, sondern 
zweimal hintereinander make flash mache, dann kommt noch zusätzlich die 
Meldung, dass er den USBasp nicht findet:

sudo avrdude -V -F -P USB -c USBasp -B 500 -p m32 -U 
flash:w:./bin/main.hex
avrdude: Warning: cannot query manufacturer for device: error sending 
control message: Timer expired
avrdude: error: could not find USB device "USBasp" with vid=0x16c0 
pid=0x5dc
make: *** [flash] Fehler 1

Noch ein Tipp?

von Dietmar P. (dietmar2)


Lesenswert?

Nachtrag:

Habe gerade gesehen, dass ich die Avrdude-Version 5.8.1 habe.
Wenn ich Avrdude aufrufe ist der Parameter - B und auch der USBasp 
vorhanden.

Muss ich dann trotzdem die 5.10 Version installieren?

von Bernhard M. (boregard)


Lesenswert?

Nicht unbedingt...

In der 5.10 ist noch ein timeout Fehler behoben...
In den den Versionen devor ist der USB-timeout fest. Allerdings dauert 
bei niedrigen Bit-Clocks (hohen -B Werten..) das Schreiben länger als 
der Timeout. In der 5.10 ist das behoben.
Bei Dir sollte das aber kein Problem machen, bei mir ist es erst bei -B 
500 bei einem ATmega 8 aufgetreten. Und so viel größer dürfte die Page 
beim Mega 32 auch nicht sein...

von Dietmar P. (dietmar2)


Lesenswert?

Schade,

habe keinen Erfolg, auch nicht nachdem ich die Version 5.10-1 
installiert e und damit den Atmega8 nochmals geflasht habe.

Ob mit oder ohne "Zielhardware" der Fehler bleibt gleich.

von Sven K. (svenk)


Lesenswert?

Wie sehen Deine letzen Zeilen von dmesg aus wenn Du den USB-Adapter 
abziehst und wieder ansteckst ?

Gruß Sven

P.S.: Bitte auch ein Bild vom Aufbau zeigen.

von Dietmar P. (dietmar2)


Angehängte Dateien:

Lesenswert?

In dmesg (/var/log) tut sich garnichts.

Die einzige Reaktion habe ich in /var/log/messages:

Einstecken:
... usb 2-7: new low speed USB device using ohci_hcd and address 10
... usb 2-7: configuration #1 chosen from 1 choice

Abziehen:
... usb 2-7: USB disconnect, address 10

Irgendwo ist da der Knuddel drin.

Bild 1 ist der USBasp-Adapter beim flashen (STK200, parport0)
Bild 2 im eigentlichen Adapter-Betrieb USB zu ISP

von Sven K. (svenk)


Angehängte Dateien:

Lesenswert?

Hmm,

ich habe mal im Anhang eine Ausgabe wie es unter Debian aussieht.
Mit lsusb versuche mal das Device genau so anzuzeigen. (siehe 
Screenshot)

Ich vermute das der AVR immer noch nicht gescheit läuft.

Gruß Sven

von Dietmar P. (dietmar2)


Lesenswert?

Stimmt, da fehlt offenbar noch was.

Bei mir bringt dmesg nur:

... usb 2-7: new low speed USB device using ohci_hcd and address 5
... usb 2-7: configuration #1 chosen from 1 choice

Die weiteren Angaben wie

... New USB Device found, idVendor ...  etc.

erscheinen nicht.
Der findet offenbar keinen Treiber dazu?
Ich das debianbasierte Ubuntu in der neuesten Version (Karmic).

Noch zwei Infos.
1. Windows
Habe mal den Versuch unter Windows gemacht und mit den Treiber von 
Fischl heruntergeladen und installiert. Windows hat dann den Adapter 
erkannt.
Also scheint der Teil USB zu Atmega doch iO zu sein.
2. flashen
Ich flashe ja über den Parallelport und das geht auch, bis auf den 
Fehler beim nochmaligen Lesen nach dem Schreiben.

avrdude: verification error, first mismatch at byte 0x008b
0xef != 0xe0
avrdude: verification error; content mismatch


Wo liegt denn da der Hund begraben?

Gruß
Dietmar

von Dietmar P. (dietmar2)


Lesenswert?

Nachtrag:

Ich habe die ID's gefunden und lsusb wie bei Dir aufgerufen und erhalte 
die gleichen Angaben.

Warum tut das dann nicht. Immer noch der Fehler:

avrdude: error: usbasp_transmit: error sending control message: Timer
expired

von Martin e. C. (eduardo)


Lesenswert?

Hallo

Dietmar P. schrieb:
> 1. Windows
> Habe mal den Versuch unter Windows gemacht und mit den Treiber von
> Fischl heruntergeladen und installiert. Windows hat dann den Adapter
> erkannt.
> Also scheint der Teil USB zu Atmega doch iO zu sein.

hast du über Windows geflash?

> 2. flashen
> Ich flashe ja über den Parallelport und das geht auch, bis auf den
> Fehler beim nochmaligen Lesen nach dem Schreiben.

was meinst du genau??

Windows --> über Parallelport geflash?

hast du:
Windows --> UBSasp geflash versucht?

von Martin e. C. (eduardo)


Lesenswert?

in deinem Bild: "cimg4063.jpg"
was ist das genau?
da gehst du von USBasp über 10 Poliges Kabel nach eine 25 poliger 
stecker (oder Buchse) oder sehe ich das Falsch? wo geht dann hin?

von Dietmar P. (dietmar2)


Angehängte Dateien:

Lesenswert?

Hallo Martin,

unter Windows habe ich nur den Treiber von Fischl installiert und der 
Adapter wird erkannt.
Geflasht habe ich ihn nicht, weil AVRStudio4 den Programmer STK200 nicht 
mehr kennt.

Das Bild 4043 zeigt den USB-Adapter über den 10-Pin (rechts) gehts zum 
Programmer STK200, ist ein Paralellport mit dem IC 74HC244. Der 
Programmer hat keine eigene Stromversorgung, deshalb muss der Adapter an 
USB anschlossen werden. Dazu werden die entsprechenden Jumper auf der 
Platine auf "Stromversorgung Zielhardware" und "flashen Firmware" setzt. 
Das scheint auch zu funktionieren.

Habe mir jetz mal avrdude 5.10 installiert und da sieht das Ganze dann 
aus wie in dem angehängten Bild.

Gruß
Dietmar

von Martin e. C. (eduardo)


Lesenswert?

Dietmar P. schrieb:
> unter Windows habe ich nur den Treiber von Fischl installiert und der
> Adapter wird erkannt.
> Geflasht habe ich ihn nicht

macht doch!
versuche unter Windows ein AVR "nur mit dem USBasp" zu flashen (um 
Fehler am USBasp auszuschliessen).

> Das Bild 4043 zeigt den USB-Adapter über den 10-Pin (rechts) gehts zum
> Programmer STK200, ist ein Paralellport mit dem IC 74HC244.

also Programmer zum Programmer, verstehe ich es richtig?

hmm...
funktioniert so was??

von Martin e. C. (eduardo)


Lesenswert?

Dietmar P. schrieb:
> Geflasht habe ich ihn nicht, weil AVRStudio4 den Programmer STK200 nicht
> mehr kennt.

was willst du genau machen?? du hast ein USBasp und damit willst du 
flaschen?
du hast ein USBasp und ein STK200 und willst der USBasp mit dem SKT200 
flaschen?
Sorry das kapiere ich nicht ganz! vielleicht habe was übersehen

von Dietmar P. (dietmar2)


Lesenswert?

Hallo Martin,

also,

ich habe mir den USBasp-Adapter nach Fischl/U.Radig gebaut.
Zum Flashen verbinde ich ihn mit dem Parallelport des PC (dieser ist der
STK200 - parport0) via ISP-Anschluss. Zusätzlich muss den Adapter für 
den Flashvorgang auch mit dem USB des PC verbinden, da der Parallelport 
ein IC, aber keine eigene Stromversorgung hat. Dies ist möglich, weil 
der entsprechende Jumper gesetzt ist.

Wenn das Ding funktioniert will ich damit per USB vom PC einen Atmega32 
in einer fertigen Anwendung per ISP flashen können, da immer weniger 
Laptops den Parallelport haben.
Diese Anwendung erfährt ab und zu Verbesserungen, deshalb will ich da 
per USB dran.

von Martin e. C. (eduardo)


Lesenswert?

Dietmar P. schrieb:
> ich habe mir den USBasp-Adapter nach Fischl/U.Radig gebaut.
> Zum Flashen verbinde ich ihn mit dem Parallelport des PC (dieser ist der
> STK200 - parport0).

das ist genau was ich nicht verstehe! wozu der SKT200?
wenn du den USBasp hast dann kannst du PC--> USB Kabel -->UBSasp --> 
Atmega32 (an ISP) flaschen!

von Sven K. (svenk)


Lesenswert?

Hallo Martin,

Dietmar hat mit dem STK200 Parallel Port Adatper den Mega8 des
USBasp erstmalig geflasht, damit dieser überhaupt am USB läuft.


@Dietmar:

Ich werde heute Abend noch mal meinen USBasp anschliessen und testen.
Ich habe zufällig noch einen Mega32 in einer Steuerung.

Gruß Sven

von Dietmar P. (dietmar2)


Lesenswert?

Hallo Sven,

danke für die Aufklärung meines Vorhabens an Martin und für den Versuch 
in meinem Sinne mit dem flashen das Atmega32.
Bitte schau Dir doch mal das Bild an in dem Beitrag weiter oben. Da 
scheint doch alles in Ordnung. Den Timerfehler bekomme ich ob ich am ISP 
etwas anschließe oder nicht.
Ich tippe auf einen Defekt im Atmega8? Debian erkennt ihn offenbar als 
USB und über den ISP kann ich ihn ja flashen.


Martin:
Genau das ist mein Vorgehen. Ich hatte den ersten ATmega8 auf dem 
Steckbrett geflasht und ihn dabei kaputt gemacht, deshalb jetzt auf dem 
Adapter in der beschriebenen Form.

von Dietmar P. (dietmar2)


Lesenswert?

Hallo Sven,

könntest Du bitte bei Deinem Versuch mir einen Auszug aus den 
/var/log/Messages schicken, damit ich sehe welches Device angezogen 
wird.

Bei mir zieht er keinen Treiber und kein Device an.

Dasnke Gruß
Dietmar

von Sven K. (svenk)


Angehängte Dateien:

Lesenswert?

Hallo Dietmar,

dieses Problem hat mich jetzt dazu veranlasst eine Linux LiveCD zu 
brennen.

1. Mein Adapter funktioniert unter Windows XP SP3 mit libusb 0.1.12.1
   und avrdude.

2. Versuch unter VMware 6.0.5 mit Debian erkennt den Adapter,
   kann aber nicht brennen oder lesen. avrdude startet
   und verliert aber dann die Verbindung. So ein Schei.....

3. LiveCD geladen und gebrannt.
   http://wiki.rcos.eu/index.php/RCOS-LiveCD

   Funktioniert bestens. Ergebnisse im Anhang.

Ich schlage also vor, das Du das mit der LiveCD ebenso versuchst.
Und benutze bitte mal genau die gleichen Kommandos.
Spielen kannst Du immer noch ;-)

Den USBasp Adapter habe ich vorher immer nativ unter Debian betrieben.
Der Versuch mit VMware war ein schneller Versuch. Es scheint
da Probleme mit dem Timing zu geben.


Gruß Sven

von Dietmar P. (dietmar2)


Lesenswert?

Hallo Sven,

zuerst einmal wieder danke für Deine Mühe. Leider habe ich keinen 
Erfolg, aber der Reihe nach.

Mit rcos erzählt mir dmesg schon mehr und das siehst auch aus wie bei 
Dir:

usb 1-5: new low speed USB device using ohci_hcd and address 5
usb 1-5: configuration #1 chosen from 1 choise
usb 1-5: New USB device found, idVendor=16c0, idProduct=05dc
usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-5: Product: USBasp
usb 1-5: Manufacturer: www.fischl.de

Aber beim Aufruf von avrdude erhalte wieder sofort den gleichen 
Timer-Fehler wie bisher. Der zweite Aufruf von avrdude bringt auch den 
gleichen Fehler wie bei Dir. Offenbar verliert er das Device. Wenn es 
wenigstens beim ersten Mal gehen würde.

Zusammenfassend ziehe ich daraus den Schluss, dass entweder doch der 
Atmega8 einen Schuss hat, oder die Schaltung. Ich werde mir einen neuen 
Mega8 besorgen und flashen (sep. auf dem Steckbrett). Geht es dann auch 
nicht, werde ich eine neue Platine aufbauen, wollte ursprünglich sowieso 
noch einen zweiten Adapter für meinen Sohn aufbauen.
Oder kennst Du einen besseren Adapter, so dass sich der Aufwand nicht 
lohnt?

Gruß
Dietmar

von Sven K. (svenk)


Lesenswert?

Hallo Dietmar,

der zweite Aufruf in der Log Datei heisst nur:

Es ist kein AVR zum Programmieren angeschlossen !

> avrdude: error: programm 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 done.  Thank you.

d.h. dies ist ok und bedeutet der Programmieradapter funktioniert.

Es gibt ja noch einen Originalen AVR ISP MK2.
Der funktioniert auch bei niedrigen Programmierspannungen einwandfrei.
Ich habe mir diesen gekauft, weil mir dieses "gebastel" nur unnötig
Nerven geraubt hat.

Grundsätzlich kann ich aber bestätigen das dieser usbasp läuft,
ich habe damit schon einige AVRs programmiert.

Gruß Sven

von Sven K. (svenk)


Lesenswert?

Hallo Dietmar,

Zu den Fehlern bei Dir:

Es muss dann am AVR oder in der Schaltung etwas nicht stimmen,
entweder er ist nicht richtig programmiert oder defekt.
Bist Du sicher das Du die Betriebsspannung mit
keramischen Kondensatoren ordentlich versorgt hast ?
Vielleicht Kontaktprobleme ?


Gruß Sven

von Sven K. (svenk)


Lesenswert?

Hallo Dietmar,

mir ist noch etwas im Bild 1 aufgefallen:

Du benutzt scheinbar ein Verlängerungskabel vom LPT Port.

Bitte nehme mal die kürzeste Verbindung,
die irgendwie möglich ist und
programmiere den usbasp noch mal neu.
(kein Verlängerungskabel LPT)

Dies könnte durchaus das Problem sein.

Gruß Sven

von Dietmar P. (dietmar2)


Lesenswert?

Hallo Sven,

zuerst die gute Nachricht: das M...ding käuft endlich.

Die Aktionen:

- Flashvorgang auf dem Laptop, ohne Parallelkabelverlängerung
- Reduzierung der sck-Geschwindigkeit, d.h. alle drei Jumper des USBasp-
  Adapters waren setzt (JP1 auch, weil mein Programmer keine eigene
  Spannungsversorgung hat.

Dann war auch der "verification error ..." beim flashen weg und fuses 
auch nochmals neu gesetzt.

Danach konnte ich den Atmega169 (Butterfly) mit dem USBasp flashen.
Beim Atmega32 (kein externer Quartz) musste ich sogar runter bis auf 
187,5 kHz (avrdude -B 5 - hier nochmals danke an Bernhard).

Endlich!!!

Übrigens ich kann auch den Flashvorgang mehrmals hintereinander laufen 
lassen, ohne dass den USBasp die Verbindung verliert.

Gruß
Dietmar

von Sven K. (svenk)


Lesenswert?

Hallo Dietmar,

das ist doch sehr gut.
Es freut mich, das wir mit der Suche erfolgreich waren.

Viel Spass beim Programmieren ;-)

Gruß Sven

P.S.: Die Begründung liegt also in dem nicht sauber programmierten AVR.
Das zu lange Kabel am Parallelport kann dazu führen das die Flanken
am Ende so verschliffen sind, das dann die Bits kippen und
der Flash im AVR nicht richtig programmiert wurde ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.