Forum: Mikrocontroller und Digitale Elektronik Attiny10 fuses


von Andreas B. (bitverdreher)


Lesenswert?

Hallo,
nachdem es mir jetzt gelungen ist, den Attiny10 via Buspirate zu 
programmieren, taucht jetzt ein neues Problem auf:

Der Tiny läßt sich nur 1x programmieren.
Anschließend habe ich dann mal versucht, mit 12V an Reset zu 
programmieren (händisch angelegt). Dies funktioniert dann auch. Da ich 
die fuses nicht angerührt habe kann dies eigentlich nur bedeuten, daß 
das fuse für RSTDISBL defaultmäßig gesetzt ist und beim ersten 
programmieren aktiviert wird.
Kann das sein?

Zweite Frage: Wie liest man die fuses mit AVRdude beim Tiny10 aus?
Laut http://www.engbedded.com/fusecalc/heißt der Parameter für die fuses 
im Tiny10 BYTE0. Sowohl BYTE0 als auch byte0, lfuse, hfuse sowie efuse 
geben mir aus:
"efuse" memory type not defined for part "ATtiny10"
Auch im Datenblatt finde ich nichts (die fuses heißen jetzt 
configuration bits).

Gruß
Andreas

von Andreas B. (bitverdreher)


Lesenswert?

Hallo,
die fuses heißen jetzt schlicht und einfach: "fuses".
Allerdings bekommt man mit -v einen leeren String geliefert.
Erst mit -U fuse:r:-:i läßt er sich überreden, :00000001FF auszugeben.
Die 1 davor wollen wir mal geflissentlich übersehen. ;-)

Jetzt wird es aber immer lustiger:

Spasseshalber habe ich jetzt mal mit -U fuse:w:0x00:m die fuses mit 0 
überschrieben. Das geht (scheinbar) soweit noch. Anschließend lassen sie 
sich nicht mehr mit FF beschreiben:

avrdude: verification error, first mismatch at byte 0x0000
         0x00 != 0xff

Programmieren läßt er sich aber nach wie vor.

Edit: Lese ich die fuses jetzt wieder, dann steht wieder 1FF drin. Das 
schreiben mit FF liefert mir aber nach wie vor den o.g.Fehler.

Gruß
Andreas

von Stefan F. (Gast)


Lesenswert?

Der Tiny hat keine efuse. Der buspirate ist noch recht neu und erfordert 
eine sehr aktuelle Version von avrdude.

Vergleiche mal mit einem anderen ISP Programmer, es könnte durchaus ein 
Firmwarefehler oder Softwarefehler vorliegen.

Prüfe außerdem die GND Verbindung.

von Andreas B. (bitverdreher)


Lesenswert?

Halo,
mit dem usbasp habe ich es schon versucht. Da ging gar nichts.
So neu ist der Buspirate ja auch wieder nicht.
Es ist die aktuelle Version von avrdude.(Version 6.1, compiled on Sep
11 2014 at 21:49:31)
GND ist natürlich angechlossen. Alle Strippen zum buspirate sind ca. 
20cm lang.

Gruß
Andreas

PS: Ich weiß daß dieser Tiny nur 1 byte fuses hat. Das efuse diente nur 
dazu, den Namen herauszufinden. Aber das hat sich ja schon erledigt.

von Stefan F. (Gast)


Lesenswert?

> GND ist natürlich angechlossen.

Möglicherweise ist die Leitung defekt. Das passiert bei diesem Kabeln 
öfters mal.

von Trillian ist ein Cybernaut (Gast)


Lesenswert?

Lass doch einfach die Finger von den Fuses. Die brauchst Du beim ATtiny 
10 nicht.

von Andreas B. (bitverdreher)


Lesenswert?

Trillian ist ein Cybernaut schrieb:
> Lass doch einfach die Finger von den Fuses. Die brauchst Du beim ATtiny
> 10 nicht.

