UART bei ATMega8

Gast #33565
Lesenswert?
• ▲
▼
Hi Jungs,

ich habe vor kurzem versucht, den UART meines ATMega8 zum laufen zu 
bringen. Dazu habe ich folgendes Programm geschrieben (siehe Anhang!). 
Leider ist es mir nicht geglückt, ihn zum laufen zu bringen. Ich habe 
den Quellcode mehrmals schon durchgesehen, aber keinen Fehler gefunden.
Schließlich habe ich versucht, das Programm mit dem Simulator von AVR 
Studio zu simulieren und habe entdeckt, dass ich die Register UBRRH und 
UCSRC, die unter der gleichen Adresse angesprochen werden, nicht mit 
verschiedenen Werten beschreiben kann, was aber notwendig wäre. Nämlich 
UCSRC mit 0x00 und UBRRH mit 0x86. Wer hat schon ähnliche Erfahrungen 
gemacht und kann mir weiterhelfen. Ich weiss keinen Rat mehr!
Ich bin froh für jeglichen Hinweis, weil ich auf dem Gebiet AVR noch 
ziemlich neu bin.

Vielen Dank im Voraus und bis dann!

Daniela
Angehängte Dateien:
Gast #33566
Lesenswert?
• ▲
▼
Einige Funktionen des USART werden im AVR Studio nicht korrekt 
simuliert, dieses beherrscht nur die UART Funktionen. Mit welcher 
Taktfrequenz soll der MEGA8 denn laufen. Bei den Direktiven sind auch 
noch einige Fallen drin:
.equ status=0x19 ???
Gast #33567
Lesenswert?
• ▲
▼
Die neuen Megas haben teilweise Register die nicht im normalen I/O 
Bereich liegen. Die können nicht mit den entsprechenden I/O Befehlen 
angesprochen werden sondern man muß andere Befehle verwednen. Welche 
Register jetzt aber bei welchem Controller mit welchen Befehlen 
angesprochen werden müssen weiß ich jetzt nicht auswendig

Gruß
Markus
Gast #33569
Lesenswert?
• ▲
▼
@mmerten

der Mega8 läuft bei mir mit 16 MHz. Das Problem ist halt, dass ich am 
Pin TXD kein Signal bekomme. Meiner Meinung nach kann ich die Register 
UBRRH und UCSRC nicht mit verschiedenen Werten beschreiben. Auch wenn 
ich den Inhalt der beiden Register über den Simulator auslese, sind 
beide Werte stets gleich? Ich weiss nicht, was ich noch tun kann.
Gast #33571
Lesenswert?
• ▲
▼
Hallo,

Als Ergänzung zum obigen Text sei das Manuel S.148/149 zu empfehlern.

Schreiben:
out UBRRH, 0b0000xxxx
out UCSRC, 0b1xxxxxxx
             x = Bit beliebig
             0 = Bit muss 0 sein
             1 = Bit muss 1 sein

Lesen:
in  R16, UBRRH
in  R16, UCSRC

Um UCSRC zu erhalten muss das I/O Register zweimal hintereinander 
gelesen werden.
Gast #33573
Lesenswert?
• ▲
▼
@daniela
Das Problem ist nicht der UART sondern fängt schon hier an:
.equ      status=0x19  ????
Du solltest zuerst einmal der Timer-Routine Aufmerksamkeit schenken, die 
ja wohl "flag gesteuert" im sekundentakt das "Sekunden-Register" über 
den UART versenden soll.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.