Forum: Mikrocontroller und Digitale Elektronik S8515 vs mega8515 - UART


von Andi-H (Gast)


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

von Benedikt (Gast)


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...

von Andi-H (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.