PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR/gcc: Symbol od. Define mit Controllernamen



Jaecko
13.05.2012, 19:26
Moin.

Gibt es im gcc (AVR Studio) ein Symbol bzw. #define, das den verwendeten AVR beinhaltet?
Es gibt ja z.B. die Symbole wie __AVR_ATmega8__, die halt entweder definiert sind oder nicht, je nach dem ob ein ATmega8 verwendet wird.
Gibts irgendetwas, das immer gleich heisst und den Controllernamen beinhaltet? (Alternativ eine je nach AVR unterschiedliche, eindeutige ID/Nummer/etc). Sowas im Stil wie z.B. __LINE__, __DATE__, etc.

Hintergrund: Ein Codeteil soll ohne Veränderungen auf verschiedenen AVRs verwendet werden. Darin wird u.a. der AVR-Name über CAN ausgegeben. Die Information soll dann ohne Zutun des Benutzers (fehleranfällig) verfügbar sein.

mfG

Kampi
13.05.2012, 21:05
Hi,

ob es sowas gibt kann ich dir nicht sagen. Aber jeder Controller hat ja eine Device Signature. Kannst du diese nicht verwenden?
Bei den Programmern wird diese ja auch dafür verwendet um zu checken das der richtige Controller verwendet wird.

MagicWSmoke
13.05.2012, 22:16
Mach's so:

#ifdef __AVR_ATmega8__
const unsigned char ucinfo[] PROGMEM = {"Im_Mega8\0"};
#elif __AVR_ATmega16__
const unsigned char ucinfo[] PROGMEM = {"Im_Mega16\0"};
// #elif
// usw.
#else
#error No µC Definition found
#endif

sternst
13.05.2012, 23:32
Gibt es im gcc (AVR Studio) ein Symbol bzw. #define, das den verwendeten AVR beinhaltet?
Es gibt ja z.B. die Symbole wie __AVR_ATmega8__, die halt entweder definiert sind oder nicht, je nach dem ob ein ATmega8 verwendet wird.
Gibts irgendetwas, das immer gleich heisst und den Controllernamen beinhaltet?Wenn du dir solche Fragen zukünftig selber beantworten möchtest, dann machst du einfach folgendes:

echo | avr-gcc -mmcu=atmega8 -dM -E -Du wirst erstaunt sein, was da so alles vordefiniert ist, aber das, was du suchst, ist wohl nicht dabei.
Es ist aber ein Kinderspiel das über das Makefile selbst zu realisieren:

CFLAGS += -DMCU=$(MCU)