Woher weißt Du so genau, ob ich Reset als Port benötige?
Glaskugel?
Hast Du eigentlich den Anfang des Threads gelesen?

Gruß
Andreas

von Andreas B. (bitverdreher)


Lesenswert?

Stefan Us schrieb:
>> GND ist natürlich angechlossen.
>
> Möglicherweise ist die Leitung defekt. Das passiert bei diesem Kabeln
> öfters mal.

Gerade geprüft. GND ist verbunden.

Gruß
Andreas

von Andreas B. (bitverdreher)


Lesenswert?

Noch ein Nachtrag:
Im Terminalmode des AVRdude funktioniert das lesen und schreiben der 
fuses einwandfrei.
AVRdude ist wohl bezüglich des Tiny10 noch etwas buggy.

Allerdings funktioniert das programmieren (incl.fuses) nach wie vor nur 
im HV modus.

Gruß
Andreas

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


Lesenswert?

Andreas B. schrieb:
> Erst mit -U fuse:r:-:i läßt er sich überreden, :00000001FF auszugeben.
> Die 1 davor wollen wir mal geflissentlich übersehen. ;-)

Warum willst du die igorieren?

Das ist einfach nur ein Ende-Record.  Du hast also nach wie vor deine
leere Datei.  Insofern ist es konsistent.

Andreas B. schrieb:
> AVRdude ist wohl bezüglich des Tiny10 noch etwas buggy.

Wenn du denkst, dass es da Bugs gibt, dann schreib' das bitte nicht
irgendwo in einem Forum, wo man es mehr oder minder nur durch Zufall
erfährt, sondern schreib' einen ordentlichen Bugreport bitte:

https://savannah.nongnu.org/bugs/?group=avrdude

Andreas B. schrieb:
> Das efuse diente nur dazu, den Namen herauszufinden.

Dafür gibt es im Terminal-Modus das "part"-Kommando.

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


Lesenswert?

Hier funktioniert es:
1
$ avrdude -c avrisp2 -p t10 -U fuse:r:-:h
2
3
avrdude: AVR device initialized and ready to accept instructions
4
5
Reading | ################################################## | 100% 0.03s
6
7
avrdude: Device signature = 0x1e9003
8
avrdude: reading fuse memory:
9
10
Reading | ################################################## | 100% 0.03s
11
12
avrdude: writing output file "<stdout>"
13
0xff
14
15
avrdude done.  Thank you.
16
17
$ avrdude -c avrisp2 -p t10 -U fuse:r:-:i
18
19
avrdude: AVR device initialized and ready to accept instructions
20
21
Reading | ################################################## | 100% 0.03s
22
23
avrdude: Device signature = 0x1e9003
24
avrdude: reading fuse memory:
25
26
Reading | ################################################## | 100% 0.03s
27
28
avrdude: writing output file "<stdout>"
29
:01000000FF00
30
:00000001FF
31
32
avrdude done.  Thank you.

(Ohne HV-Programmierung.)

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Moin!

Andreas B. schrieb:
> mit dem usbasp habe ich es schon versucht. Da ging gar nichts.

Läuft mit dem USBasp aber einwandfrei. Kann höchstens sein, dass du 
einen hast, dessen Firmwarestand deutlich älter als 5 Jahre ist, damals 
war die TPI-Funktionalität noch nicht drin. Mit "Firmwarestand" meine 
ich jetzt nicht das Kaufdatum, denn auch heute werden vereinzelt neue 
USBasp mit Firmwarestand 2009 verkauft. Also genau hinschauen. :-)

Ansonsten kann ich nicht von Problemen mit avrdude berichten, der 
ATtiny10 hat sich damit immer problemlos programmieren lassen. Durch die 
Protokollverwandtschaft von TIP und HV-TPI kann der Tiny sogar per 
avrdude und (z.B.) USBasp mit HV programmiert werden, wenn man die 
Reset-Leitung zwischen Programmer und Mikrocontroller offen lässt und 
den Reset-Pin des Mikrocontrollers extern mit +12V speist.

