www.mikrocontroller.net

Forum: Compiler & IDEs ATtiny13 - Fuse-Bytes auslesen


Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim ATtiny13 habe ich Probleme, die Fuse-Bytes auszulesen. Beim 
Compilieren des Makros "boot_lock_fuse_bits_get" gibt AVRGCC die 
Fehlermeldung "BLBSET undeclared" (WinAVR 20090313). In der Tat gibt es 
beim ATtiny13 dieses Bit nicht, vielmehr hier das Bit RFLB. Sollte das 
nicht im Makro als prozessorabhängige Fallunterscheidung abgedeckt sein? 
Hat jemand Erfahrung mit dem Auslesen der Fuse-Bytes bei den Tinys? 
Danke.

Günter

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der avr-libc heisst nunmal alles genau so, wie im Datenblatt.

>Sollte das
>nicht im Makro als prozessorabhängige Fallunterscheidung abgedeckt sein?

Wie das Makro aussieht, steht ja in der doku:

http://www.nongnu.org/avr-libc/user-manual/group__...

Wenn BLBSET beim ATtiny13 nicht exisitiert, kannst du es auch nicht 
lesen. Falls RFLB exakt die selbe Funktion hat, und dein Code für 
mehrere AVR's kompilierbar sein soll, musst du dir da selber was 
zusammen-definen.



Oliver

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Falls RFLB exakt die selbe Funktion hat, und dein Code für
> mehrere AVR's kompilierbar sein soll, musst du dir da selber was
> zusammen-definen.

Oder aber gleich einen Patch für die avr-libc erarbeiten und dort
einreichen.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BLBSET und RFLB haben NICHT die selbe Funktionalität (BLBSET gilt für 
lesen und schreiben, RFLB nur fürs lesen), daher haben die 
unterschiedlichen Namen schon einen Sinn.

Oliver

Autor: Au weia Nr. 133087612340458264 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> gleich einen Patch für die avr-libc erarbeiten und dort einreichen.

In dem Fall müsste er wohl einen Patch für die avr-libc UND die 
existierenden und verteilten sowie die zukünftigen Datenblätter bei 
ATMEL einreichen, damit es keine endlosen Verwirrungen und massenweise 
immer wieder dieselben Threads hier und anderswo in den Foren gibt.

Ok, er kann den Patch natürlich einreichen. Ist sicher eine gute 
Übung, um sich über die Konsequenzen klar zu werden. Hehe.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Au weia Nr. 133087612340458264 schrieb:

> In dem Fall müsste er wohl einen Patch für die avr-libc UND die
> existierenden und verteilten sowie die zukünftigen Datenblätter bei
> ATMEL einreichen, ...

Hast du den Artikel vor dir auch gelesen?  Beide Bits haben nicht
die gleiche Funktionalität.

Autor: Au weia Nr. 133087612340458264 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, dann erübrigt sich das natürlich sowieso. Schon klar.

Aber ein Patch für eine Vereinheitlichung von Dingen, die in den 
Datenblättern nicht einheitlich sind, das wäre schon ein ziemliches 
Unterfangen. Nur sowas meinte ich.

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte mir vorher durchaus den Code für das Makro 
"boot_lock_fuse_bits_get" angesehen. Genauere Nachforschungen haben 
ergeben, daß es beim Tiny13 offensichtlich nicht möglich ist, per 
Programm die Fuses zu schreiben; man kann sie lediglich lesen. Daher 
wohl der andere Name "RFLB". Für das Lesen hat aber RFLB genau die 
gleiche Funktion wie anderswo BLBSET (nur daß es halt lediglich das 
Lesen ermöglicht).

Ich habe auch einen Patch für die "boot.h" erarbeitet. Wenn man dort die 
Zeile

#define __BOOT_LOCK_BITS_SET      (_BV(__SPM_ENABLE) | _BV(BLBSET))

ersetzt durch

#if defined(RFLB)

#define __BOOT_LOCK_BITS_SET      (_BV(__SPM_ENABLE) | _BV(RFLB))

#else

#define __BOOT_LOCK_BITS_SET      (_BV(__SPM_ENABLE) | _BV(BLBSET))

#endif


so funktioniert das Lesen von Fuse-Bytes mit dem genannten Makro auch 
beim
Tiny13 (und wohl auch bei anderen ähnlichen Prozessoren). Nebenwirkungen 
habe ich aber nicht geprüft, z.B. was bei Aufruf des Makros 
"boot_lock_fuse_bits_set" beim Tiny13 passiert (das sollte man wohl 
nicht tun).

Wie man so einen Patch einreicht, weiß ich aber nicht.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Günter R. schrieb:

> Wie man so einen Patch einreicht, weiß ich aber nicht.

Hier:

https://savannah.nongnu.org/patch/?group=avr-libc

Bitte möglichst als Ausgabe von diff -u.

> Nebenwirkungen
> habe ich aber nicht geprüft, z.B. was bei Aufruf des Makros
> "boot_lock_fuse_bits_set" beim Tiny13 passiert (das sollte man wohl
> nicht tun).

Man sollte den Makro "boot_lock_fuse_bits_set" dann gar nicht erst
definieren.  Das geht mit ein bisschen #ifdef.  Das sauberste wäre
es, die Definition von __BOOT_LOCK_BITS_SET noch um eine bspw. mit
dem Namen __BOOT_LOCK_BITS_GET zu erweitern.  __BOOT_LOCK_BITS_SET
bleibt dann unverändert und wird nur definiert, wenn es ein BLBSET
gibt.  __BOOT_LOCK_BITS_GET benutzt wahlweise BLBSET oder RFLB und
wird dann innerhalb von "boot_lock_fuse_bits_get" benutzt.  Sind
ein paar Zeilen mehr, aber es wäre sauber.

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch schrieb:

> Das sauberste wäre
> es, die Definition von __BOOT_LOCK_BITS_SET noch um eine bspw. mit
> dem Namen __BOOT_LOCK_BITS_GET zu erweitern.  __BOOT_LOCK_BITS_SET
> bleibt dann unverändert und wird nur definiert, wenn es ein BLBSET
> gibt.  __BOOT_LOCK_BITS_GET benutzt wahlweise BLBSET oder RFLB und
> wird dann innerhalb von "boot_lock_fuse_bits_get" benutzt.  Sind
> ein paar Zeilen mehr, aber es wäre sauber.

Sehr gute Idee. Habe ich bei meinem Boot.h schon eingepflegt. Anmeldung 
bei savannah ist am Laufen ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.