Forum: Mikrocontroller und Digitale Elektronik USBASP mit avrdude immer resetten?


von Andreas B. (bitverdreher)


Lesenswert?

Ich kann mit meinem USBASP und avrdude nur 1x programmieren. Danach 
meldet er:
avrdude: error: program enable: target doesn't answer. 1

Resette ich den USBASP (direkter Reset auf dem USBASP uC mit 
aufgelöteten Taster), dann geht es wieder (1x). Ein usbreset 16C0:05DC 
muß natürlich folgen. Die Zielschaltung braucht dazu nicht resettet zu 
werden.

Mir ist das früher nie aufgefallen. Ist das ein normales Verhalten? Kann 
man der USBASP SW mäßig resetten?

Beim USBASP verhalten sich der China clone und der originale Fischl 
USBASP gleich. FW ist 2011-05-28 (für den China clone leicht 
modifiziert)
avrdude ist Version 6.3-20171130 unter Debian 11.

Edit: Jetzt wird es lustig: ruft man avrdude mit B -20 auf, dann 
funktioniert es mehrmals ohne Reset (natürlich entsprechend langsam). Es 
scheint, daß die Fischl FW da etwas buggy ist oder gibt es da einen 
Trick?

: Bearbeitet durch User
von Karl M. (Gast)


Lesenswert?

Guten Morgen,

da du keine Antworten erhältst, sollte dich nachdenklich stimmen.

keiner von uns hat so etwas wirres bisher gelesen.

Und ja je nach AVR µC Clock, muss man die Schreibgeschwindigkeit mit -B 
<µs> anpassen!

Wie schnell es maximal sein darf, steht im Datenblatt.

Vielleicht ein Tipp, da keiner deinen Testaufbau kennt:
die ISP Leitungslängen sind begrenzt, aus Erfahrung muss man bei < 20 cm 
bleiben.

Andreas B. schrieb:
> Edit: Jetzt wird es lustig: ruft man avrdude mit B -20 auf, dann
> funktioniert es mehrmals ohne Reset (natürlich entsprechend langsam). Es
> scheint, daß die Fischl FW da etwas buggy ist oder gibt es da einen
> Trick?

von Andreas B. (bitverdreher)


Lesenswert?

Nochmal: Beim erstmaligen programmieren (oder irgendein anderer lesender 
Zugriff auf den Tiny) geht alles mit max. Geschwindigkeit ohne Änderung 
des Testaufbaus.
Dann muß der USBASP resettet werden um wieder mit voller Geschwindigkeit 
laufen zu können.
Das mit den B -20 ist nur eine Krücke. Der Tiny841 läuft mit 8MHz.

von Karl M. (Gast)


Lesenswert?

Andreas B. schrieb:
> Nochmal: Beim erstmaligen programmieren (oder irgendein anderer
> lesender Zugriff auf den Tiny) geht alles mit max. Geschwindigkeit ohne
> Änderung des Testaufbaus.
> Dann muß der USBASP resettet werden um wieder mit voller Geschwindigkeit
> laufen zu können.
> Das mit den B -20 ist nur eine Krücke. Der Tiny841 läuft mit 8MHz.

Guten Morgen, ja das kann natürlich sein, dass das bei dir so ist. Aber 
keiner von uns sieht dein Testaufbau, keiner von uns weiß, was du da 
genau machst!
Das heißt:wie lange deine Kabel sind, und so weiter.
Aber das schrieb ich ja schon mal, du musst alles offenlegen, damit wir 
die Chance erhalten selbst diese Erfahrung machen zu können.

Der Parameter/Option -B 20 ist keine Gurke! Man braucht diesen in 
einigen Fällen.

Viel Erfolg auf deinem Weg.

von Andreas B. (bitverdreher)


Lesenswert?

Karl M. schrieb:
> Der Parameter/Option -B 20 ist keine Gurke! Man braucht diesen in
> einigen Fällen.

Ja, das weiß ich, aber eben nicht bei einem Tiny mit 8MHz.

Der Testaufbau ist im übrigen uninteressant (20cm Kabel auf Steckbrett 
falls es Dich interessiert). Es ist absolut reproduzierbares Verhalten.
Reset USBASP: geht mit fullspeed.
USBASP einmal gelaufen: geht nur mit -B 20.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Karl M. schrieb:
> da du keine Antworten erhältst, sollte dich nachdenklich stimmen.

Logisch, nachts um 5:00 schlafen die meisten noch, und danach machen sie 
sich erstmal Frisch und auf den Weg zur Arbeit.

Für mich klingt das Problem nach einem Bug in der Firmware. Meine USBASP 
Sticks kann ich mehrmals nacheinander nutzen. Ich habe sie immer mit der 
vorinstallierten Firmware benutzt.

von Andreas B. (bitverdreher)


Lesenswert?

Stefan ⛄ F. schrieb:
> Für mich klingt das Problem nach einem Bug in der Firmware. Meine USBASP
> Sticks kann ich mehrmals nacheinander nutzen. Ich habe sie immer mit der
> vorinstallierten Firmware benutz

