Forum: Compiler & IDEs AVR Atmega168 - UBRR0H oder UBRRH?


von Matze (Gast)


Lesenswert?

Hallo ,

ich habe eine frage zur USART Programmierung.

Im AVR-GCC-Tutorial steht als Beispielcode :

UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF;


ich benuetze einen Atmega168 und im Datenblatt steht UBRR0H anstelle von 
UBRRH . Das gleiche gilt fuer andere Parametern wie z.B. TXEN0 anstelle 
von TXEN.

ich hatte vor eine universelle "klasse" (oder nennt sich das in C 
Bibliothek?) zu schreiben , damit ich den Code auch fuer andere 
Mikrocontroller verwenden kann .

Meine Frage jetzt ist ob man auch nur UBRRH anstelle von UBRR0H fuer den 
Atmega168 benuetzen kann und das interpretiert wird als UBRR0H oder wie 
ich ansonsten vorgehen sollte um Mikrocontroller unabhängig zu sein?

Vielen Dank im vorraus,
Matze

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

1
#if defined(UBRR0H) && !defined(UBRRH)
2
#  define UBRRH UBRR0H
3
#endif

von Peter D. (peda)


Lesenswert?

Ich hab hier mal ne UART-Bibliothek geschrieben, die sollte auf allen 
AVRs mit HW-UART laufen:

Beitrag "AVR-GCC: UART mit FIFO"


Peter

von Peter Diener (Gast)


Lesenswert?

Hallo,

wie definiert man dann, ob auf uart 0 oder uart 1 gesendet wird wenn sie 
beide als gleiche Namen definiert sind?

Peter

von Peter D. (peda)


Lesenswert?

Peter Diener wrote:
> wie definiert man dann, ob auf uart 0 oder uart 1 gesendet wird wenn sie
> beide als gleiche Namen definiert sind?

Steht doch da:

"Die Funktionsnamen enden alle auf die Ziffer 0.
Wenn man einen AVR mit 2..4 UARTs benutzt, kann man den Code einfach für
die anderen UARTs kopieren und die 0 durch 1..3 ersetzen."

D.h. alles *0 durch *1 ersetzen, also die verwendeten Register, Bits und 
Vektoren.


Peter

von Matze (Gast)


Lesenswert?

super , vielen dank !

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.