Atmega 162-USART funktioniert nicht mit Parity:none

OP #1823791
Lesenswert?
• ▲
▼
Hallo zusammen,

ich teste gerade die USART Schnittstellen indem ich mit DockLite über 
die RS232 Schnittstelle Daten sende, diese im SRAM des AtMega speichere 
und wieder ausgebe.
Dabei ist mir aufgefallen, dass wenn ich mit Parity "mark" sende alles 
korrekt funktioniert: der String wird gesendet und genauso wieder 
empfangen.
Stelle ich das Parity auf "none" kommt nichts zurück. Habe keine Ahnung 
wo mein Fehler liegen könnte. Mein Code sieht folgendermaßen aus:

Initialisierung der USART:
1
;*******-->USART0(DockLite->AtMega)  
2

3
ldi   temp, HIGH(UBRR_VAL)
4
out   UBRR0H, temp
5
ldi   temp, LOW(UBRR_VAL)
6
out   UBRR0L, temp
7
;8 Bit Übertragung; keine Parity Bits (UPM00=0)
8
ldi     temp, (1<<URSEL0)|(1<<UCSZ00) |  (1<<UCSZ01)    
9
out     UCSR0C,temp    
10

11
ldi   temp, (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0)
12
out   UCSR0B,temp

Ausgabe der im SRAM gespeicherten Daten:

1
send_to_docLite:
2
  ldi     YH,HIGH(sdata)    
3
  ldi     YL,LOW(sdata) 
4
    
5
redo:
6
  ld    data, y+  
7
  cpi    data, 0x0D   ;markiert das Ende des Strings   
8
  breq    ende
9

10
wait2:
11
  sbis    UCSR0A,UDRE0          
12
                            
13
  rjmp    wait2
14
  out     UDR0, data         
15
  rjmp   redo
16
ende:
17

18
  ret

Ich hoffe das reicht euch an Code. Ich hoffe ihr habt Tipps oder 
Anregungen, da ich im Moment auf dem Schlauch stehe.

Gruß,
sharth
OP #1823821
Lesenswert?
• ▲
▼
Hallo,

ich habe den Fehler gefunden. Das Register UCSR0B wurde vorher nochmal 
überschrieben.
Verstehe das mit dem Mark-Parity noch nicht ganz. Welche Register sind 
zuständig um das Mark-Bit zu setzen? Sind es UPM0 und UPM1? Habe alle 
Varianten ausprobiert und bekomme es nicht hin.
Wäre nett wenn jemand eine Antwort darauf hat.

Gruß,

sharth

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.