[code::blocks] wo wird LFUSE_DEFAULT definiert?

OP #4601039
Lesenswert?
• ▲
▼
Wenn man ein neues AVR-Projekt anlegt, wird eine Datei fuse.c mit 
folgendem Inhalt erzeugt:
1
#include <avr/io.h>
2

3
FUSES = {
4
    .low = LFUSE_DEFAULT,
5
    .high = HFUSE_DEFAULT,
6
    .extended = EFUSE_DEFAULT
7
};

Wo und wie sind die Fuse-Konstanten definiert? (In avr/io.h jedenfalls 
nicht.)
#4601050
Lesenswert?
• ▲
▼
Uhu U. schrieb:
> Wo und wie sind die Fuse-Konstanten definiert?

Hier vermutlich:

"To use the Fuse API, include the <avr/io.h> header file, which in turn 
automatically includes the individual I/O header file and the 
<avr/fuse.h> file. These other two files provides everything necessary 
to set the AVR fuses."

Quelle:
http://www.nongnu.org/avr-libc/user-manual/group__avr__fuse.html
Persönliche Seite #4601105
Lesenswert?
• ▲
▼
Du kannst übersetzen mit -save-temps -g3 (oder höher).

Im präprozessierten Progamm (*.i für C, *.ii für C++) findest du dann 
sowas wie:
1
# 1 "<built-in>"
2
#define __STDC__ 1
3
#define __STDC_VERSION__ 201112L
4
...
5
# 1 "<command-line>"
6
#define __AVR_ATmega8__ 1
7
#define __AVR_DEVICE_NAME__ atmega8
8
# 1 "foo.c"
9
# 1 "e:\\winavr\\5.2.1\\avr\\include\\stdio.h" 1 3
10
# 40 "e:\\winavr\\5.2.1\\avr\\include\\stdio.h" 3
11
#define _STDIO_H_ 1
12

13

14

15
# 1 "e:\\winavr\\5.2.1\\avr\\include\\inttypes.h" 1 3
16
# 35 "e:\\winavr\\5.2.1\\avr\\include\\inttypes.h" 3
17
#define __INTTYPES_H_ 
18
...

__INTTYPES_H_ wird also in Zeile 35 von inttypes.h 
defined, __AVR_ATmega8__ hingegen per Kommandozeilen-Option(*) 
-D__AVR_ATmega8__ oder -D__AVR_ATmega8__=1

(*) Bis v4.9 ist __AVR_ATmega8__ ein Built-In Define von avr-gcc, ab v5 
wird das Makro über ein spec-File definiert 
($prefix/lib/gcc/avr/$version/device-specs/specs-atmega8).
OP #4601115
Lesenswert?
• ▲
▼
Ah ja... vielen Dank für die Hinweise.

So unter dem Strich scheint mir das aber ein Komfort zu sein, der nicht 
unbedingt sinnvoll ist.

Ist eigentlich der Fuse-Anzeige-Bug im avrdude behoben? (Ich habe mir 
letzhin zwei Arduino Nanos gebrickt, weil ich auf die Fuse-Werte 
vertraut hatte, die beim Lesen eines Controllers angezeigt weren.)
#4601121
Lesenswert?
• ▲
▼
Uhu U. schrieb:
> Wo und wie sind die Fuse-Konstanten definiert?

Kann man da nicht so Sachen wie "gehe zur Deklaration" oder "expandiere 
dieses Makro schrittweise" machen? Code::Blocks wird doch immer so 
gelobt, sowas gehört imho im Jahr 2016 zum Stand der Technik bei einer 
IDE, insofern müsste also ein Mausklick reichen um zu der Stelle zu 
springen an der das definiert wird.
Moderator Persönliche Seite #4601133
Lesenswert?
• ▲
▼
Uhu U. schrieb:
> So unter dem Strich scheint mir das aber ein Komfort zu sein, der nicht
> unbedingt sinnvoll ist.

Du meinst, dass man die Fuses überhaupt im Sourcecode einstellt?

Hmm, ja, ich mach' das bei mir auch nicht, aber manche Leute finden
das wohl toll.

> Ist eigentlich der Fuse-Anzeige-Bug im avrdude behoben?

Wenn ich nur wüsste, welchen du meinst ...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren