Wo sind die Ports des ATmega8L im Code definiert?
Wenn man sich von oben nach unten im Code durchwühlt, trifft man im low level Bereich auf Code wie diesen:
Code:
inline void MotorSpeed (unsigned char left_speed, unsigned char right_speed)
{
OCR1A = left_speed;
OCR1B = right_speed;
}
inline void MotorDir (unsigned char left_dir, unsigned char right_dir)
{
PORTD = (PORTD &~ ((1 << PD4) | (1 << PD5))) | left_dir;
PORTB = (PORTB &~ ((1 << PB4) | (1 << PB5))) | right_dir;
}
Jetzt die Frage:
Woher kennt der Compiler die Definition der Variablen OCR1A, OCR1B, PORTB, PORTD, PB4, PB5, PD4, PD5 ? Ich habe in den Files der Lib 2.70 gesucht aber nirgends etwas gefunden.
Re: Wo sind die Ports des ATmega8L im Code definiert?
Hi,
Zitat:
Zitat von ehenkes
...
Jetzt die Frage:
Woher kennt der Compiler die Definition der Variablen OCR1A, OCR1B, PORTB, PORTD, PB4, PB5, PD4, PD5 ? Ich habe in den Files der Lib 2.70 gesucht aber nirgends etwas gefunden.
bei mir ist <WinAVR_ROOT> = c:\WinAVR.
In asuro.h:
Code:
...
#define ASURO_H
#include <avr/io.h>
...
In <WinAVR_ROOT>\avr\include\avr\io.h:
Code:
...
#elif defined (__AVR_ATmega8__)
# include <avr/iom8.h>
...
Und in <WinAVR_ROOT>\avr\include\avr\iom8.h findest Du ALLES ... :)
Re: Wo sind die Ports des ATmega8L im Code definiert?
... und das Define __AVR_ATmega8__ kommt (irgendwie magic) aus dem mcu = atmega8 im Makefile.