Für mich auch. Jetzt wäre natürlich interessant zu wissen, welche FW da 
installiert ist.
Notfalls mache ich mich mal dran, die FW zu durchforsten.

von Stefan F. (Gast)


Lesenswert?

Andreas B. schrieb:
> Jetzt wäre natürlich interessant zu wissen, welche FW da
> installiert ist.

Ich kann Dir dazu nur sagen, dass meine Firmware den -B Parameter nicht 
unterstützt (erzeugt Warnungen) und auch keinen Jumper für die 
Geschwindigkeit hat. Sie versucht es zuerst "schnell" und wechselt dann 
ggf. automatisch zu "langsam".

Wo man diese Version downloaden kann, weiß ich nicht. Auf der Seite von 
Herrn Fischl jedenfalls nicht.

von Axel S. (a-za-z0-9)


Lesenswert?

Andreas B. schrieb:
> Karl M. schrieb:
>> Der Parameter/Option -B 20 ist keine Gurke! Man braucht diesen in
>> einigen Fällen.
>
> Ja, das weiß ich, aber eben nicht bei einem Tiny mit 8MHz.
>
> Der Testaufbau ist im übrigen uninteressant (20cm Kabel auf Steckbrett
> falls es Dich interessiert). Es ist absolut reproduzierbares Verhalten.
> Reset USBASP: geht mit fullspeed.
> USBASP einmal gelaufen: geht nur mit -B 20.

Klingt für mich nicht nach einem Problem mit usbasp. Die Fehlermeldung 
sagt klar, daß die Kommunikation mit dem Target falsch läuft.

Mir sind da auch noch zu viele Fragen offen:

1. ist da ein Programm auf dem Target? Stellt das vielleicht am Takt 
rum? Mit welchem Takt läuft der Tiny wirklich?

2. Verbindung zum Target klappt ja wohl mit -B 20 (entsprechend 
ISP-Frequenz <= 50kHz). Klappt es auch für andere Frequenzen, 
insbesondere für höhere?

Meine usbasp (ein Eigenbau, zwei Typen Chinaböller) zeigen jedenfalls 
kein derartiges Verhalten. Ich habe jeweils die letzte Fischl-Firmware 
(2011-05-28) mit dem Patch für PDI 
(https://szulat.blogspot.com/2012/08/atxmega-programmer-for-050.html) 
drauf.

: Bearbeitet durch User
von Andreas B. (bitverdreher)


Lesenswert?

Axel S. schrieb:
> 1. ist da ein Programm auf dem Target? Stellt das vielleicht am Takt
> rum? Mit welchem Takt läuft der Tiny wirklich?

Schrieb ich oben: 8 MHz, Programm ändert den Takt nicht.

> 2. Verbindung zum Taget klappt mit -B 20 (entsprechend ISP-Frequenz <=
> 50kHz). Klappt es auch für andere Frequenzen, insbesondere für höhere?

nein. -B 20 ist das Minimum.

Es scheint das Problem immer noch nicht verstanden zu werden:
Wenn ich den USBASP resette, kann ich mit vollen Takt so oft den 
gleichen Tiny flashen wie ich will (wenn ich nach jedem flashen den 
USBASP wieder resette)
-B 20 ist für 8MHz normalerweise nicht notwendig.

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

Kann mich an solche Effekte erinnern, als ich den µC des USBASP, mit 
3,3V betrieben habe und das Target mit 5V. Dann hat selbiges zeitweise 
den Programmer mit der MISO-Leitung über die Schutzdioden "hochgezogen". 
In diesem Falle hat ein 5k-Widerstand in der MISO-Leitung geholfen. Der 
original-USBASP wird aber, so ich mich erinnern kann, mit 5V betrieben, 
mit Widerständen und Zenerdioden an den USB-Leitungen, da würde das 
Problem höchstens andersherum bestehen, das ein 3,3V-Target über die 
MOSI und SCK-Leitung hochgezogen werden würde. Wobei auch hier wieder 
Strombegrenzungswiderstände in diesen Leitungen helfen würden.

von Andreas B. (bitverdreher)


Angehängte Dateien:

Lesenswert?

Ingo W. schrieb:
> Kann mich an solche Effekte erinnern, als ich den µC des USBASP, mit
> 3,3V betrieben habe und das Target mit 5V.

leider ist es das nicht. Der Tiny wird mit 5V aus dem USBASP versorgt. 
Auch mit externer Versorgung habe ich den gleichen Effekt.
Ich habe jetzt mal alle Masseleitungen abgezogen, die da zu Testzwecken 
noch dranhingen (Oszi, Labornetzteil): Kein Unterschied.

Für die ungläubigen: ;-)
Anbei mal ein Bild. Die gelbe Leitung hinten ist frei.
Fuses: E:F5 (both BOD active), H:DC (BOD 5V), L:E2 (set to 8MHz)

Wenn ich mehrere Male flashen will, habe ich 2 Möglichkeiten:

a) Reset am UC des USBASP machen und > usbreset 16C0:05DC auf die 
Konsole schicken, um den USB port wieder zu reaktivieren

b) mit Parameter -B 20 flashen

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Andreas B. schrieb:
> b) mit Parameter -B 20 flashen

