Forum: Mikrocontroller und Digitale Elektronik Attiny85 neu verfust?


von Andreas B. (bitverdreher)


Lesenswert?

Hi,
vor einiger Zeit hatte ich in der Bucht einige Tiny85 erstanden. Leider 
ließen sie sich nicht programmieren.
Also flugs den Fuse resetter aus der Schublade geholt (nach 
http://www.simpleavr.com/avr/hvsp-fuse-resetter) und versucht die Tinys 
wieder zu beleben.
Leider erfolglos. Die Fuses sind 52 5E FE (L, H, E) und lassen sich mit 
den Fuse resetter nicht ändern. (RSTDISBL und SELFPRGEN sind gesetzt)
Der Fuse resetter hat bis jetzt immer funktioniert. Allerdings hatte ich 
mit SELFPRGEN bis jetzt noch nicht herumgespielt.
Gibt es da einen Trick oder wurde mir da schlicht Mist verkauft? An den 
Chips ist nichts Auffällliges zu entdecken. Date code ist 1715.

von M. K. (sylaina)


Lesenswert?

Und du bist sicher, dass dein HV-Programmer wirklich einwandfrei geht?

von Horst (Gast)


Lesenswert?

Andreas B. schrieb:
> Gibt es da einen Trick

Daran, den ISP-Takt zu senken, hast Du aber gedacht?

von Stefan F. (Gast)


Lesenswert?

Manchmal hilft es, den Reset-Pin fest mit GND zu verbinden, anstatt mit 
dem Ausgang des Programmieradapters.

von Andreas B. (bitverdreher)


Lesenswert?

M. K. schrieb:
> Und du bist sicher, dass dein HV-Programmer wirklich einwandfrei geht?

Ja, nochmal mit einem anderen Tiny aus einer anderen Charge getestet, 
bei dem ich die Fuses geändert habe.

Horst schrieb:
> Daran, den ISP-Takt zu senken, hast Du aber gedacht?

Das war das erste bevor ich den Resetter aus dem Schrank geholt habe. 
(bis -B 100)

Stefan U. schrieb:
> Manchmal hilft es, den Reset-Pin fest mit GND zu verbinden, anstatt mit
> dem Ausgang des Programmieradapters.

Der Adapter hat noch nie Probleme gehabt. Ich habe auch noch einen 
anderen ausgetestet (alles USBASP). Der Fuse resetter hat ein Display 
mit dem ich die aktuellen Fuses überprüfen kann. Das ist also nicht vom 
Programmieradapter abhängig (Der hier sowieso nicht mehr funktioniert, 
da RSTDISBL gesetzt ist).

von Stefan F. (Gast)


Lesenswert?

> Der Adapter hat noch nie Probleme gehabt.

Ist schon klar, aber wenn der µC nicht wirklich neu ist ist könnte es 
sein, dass er ein Programm ausführt welches so gründlich abschmiert, 
dass danach die ISP Schnittstelle blockiert. Mir ist das schon einmal 
passiert.

Durch das "festhalten" der Reset Leitung verhindert man, dass das 
Programm startet.

von Andreas B. (bitverdreher)


Lesenswert?

Stefan U. schrieb:
>> Der Adapter hat noch nie Probleme gehabt.
>
> Ist schon klar, aber wenn der µC nicht wirklich neu ist ist könnte es
> sein, dass er ein Programm ausführt welches so gründlich abschmiert,
> dass danach die ISP Schnittstelle blockiert. Mir ist das schon einmal
> passiert.
>
> Durch das "festhalten" der Reset Leitung verhindert man, dass das
> Programm startet.

Die uC waren alle neu! Frisch aus dem Reel. (5x)
Und ich rede hier auch von HV Programmierung des Fuse resetters, nicht 
mehr von der normalen ISP Schnittstelle. Da liegt Reset auf +12V, nicht 
auf GND.

von M. K. (sylaina)


Lesenswert?

Andreas B. schrieb:
> Ja, nochmal mit einem anderen Tiny aus einer anderen Charge getestet,
> bei dem ich die Fuses geändert habe.

War bei dem auch der Reset disable? Ansonsten würde ich die Charge 
einfach reklamieren oder ist das nicht möglich?

von Einer K. (Gast)


Lesenswert?

Andreas B. schrieb:
> (RSTDISBL und SELFPRGEN sind gesetzt)
Werkseinstellung für die Digispark.
Evtl welche für die Serie bekommen....

Andreas B. schrieb:
> Der Fuse resetter hat bis jetzt immer funktioniert.
Bei mir auch.
Wüste auch nicht, was dem im Wege stehen könnte.

Würde mal sage: Ein Garantiefall.


// ---

Stefan U. schrieb:
> Durch das "festhalten" der Reset Leitung verhindert man, dass das
> Programm startet.
Wie gesagt, macht beim HV Programmer keinen Sinn, da 12V auf den Reset 
gegeben wird.
Und wenn, wie hier RSTDISBL aktiviert ist, dann gibts keinen Reset Pin 
mehr.
Dann ist dein Plan wirkungslos.

von Peter D. (peda)


Lesenswert?

Andreas B. schrieb:
> Horst schrieb:
>> Daran, den ISP-Takt zu senken, hast Du aber gedacht?
>
> Das war das erste bevor ich den Resetter aus dem Schrank geholt habe.
> (bis -B 100)

Im HVSP ist der interne Takt egal.
In HVSP muß die Taktperiode <220ns sein, d.h. alles unter 4MHz ist o.k.

Es kann sein, daß da eine gemeine Firmware eingebrannt wurde, d.h. 
minimale Startupzeit und PB5 auf low.
In dem Fall VCC zuerst nur auf 1,0V setzen:
"1. Set Prog_enable pins listed in Table 20-14 to “000”, RESET pin and 
VCC to 0V.
2. Apply 4.5 - 5.5V between VCC and GND.
3. Monitor VCC, and as soon as VCC reaches 0.9 - 1.1V, apply 11.5 - 
12.5V to RESET.
4. Keep the Prog_enable pins unchanged for at least 10 μs after the 
High-voltage has been applied to ensure the Prog_enable Signature has 
been latched.
5. Release the Prog_enable[2] pin to avoid drive contention on the 
Prog_enable[2]/SDO pin.
6. Wait until VCC actually reaches 4.5 - 5.5V before giving any serial 
instructions on SDI/SII."

von Andreas B. (bitverdreher)


Lesenswert?

M. K. schrieb:
> War bei dem auch der Reset disable?

Darum geht es ja bei dem Fuse resetter. Der kann den Reset disable 
noralwerweise per HV programming zurücksetzen aber eben bei diesen 
nicht. Wie schon erwähnt: RSTDISBL und SELFPRGEN sind gesetzt.

> Ansonsten würde ich die Charge
> einfach reklamieren oder ist das nicht möglich?

Leider zu spät. Die fliegen schon 3 Monate bei mir rum.

von M. K. (sylaina)


Lesenswert?

Andreas B. schrieb:
> Leider zu spät. Die fliegen schon 3 Monate bei mir rum.

Probiere mal den Trick, den Peter genannt hat. Ich drücke dir die Daumen 
dass das klappt ;)

von S. Landolt (Gast)


Lesenswert?

Leider kann ich nicht weiterhelfen, nur eine Information geben:

Ein ATtiny85-20PU von 1706, auf obige Fuse-bytes (52 5E FE) gesetzt, 
wird von meinem Selbstbau-HV-Programmiergerät ganz problemlos auf 62 DF 
FE gesetzt.
(Wollte ich ihm auch geraten haben...)

von S. Landolt (Gast)


Lesenswert?

> ... gemeine Firmware ...

Klingt pausibel; andererseits beträgt bei L=52 die Start-up Time 4 ms, 
sollte das nicht auch für dieses simpleavr-Teil reichen?

von Andreas B. (bitverdreher)


Angehängte Dateien:

Lesenswert?

Das Problem an Peters Lösung (alternative 2 im DB) ist, daß mal auf die 
0.9-1V V warten soll. Dazu müßte man:
1. Eine ADC am tiny2313 haben
2. Den Tiny2313 umprogrammieren. Das ist dummerweise etwas schwierig, 
weil ich das ganze Dingens auf ein Lochraster gelötet habe und oben 
drüber noch das Display aufgelötet ist.

Daher habe ich mich jetzt mal dran gemacht, mit dem Oszi zu schauen, was 
der Fuse resetter so treibt.
Gelb ist Reset (12V) und blau ist Vcc. Man sieht daß die Spanung sehr 
schnell ansteigt, so daẞ Algo 2 eigentlich nicht notwendig sein sollte.
Das einzige was nicht gut aussieht, ist der Spannungsverlauf davor. Die 
gleiche Leitung wird ja vorher für die Displayansteuerung verwendet. Da 
sollte evt. noch eine Pause vorher reingemacht werden bevor man mit dem 
Programmieren anfängt.
Mal in die SW geschaut und siehe da: In Zeile 456 war doch tatsächlich 
mal eine Pause drin. Warum die auskommentiert wurde, weiß der Geier. 
50ms wären ja etwas viel aber 1ms hätte ich da jetzt schon reingemacht.

