www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik S8515 vs mega8515 - UART


Autor: Andi-H (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Irgendwie hab ich ein paar kleinere Probleme mit dem UART des Mega8515.
Einen Code, den ich für den AT90S8515 geschrieben habe, möchte ich nun
auf nem Mega8515 benutzen, hab das ganze versucht anzupassen, aber
irgendwie läufts nicht. Die PDF-Datei des Datenblatts zum Mega8515 kann
ich leider nicht komplett lesen, auf einigen Seiten erhalte ich ne
Fehlermeldung vom Reader. grrr....

Vielleicht könnt ihr mir helfen: was ist das mit dem synchron/asynchron
mode und was ist sonst noch alles anders zum alten S8515? Was muß ich
beachten, wenn ich einen alten S8515-Code auf nem neuen Mega8515 laufen
lassen will?

Ich hoffe, Ihr könnt mir helfen. Danke!

Gruß,
Andi

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau doch mal auf atmel.com da gibts ne Appnote mit den ganzen
Unterschieden. Und lad dir mal ne neue Version de Datenblatts runter,
vielleicht geht es ja dann...

Autor: Andi-H (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Danke für Dein Tip. Hab mir mal die Appnote durchgelesen, aber so
richtig schlau werde ich nicht dadurch. Hab leider jetzt keine große
Zeit mehr, mich näher damit zu beschäftigen, vielleicht kann mir noch
jemand schnell was dazu sagen:

Auf dem S8515 funktionierte der Code in folgender Weise perfekt:

----------------------------
(...)

StartWait:
   sbis USR, 7       ; Uart Byte empfangen?
   rjmp StartWait    ; *nein, warten...

   in rTemp, UDR     ; empfangenes Byte einlesen
   sbic USR, 4       ; Framing-Error?
   rjmp StartError   ; *dann Springe zur Fehlerbehandlung

   tst rTemp         ; erhaltenes Byte auf $00 prüfen

(...)
--------------------------------

Übersetze ich diesen Code für den Mega8515, sieht das so aus:

-------------------------------
StartWait:
   sbis UCSRA, 7     ; Uart Byte empfangen?
   rjmp StartWait    ; *nein, warten...

   in rTemp, UDR     ; empfangenes Byte einlesen
   sbic UCSRA, 4     ; Framing-Error?
   rjmp StartError   ; *dann Springe zur Fehlerbehandlung

   tst rTemp         ; erhaltenes Byte auf $00 prüfen

(...)
-------------------------------

In der Appnote zum Austausch des S8515 gegen den Mega-Typen steht jetzt
folgendes:

"
The Error Flags (FE and DOR) and the ninth daa bit (RXB8) are bufered
with the data in the receive buffer. Therefore the status bits must
always be read before the UDR Register is read. Otherwise the error
status will be lost.
"

Dementsprechend, wenn ich das jetzt richtig verstehe, heißt das, das
meine Fehlererkennung nicht mehr funktioniert? Oder was? Muß ich den
Code umbasteln, daß ich erst auf Fehler prüfe und dann das empfangene
Byte einlese?

Da es bei meiner Anwendung um einen DMX-Empfänger handelt und die
DMX-Reset-Erkennung nur zuverlässig funktioniert, wenn ein FE-Error
erkannt wird, könnte es ja daran liegen, wenn ich das oben stehende
richtig verstehe...

Kann das jemand bestätigen? Hat schonmal jemand nen 90S8515 gegen den
Mega8515 ausgetauscht und damit Erfahrungen gemacht?

ciao,
Andi

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.