www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega 162-USART funktioniert nicht mit Parity:none


Autor: Chris p. Chicken (sharth)
Datum:

Bewertung
0 lesenswert
nicht 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:
;*******-->USART0(DockLite->AtMega)  

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

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


Ausgabe der im SRAM gespeicherten Daten:

send_to_docLite:
  ldi     YH,HIGH(sdata)    
  ldi     YL,LOW(sdata) 
    
redo:
  ld    data, y+  
  cpi    data, 0x0D   ;markiert das Ende des Strings   
  breq    ende

wait2:
  sbis    UCSR0A,UDRE0          
                            
  rjmp    wait2
  out     UDR0, data         
  rjmp   redo
ende:

  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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>ich teste gerade die USART Schnittstellen indem ich mit DockLite über

Dann überprüfe mal die Einstellungen von Docklite.

MfG Spess

Autor: Chris p. Chicken (sharth)
Datum:

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

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.