Ich werde den Programmer jetzt nochmal auf ein Steckbrett aufbauen und 
die Pause wieder einkommentieren. Mal schauen was er dann macht.
Eigentlich ist es den Aufwand wg. 9 Tinys nicht wert, aber ich will es 
jetzt wissen.

von S. Landolt (Gast)


Lesenswert?

Eines ist mir nicht klar: woher kennen Sie die Werte der Fuse-Bytes? Vom 
simpleavr-Resetter? In diesem Fall müsste der Einstieg in den HV-Modus 
(in der Routine read-chip) doch funktionieren, oder?

von Andreas B. (bitverdreher)


Lesenswert?

Timing mit der geänderten SW nochmal mit einen weiteren Aufbau auf dem 
Steckbrett überprüft:
Sieht sehr gut aus. Vcc ist jetzt sauber auf GND bevor es losgeht.
Anstiegsrate Vcc < 2us. Ebenso 12V an Reset. (der 40us später kommt).
Auch das Timing für die Programmierung is ok.

Sieht so aus, als wären diese Tinys ein Fall für die Tonne.

von Andreas B. (bitverdreher)


Lesenswert?

S. Landolt schrieb:
> Eines ist mir nicht klar: woher kennen Sie die Werte der Fuse-Bytes? Vom
> simpleavr-Resetter?

Ja, der Resetter zeigt das an. Schau doch mal den Link oben an. Der hat 
dafür 4 7-Segmentanzeigen oben drauf. Prima Teil. Nachbau 
empfehlenswert.

> In diesem Fall müsste der Einstieg in den HV-Modus
> (in der Routine read-chip) doch funktionieren, oder?

Tja, das ist ja gerade das Problem ;-) Programmierung läuft und danach 
das gleiche wie davor.

Ich habe auch gerade noch mal einen anderen Tiny (meinen letzten! Mutig, 
nicht?)  auf 52 5E FE gefust. War kein Problem, den wieder 
zurückzusetzen. (mit den Resetter natürlich)

von Curby23523 N. (Gast)


Lesenswert?

Benutzt du auch einen originalen Programierer..?

von S. Landolt (Gast)


Lesenswert?

Bevor wir uns endgültig geschlagen geben, eine letzte Frage: haben Sie 
das immer mit demselben Chip aus dieser zweifelhaften Charge probiert, 
oder auch mal einen zweiten und dritten genommen?

von Andreas B. (bitverdreher)


Lesenswert?

S. Landolt schrieb:
> Bevor wir uns endgültig geschlagen geben, eine letzte Frage: haben Sie
> das immer mit demselben Chip aus dieser zweifelhaften Charge probiert,
> oder auch mal einen zweiten und dritten genommen?

Ich habe vier aus diesem Reel genommen. Die anderen 5 sind noch 
verpackt. Ich probiere die anderen 5 auch noch mal, aber ich glaube da 
nicht mehr dran.

Nils N. schrieb:
> Benutzt du auch einen originalen Programierer..?

Nein. Ich hatte noch nie Veranlassung dafür mehr Geld auszugeben. Die 
USPASP haben bei immer alles getan was sie sollten.
Ein Pollin Funk Eva Board und ein AVR910 Nachbau habe ich noch aus der 
Steinzeit, aber die beherrschen beide keine HV Programmierung.

von S. Landolt (Gast)


Lesenswert?

Er tut, vorher noch programmiert,
beim zweiten Hinschaun nicht mehr mit,
und sagt, dieweil sich's Byte verliert:
"I quit".


in memoriam KLEN

von Andreas B. (bitverdreher)


Lesenswert?

An den 52 5E FE lag es aber nicht. Ich habe den Tiny anschliessend 
problemlos programmieren können.

von S. Landolt (Gast)


Lesenswert?

Kann es sein, dass die Chips gesperrt sind, also LB1/2 im Lock-Bit-Byte 
gesetzt?

"... The Fuse bits are locked in both Serial and High-voltage 
Programming mode."

von S. Landolt (Gast)


Lesenswert?

In diesem Fall müsste man also in chip_read vor dem "write fuse low 
bits" ein chip-erase einbauen.

von Andreas B. (bitverdreher)


Lesenswert?

Hmm, das erscheint plausibel.
Jetzt muß ich mal schauen wie ich das in die SW hineinbekomme. Den 
Befehlsaufbau habe ich noch nicht so ganz kapiert.

von S. Landolt (Gast)


Lesenswert?

... Da sind wir schon zu zweit, zumal meine C-Kenntnisse nur rudimentär 
sind.
Aber wie wäre es mit Folgendem (nur für ATtiny_5, also ohne 
Typ-Unterscheidungen), in chip_read unmittelbar nach 'if (release_reset) 
{':
1
cmd[0] = 0x80;
2
cmd[2] = 0x00;
3
cmd[3] = 0x64;
4
cmd[5] = 0x6C;
5
hv_cmd(cmd, 3); _delay_ms(50);

von Andreas B. (bitverdreher)


Lesenswert?

Das war es gewesen. :-) (mit hv_cmd(cmd,4))
Das Problem war mehr die Deutung der Tabelle 20.16, weniger C an sich.
Danke Dir!

Warum der Kerl daran nicht gedacht hat. Ich bin nicht auf die Idee 
gekommen, daß der Chip erase da nicht mit drin ist.

Ich werde jetzt noch mal die Fallunterscheidungen einbauen.
Bin ich eigentlich zu doof oder gibt es da nichts wie man mit den Autor 
des simpleavr fuse resetters in Kontakt treten kann?

Sorry nochmal für Deinen verstorbenen Tiny.

von Andreas B. (bitverdreher)


Angehängte Dateien:

Lesenswert?

Hier nochmal der vollständige Source. Es gibt keine 
Fallunterscheidungen. Die betroffenen Tinys haben alle den gleichen Chip 
erase command.
Es war übrigens doch hv_cmd(cmd,3). War Blödsinn was ich da vorher 
geschrieben habe.

von S. Landolt (Gast)


Lesenswert?

> Warum der Kerl daran nicht gedacht hat...
Ich gebe zu, dass ich bei meinem eigenen Gerät auch nicht daran gedacht 
hatte. Muss zur Ehrenrettung allerdings hinzufügen, dass sich der 
Zustand 'RSTDISBL gelockt' mit dem normalen seriellen Modus ja gar nicht 
herstellen lässt, schließlich ist nur das eine oder andere möglich; 
beides geht nur im HV-Modus, und diesen nutze ich sonst nie.


(Nur am Rande: das ist ein Missverständnis, hier bei mir ist nichts 
'gestorben'. Ich erlaube mir ab&zu, bei besonderen Gelegenheiten und 
mehr für mich selbst, an meinen verstorbenen Numerikprofessor zu 
erinnern, der unter dem Pseudonym KLEN Gedichte, einzelne Verse und 
Schüttelreime verfasste, indem ich ihn zitiere)

von Andreas B. (bitverdreher)


Lesenswert?

Na, dann  ist ja alles gut. ;-)
Ich habe es übrigens geschafft, den "Original" Fuse resetter 
umzuprogrammieren, obwohl da noch das 7-Segment Display mit dran hing. 
(Das Display ist über den Tiny2313 gelötet). Da das Ganze im 
Schnellverfahren auf eine Lochrasterplatine gelötet wurde, hätte ich mir 
beim Auslöten das Board ziemlich versaut. So habe ich einfach einen ISP 
Anschluss (so was ähnliches jedenfalls) mir draufgelötet und fertig. Gut 
zu wissen, daß man so noch Optionen hat, ggf. in die SW noch was 
einzufügen.

von Peter D. (peda)


Lesenswert?

Andreas B. schrieb:
> Das war es gewesen. :-)

Ja, die Lockbits verriegeln auch die Fuses, ein Erase ist also Pflicht.
Sonst könnte man ja das Debugwire/JTAG enablen und hätte so ne Backdoor 
zum Auslesen.

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Andreas B. schrieb:
> Das war es gewesen. :-)
Danke!

Ich habe in diesem Thread was gelernt.
1. Dass man sich doch noch etwas gründlicher abhängen kann, als ich 
erwartet habe.
2. Dass mein HV FuseBitDoctor den offensichtlich manchmal notwendigen 
Chip Erase macht. (und ich somit kein Chance hatte den Fehler zu 
reproduzieren)

von Andreas B. (bitverdreher)


Lesenswert?

Arduino F. schrieb:
> Dass mein HV FuseBitDoctor den offensichtlich manchmal notwendigen
> Chip Erase macht. (und ich somit kein Chance hatte den Fehler zu
> reproduzieren)

Es wäre mal interessant, in diese FW hineinzuschauen. Ich will auch noch 
was lernen. ;-)
Welchen Fuse doctor hast Du denn?

von Einer K. (Gast)


Lesenswert?

Hach ...
Ist schon ein paar Jahre her.
Und habe auch nur eine vorhandene *.hex geflashed.
Aber das Board, ist exakt dieses, ebay: 152277809800

von Andreas B. (bitverdreher)


Lesenswert?

Habe das Projekt hier gefunden: 
http://community.atmel.com/projects/atmega-fusebit-doctor-hvpphvsp

Leider auch nur die hex drin. So etwas baue ich prinzipiell nicht nach. 
(Genauso wenig wie ich Windows benutze. Hab so meine Prinzipien. ;-) )

Hast Du auch mal den Versuch gemacht, dich komplett mit den Lock Bits 
auszusperren?

von Einer K. (Gast)


Lesenswert?

Andreas B. schrieb:
> Hast Du auch mal den Versuch gemacht, dich komplett mit den Lock Bits
> auszusperren?

Ja, das habe ich gemacht.
Die Lockbits auf 0xfc gesetzt

Für diesen Zweck gibts übrigens extra einen "Erase Allow" Jumper auf dem 
Board. Welcher auch das erwartete Verhalten zeigt.
Ohne Jumper versagt das Fuse Reseting bei gesetzten Lock Bits.

Andreas B. schrieb:
> So etwas baue ich prinzipiell nicht nach.
Ich ahne was du meinst.
Aber das Board selber ist gut genug dokumentiert, so dass man jederzeit 
eine eigene Firmware schreiben kann.
War nur bisher nicht nötig.

Damals war es zwingend nötig eine kleine Schachtel voll mit ATMegas 
wieder zu beleben. Oder ein paar Dutzend neue zu kaufen.
Die Zeit war knapp, also war eine solche 3/4 Fertig Lösung angemessen.

Übrigens, wenn ich Motorrad fahren will, dann baue ich den Motor auch 
nicht selbst. Vielleicht dengel ich mir einen Tank, wenns schöner als 
das Original werden soll.
Aber im Grunde, auch das eher nicht.

von Andreas B. (bitverdreher)


Lesenswert?

Arduino F. schrieb:
> Übrigens, wenn ich Motorrad fahren will, dann baue ich den Motor auch
> nicht selbst. Vielleicht dengel ich mir einen Tank, wenns schöner als
> das Original werden soll.
> Aber im Grunde, auch das eher nicht.

Das mache ich auch nicht. Aber wie Du siehst, hätten wir den Fehler nie 
gefunden wenn ich nur die hex gehabt hätte.

von Einer K. (Gast)


Lesenswert?

Andreas B. schrieb:
> Aber wie Du siehst, hätten wir den Fehler nie
> gefunden wenn ich nur die hex gehabt hätte.

Dann wärst du gar nicht auf das Problem gestoßen!
OK, zumindest ICH wäre da nicht drauf gestoßen...
Du schon, da deiner nicht "perfekt" genug war.

;-) Das unterscheidet "gute Werkzeuge" von Bastelkram. ;-)

Ach, was solls....
Ich habe was gelernt, du auch, deine Dinger tuns wieder, und damit ist 
doch alles gut.
Sogar dein Code auf deinem HV Dingen ist jetzt besser.

Alles in allem: Ein voller Erfolg.

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.