UART erfahrenen!

Gast #89638
Lesenswert?
• ▲
▼
Hallo,

also ich versuche jetzt schon seit 2 Wochen ne verbindung von meinem
ATmega8(in verbindung mit MAX232) zu meinem PC(Win2000) hin zu
bekommen, aber es will einfach nicht klappen.

Ich benutze dazu derzeit das testprog. zum senden eines textes ins
Hyper-Terminal, welches hier auf der Seite veröffentlicht ist. Die
kofiguration der Bautrate und Stopbits simmt auch. Befor ein neues
Zeichen gesendet wird soll ja mit sbis UCSRA,UDRE geprüft werden, ob
das nächste zeichen gesendt werden kann bzw. ob UDR empty ist. Mit
dieser zeile allerdings sendet er granicht's (gemessen). Lasse ich nun
diese Zeile weg und ersetze sie duch eine delay schleife, so sendet der
controller bzw. besser gesagt empfängt das Hyperterminal immer weiter
Euro zeichen.

Hat jemand ne ahnung, ich verzweifele nämlich so langsam daran.
Gast #89640
Lesenswert?
• ▲
▼
Hi,

lade Dir mal das komplette Atmel-Datemblatt für Deinen MC herunter. Da
gibt sowohl ain Assembler als auch in C Beispiele für die
Anfangskonfiguration, das Senden und das Empfangen. Diese Beispiele
gehen 100%ig!

Noch ein Tip: Erst das High-Byte beschreiben, dann das Low-Byte!

Sebastian
#89641
Lesenswert?
• ▲
▼
In meinem Bootloaderbeispiel ist eine UART mit drin, probiers mal aus.
Der Empfang ist über den Interrupt mit 256 Bytes gepuffert. Den
CRC-Code kannst Du rausschmeißen oder drinlassen.

getchar ist zum Empfang, putchar zum Senden.
Die beiden auskommentierten Zeilen unter uart_init müssen wieder
eingefügt werden.


Peter
Gast #89644
Lesenswert?
• ▲
▼
Hi,

ich hab n ähnliches Problem.

Ich empfange auch Daten mit dem Hyperterminal unter Win98se, aber das
sieht dann so aus:

&#128;xxüx<xÀxÀxx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128; 
&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xx 
üx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü 
&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xø 
x<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128; 
&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xx 
üx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü 
&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xø 
x<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128; 
&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xx 
üx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü 
&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xø 
x<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128; 
&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xx 
üx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü 
&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xø 
x<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128; 
&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xx 
üx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü 
&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xø 
x<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128; 
&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xx 
üx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü 
&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xø 
x<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128; 
&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xx 
üx<xÀxü&#128;xøx<&#128;&#128;xx&#128;xøx<&#128;&#128;xx&#128;xxxü&#128; 
xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#12 
8;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128; 
xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀ 
xü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128; 
xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#12 
8;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128; 
xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀ 
xü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128; 
xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#12 
8;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128; 
xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀ 
xü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128; 
xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#12 
8;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128; 
xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀ 
xü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128; 
xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#12 
8;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128; 
xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀ 
xü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128; 
xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#12 
8;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128; 
xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀ 
xü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128; 
xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#12 
8;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128; 
xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀ 
xü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128; 
xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#12 
8;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128; 
xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<xÀxü&#128;xøx<&#128;&#128;xxüx<

Sollte allerdings "Test!" heißen. (Code stammt vom Tutorialteil auf
dieser Seite)
Ich bin mittlerweile ratlos. Ich denk es ist was simples, aber ich komm
ned drauf.

ATmega8515,
4Mhz Quarz,
Baudrate 9600
LT1081 als MAX232 ersatz

Grüße
 Xandl
Gast #89645
Lesenswert?
• ▲
▼
@Xandl:

Hi,
das schaut so aus, als ob ein nullterminierter String nicht terminiert
ist, oder der Pointer nicht auf den String zeigt.

Falls Du einen Text so im Codesegment definierst:

Text:
.DB "Test!",0

dann musst Du den Pointer darauf so setzen:

ldi ZH,HIGH(2*Text)
ldi ZL,LOW(2*Text)

vergisst Du dabei das 2*... landest Du irgendwo und die Routine gibt so
lange aus, bis endlich ne Null in der Speicherzelle steht.

So far
Michael

Antwort schreiben

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.

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.