Forum: Mikrocontroller und Digitale Elektronik Abfrage des uC Typs


von Peter (Gast)


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

von Andreas V. (tico)


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

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.