Was mir grade noch einfällt: Hast du mal die Programmierspannung 
überprüft? Während die meisten ATtinys auch mit 3,3 Volt programmiert 
werden können, verlangt der ATtiny10 5 Volt. Jedenfalls soweit ich mich 
ans Datenblatt erinnere.

Zur Ausgabe von Fusebits mit avrdude:
Ich geb als Ausgabeformat immer ":b" an, das ist weniger verwirrend als 
das Intel-Format ":i".

EDIT:
Jörg war schneller. :-)  ":h" ist natürlich genauso gut.

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


Lesenswert?

Markus Weber schrieb:
> Während die meisten ATtinys auch mit 3,3 Volt programmiert werden
> können, verlangt der ATtiny10 5 Volt.

Yep, aber auslesen muss er sich bei jeder Spannung ab 1,8 V lassen.
Ist halt nur, dass sie offenbar an der Chipfläche für die Kondensatoren
der Ladungspumpe sparen mussten, die die Programmierspannung (um die
12 V) intern bereitstellt.

von Andreas B. (bitverdreher)


Lesenswert?

Jörg Wunsch schrieb:
> Andreas B. schrieb:
>> Erst mit -U fuse:r:-:i läßt er sich überreden, :00000001FF auszugeben.
>> Die 1 davor wollen wir mal geflissentlich übersehen. ;-)
>
> Warum willst du die igorieren?
>
> Das ist einfach nur ein Ende-Record.  Du hast also nach wie vor deine
> leere Datei.  Insofern ist es konsistent.
>
OK, dann habe ich die Ausgabe falsch aufgefaßt. Ich dachte, das wäre 01 
(ein nicht existierendes Higherbyte) und FF für das fuse.
Jetzt habe ich auch festgestellt, daß das fuse sich auf der 
Kommandozeile nicht auslesen läßt, sonden nur im Terminal modus.

> Andreas B. schrieb:
>> AVRdude ist wohl bezüglich des Tiny10 noch etwas buggy.
>
> Wenn du denkst, dass es da Bugs gibt, dann schreib' das bitte nicht
> irgendwo in einem Forum, wo man es mehr oder minder nur durch Zufall
> erfährt, sondern schreib' einen ordentlichen Bugreport bitte:
>
> https://savannah.nongnu.org/bugs/?group=avrdude
>
Ich möchte erst einmal sichergehen, daß der Fehler nicht hier vor der 
Tastatur oder an einem defekten Tiny liegt. Ich bestelle mal neue und 
teste es nochmal.

> Andreas B. schrieb:
>> Das efuse diente nur dazu, den Namen herauszufinden.
>
> Dafür gibt es im Terminal-Modus das "part"-Kommando.
Gut zu wissen. Danke!

Gruß
Andreas

von F. F. (foldi)


Lesenswert?

Ich habe da schon einige von verbaut und noch nie Probleme beim 
programmieren gehabt. Allerdings nehme ich das Studio und AVR MKII.
All zu viel fuses hat der ja nicht.

von Andreas B. (bitverdreher)


Lesenswert?

Markus Weber schrieb:
> Moin!
>
> Andreas B. schrieb:
>> mit dem usbasp habe ich es schon versucht. Da ging gar nichts.
>
> Läuft mit dem USBasp aber einwandfrei. Kann höchstens sein, dass du
> einen hast, dessen Firmwarestand deutlich älter als 5 Jahre ist, damals
> war die TPI-Funktionalität noch nicht drin. Mit "Firmwarestand" meine
> ich jetzt nicht das Kaufdatum, denn auch heute werden vereinzelt neue
> USBasp mit Firmwarestand 2009 verkauft. Also genau hinschauen. :-)

