Hallo! Habe heute ein Projekt kompilieren wollen, das vor dem Wochenende noch super funktionierte. Heute bekomm ich plötzlich diese Fehlermeldung: ../os_Serial.c: In function 'com_init': ../os_Serial.c:41: error: 'UBRR' undeclared (first use in this function) ../os_Serial.c:41: error: (Each undeclared identifier is reported only once ../os_Serial.c:41: error: for each function it appears in.) Es geht um das Baudraten Register meines ATMega16, das ich gerne setzen würde um über den USART Daten auszutauschen... Hat Jemand eine Idee was da los ist? Danke!
@ Fred (Gast) >Es geht um das Baudraten Register meines ATMega16, das ich gerne setzen >würde um über den USART Daten auszutauschen... Das heisst ja auch UBRRL und UBRRH ;-) http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#UART_initialisieren MFG Falk
Möglicherweise wurde "vor dem Wochenende" noch für einen anderen AVR kompiliert, also anderer mmcu-Parameter und damit indirekt auch eine andere io*.h-Datei der avr-libc. Nicht für alle AVR (auch nicht für ATmega16) kann in den Registerdefinitionen der avr-libc ein "16bit" UBRR definiert werden, da die Addressen von UBRRL und UBRRH nicht aufeinandernfolgen. Für diese ist die von Falk genannte Vorgehensweise erforderlich. Ein paar Schnippsel aus avr-libc io*.h-Dateien zur Veranschaulichung.
1 | // aus iom16.h fuer ATmega16
|
2 | [...]
|
3 | #define UBRRL _SFR_IO8(0x09)
|
4 | [...]
|
5 | #define UBRRH _SFR_IO8(0x20)
|
6 | |
7 | // aus iom169.h fuer ATmega169
|
8 | [...]
|
9 | #define UBRR _SFR_MEM16(0xC4)
|
10 | #define UBRRL _SFR_MEM8(0xC4)
|
11 | #define UBRRH _SFR_MEM8(0xC5)
|
12 | [...]
|
Martin Thomas
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.