Hast du dir mal mit einem Oszi den Takt angesehen? Vielleicht ist ja die 
Taktumschalterei irgendwie in der Firmware falsch gezimmert?

Wenn du noch einen anderen ISP-Programmierer hast, kannst du dir 
natürlich auch jederzeit eine neue Firmware in das USBasp flashen.

von Andreas B. (bitverdreher)


Angehängte Dateien:

Lesenswert?

Hier ist übrigens der Reset taster.

von Stefan F. (Gast)


Lesenswert?

Andreas B. schrieb:
> Für die ungläubigen: ;-)
> Anbei mal ein Bild

Fehlt da etwa der (immer notwendige) Abblock-Kondensator an VCC+GND?

von Andreas B. (bitverdreher)


Lesenswert?

Jörg W. schrieb:
> Hast du dir mal mit einem Oszi den Takt angesehen? Vielleicht ist ja die
> Taktumschalterei irgendwie in der Firmware falsch gezimmert?

Ich schaue mir das morgen mal an. (jetzt ist es hier kurz vor 
Mitternacht)
Ich werde dann mal den Flashvorgang vor und nach dem Reset vergleichen.

>
> Wenn du noch einen anderen ISP-Programmierer hast, kannst du dir
> natürlich auch jederzeit eine neue Firmware in das USBasp flashen.

Von den Alu Dingern habe ich einige. Überall mit der modifizierten FW 
vom 2011-05-28 (also offiziell die aktuellste) drauf. Wenn Du noch eine 
andere hast...
Der Mod betrifft nur die Initialisierung des DDRD nach:
http://irq5.io/2017/07/25/making-usbasp-chinese-clones-usable/
weil bei den China ISP PD3 und PB0 verbunden sind und dann gegeneinander 
treiben.
Den originalen Fischl und einen anderen China USBASP habe ich auch. 
Überall das Gleiche (mit der gleichen FW).

Vielleicht sollte ich auch mal einen anderen Tiny als den 841 versuchen. 
Irgendwie interessiert mich schon warum das so ist.

von Andreas B. (bitverdreher)


Lesenswert?

Stefan ⛄ F. schrieb:
> Fehlt da etwa der (immer notwendige) Abblock-Kondensator an VCC+GND?

Nö, der ist direkt am Tiny angelötet. ;-) Sieht man etwas undeutlich 
neben den blauen Kabel. Vcc ist Pin 1 und GND ist Pin 14

von Andreas B. (bitverdreher)


Angehängte Dateien:

Lesenswert?

Jetzt folgen noch ein paar interessante Resultate:

a) am Oszi sehe ich am Clock keinen Unterschied. Das ist aber auch 
schwer zu erkennen, weil ich nur an den Anfang (Reset fallend) triggern 
kann. Das, was ich bis dahin sehe, ist vom Takt her gleich.

b) habe ich als Target einen anderen ATMega88 (der mit Quarz 12 MHz 
läuft) dann zeigt sich dieser Effekt nicht. Ich kann immer mit vollen 
Takt programmieren.

c) den Tiny841 (RC 8MHz) habe ich mal direkt ohne Steckbrett als Target 
an den Programmer gehängt. Er zeigt immer noch das gleiche Verhalten: 
Das erste Mal full speed, dann nur noch mit -B 20.

Entweder sind die 8MHz so gerade an der Grenze, was aber dieses 
reproduzierbare Verhalten nicht erklärt.
Oder aber, der Tiny841 verhält sich etwas anders bei Programmieren (ist 
ja eine neuere Generation von AVR). Das erscheint mir im Moment etwas 
wahrscheinlicher. Immerhin ist der neuer (2014-2015) als die Fischl FW 
(2011). Dazu müßte man mal das DB etwas erforschen.
Alles in allem: es scheint eine zeitfressende Geschichte zu werden. Mal 
schauen, wann ich die Zeit dazu finde.
Im Moment nehme ich das Verhalten einfach mal so hin.

von Andreas B. (bitverdreher)


Lesenswert?

So, nochmal auf GIT gesucht und Problem gelöst.
Diese FW läuft super ohne Änderung (er kennt die China ISP wohl schon):
https://github.com/bperrybap/usbasp/tree/1.06-alpha
Da wurde einiges überarbeitet.

von Stefan F. (Gast)


Lesenswert?

Andreas B. schrieb:
> habe ich als Target einen anderen ATMega88 ...
> dann zeigt sich dieser Effekt nicht.
> der Tiny841 ... zeigt immer noch das gleiche Verhalten

Dann könnte es sein, dass meine Sticks vom gleichen Problem betroffen 
sind. Ich habe bisher keine Tiny841 programmiert. Meine vorherige 
Aussage, dass ich das Problem noch nicht hatte gilt nur für ATtiny13A, 
ATtiny45, ATtiny2313A und Atmega328P.

> Oder aber, der Tiny841 verhält sich etwas anders bei Programmieren

Ja, scheint so

von Andreas B. (bitverdreher)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ich habe bisher keine Tiny841 programmiert.

Wenn es soweit ist, weißt Du ja wo Du die FW dafür herbekommst. ;-)

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.