Abfrage des uC Typs

Gast #1106761
Lesenswert?

Hallo, arbeite mich gerade in die UART Lib von Peter Fleury ein. Was mir 
da auffällt, sind die div. Abfragen z.B. in der uart.c
1
#elif  defined(__AVR_ATmega8__)  || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \
2
  || defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) \
3
  || defined(__AVR_ATmega323__)
4
  /* ATmega with one USART */
5
 #define ATMEGA_USART
6
 #define UART0_RECEIVE_INTERRUPT   SIG_UART_RECV
7
 #define UART0_TRANSMIT_INTERRUPT  SIG_UART_DATA
8
 #define UART0_STATUS   UCSRA
9
 #define UART0_CONTROL  UCSRB
10
 #define UART0_DATA     UDR
11
 #define UART0_UDRIE    UDRIE

Das dient ja sicher dazu, dass der Code universell einsatzbar ist. Aber 
was ich mich frage ist, wo der Wert '__AVR_ATmega8__' gesetzt wird. Ich 
arbeite mit AVR Studio 4 und starte ein Projekt imme rmit dem Wizard dem 
ich den uC immer mitteile. (Zuerst dachte ich, dass das nur für die 
Simulation relevant ist... .)

Im makefile, das der Wizard anlegt ist dann lediglich 'MCU = atmega8' zu 
finden.

Sorry für so eine blöde Frage...
Peter
#1161409
Lesenswert?

Peter wrote:
> Sorry für so eine blöde Frage...

Da bis jetzt niemand geantwortet hat, weiß es offenbar keiner. Folglich 
kann die Frage nicht so blöd sein. ;)

Die Antwort ist: Der Compiler definiert diese Makros in Abhängigkeit von 
dem Wert, den Du im makefile angibst. Also für atmega8 definiert der 
Compiler das Makro _AVR_ATmega8_ usw. Nachlesen kann man das ganze 
hier: http://www.it.lth.se/digp/Avr-libc-1.4.3/using_tools.html

Gruss
Andreas

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