Das kann natürlich sein. Der ist schon etwas älter, aber original 
Fischl. Irgendwie war ich der Meinung, ich hätte ihn mal aktualisiert. 
Mach ich nochmal.

> Ansonsten kann ich nicht von Problemen mit avrdude berichten, der
> ATtiny10 hat sich damit immer problemlos programmieren lassen. Durch die
> Protokollverwandtschaft von TIP und HV-TPI kann der Tiny sogar per
> avrdude und (z.B.) USBasp mit HV programmiert werden, wenn man die
> Reset-Leitung zwischen Programmer und Mikrocontroller offen lässt und
> den Reset-Pin des Mikrocontrollers extern mit +12V speist.

Habe ich ja gemacht. HV programmierung mit dem Buspirate geht 
einwandfrei.

> Was mir grade noch einfällt: Hast du mal die Programmierspannung
> überprüft? Während die meisten ATtinys auch mit 3,3 Volt programmiert
> werden können, verlangt der ATtiny10 5 Volt. Jedenfalls soweit ich mich
> ans Datenblatt erinnere.

Läuft mit 5V zum Programmieren. Die Schaltung habe ich für 3.3V 
ausgelegt und dies erst später nach Lesen des DB festgestellt. :-(

> Zur Ausgabe von Fusebits mit avrdude:
> Ich geb als Ausgabeformat immer ":b" an, das ist weniger verwirrend als
> das Intel-Format ":i".
>
> EDIT:
> Jörg war schneller. :-)  ":h" ist natürlich genauso gut.

Ja, das war dann auch mein Interpretationsproblem.

Gruß
Andreas

von Andreas B. (bitverdreher)


Lesenswert?

Hallo,
Gerade habe ich noch herausgefunden, daß wenn man die Fuses im 
Terminalmodus beschreibt, sich der Tiny wieder normal ohne HV 
beschreiben läßt.
Scheinbar funktioniert das lesen und schreiben mit dem Buspirate nur im 
Terminalmodus.
Ich teste es aber nochmal mit einem neuen Tiny bevor ich einen Bugreport 
schreibe.

Gruß
Andreas

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


Lesenswert?

Andreas B. schrieb:
> Scheinbar funktioniert das lesen und schreiben mit dem Buspirate nur im
> Terminalmodus.

Wäre zwar eigenwillig (beide benutzen ja die gleichen Funktionen
als Backend), aber natürlich nicht auszuschließen.  Einen Buspirate
habe ich selbst nicht zum Testen, den Code haben andere beigesteuert.

von Andreas B. (bitverdreher)


Lesenswert?

Nur zur Sicherheit: Das bezieht sich nur auf die Fuses.
Das sind aber vermutlich auch die gleichen Funktionen.

Lesen und schreiben des Flash geht auch über die Kommandozeile. Ich habe 
auch mal das gelesene mit dem geschriebenen verglichen. Das funktioniert 
einwandfrei.

Gerade habe ich es mal mit einem eingebauten Tiny10 versucht. Dort ist 
es das gleiche. (Ich mußte erst mal eine Sicherheit einlöten, damit mir 
die 5V zum Programmieren nicht sonstwo hingehen. Die Schaltung ist nur 
für 3,3V ausgelegt)

Ich habe mal einen Bugreport erstellt.

Gruß
Andreas

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


Lesenswert?

Andreas B. schrieb:

> Das sind aber vermutlich auch die gleichen Funktionen.

Sollte schon, allerdings müsste ich mir den Buspirate-Code auch
ansehen.

> Ich mußte erst mal eine Sicherheit einlöten, damit mir
> die 5V zum Programmieren nicht sonstwo hingehen.

Wenn du den Flash nur auslesen willst, geht das auch mit kleineren
Spannungen.  Nur Programmieren braucht die 5 V.

> Ich habe mal einen Bugreport erstellt.

Ja, danke, hab' ich gesehen.  Mal sehen, wer sich von den
Buspirate-Kundigen der Sache annimmt.

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.