www.mikrocontroller.net

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


Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#if defined(UBRR0H) && !defined(UBRRH)
#  define UBRRH UBRR0H
#endif

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Diener (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Peter

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
super , vielen dank !

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.