Forum: Mikrocontroller und Digitale Elektronik Widerspenstige Serielle (Mega168)


von TomB (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

hat vielleicht jemand ein Oszillogramm eines Datenbytes,
ganz normal transferiert mit 8N1 über eine AVR-UART?
Bislang hatte ich mit seriellen Übertragungen kein Problem
und selbst diesmal funktioniert immerhin ein Bootloader via
UART- aber dann -> siehe Bild. Ist es normal dass so ein
schmaler Impuls (erreicht 5V Level) die Übertragung einleitet?
Und dann dieses komische Impuls-Doppel kurz vor Ende.
Jedenfalls funktioniert prompt der PC-Empfang nicht-
und ich bin mit meinem Latein am Ende.

Tom

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Es ist nicht normal.

Der Ruhepegel auf einer TXD-TTL Leitung ist 5V.
Das Startbit zieht den Pegel von HIGH nach LOW.

Das sehe ich in deinem Bild überhaupt nicht. Hast du vielleicht einen 
Pulldown oder einen anderen Verbaucher an der TXD-Leitung? Also die 
klassische Frage nach dem Schaltplan...

Tipp: Bei solchen Fragen ist es nützlich, wenn man als Datenbyte 
bekannte Bitmuster sendet und versucht diese Bitmuster im Oszillogramm 
wieder zu finden.

RS232

von TomB (Gast)


Lesenswert?

Ja, ich werde mal nur ein einziges Byte senden
und das noch mal mit meinem Oszi unter die Lupe
nehmen.

Das Übertragen von Daten vom PC zum Controller
funktioniert übrigens problemlos, nur wenns ums
Senden von Daten geht stehe ich nach wie vor
vor einem Mysterium. Am PC kommt nur Müll an.
Langsam glaube ich schon fast an einen Serienfehler
des Mega168 :) Eine ähnliche Schaltung mit Mega48
(gleiche Soft) funktioniert nämlich, zwischengeschaltet
ist jetzt nur noch das RS232-Interface. Da habe ich aber auch
schon mehrere und mit unterschiedlichen Maxxen probiert.

Tom

von TomB (Gast)


Lesenswert?

P.S. Zum Schaltplan gibts nicht viel zu sagen- RX/TX sowie der PC hängen 
an der Standardbeschaltung des MAX232, nichts weiter.

von Karl H. (kbuchegg)


Lesenswert?

TomB schrieb:

> Langsam glaube ich schon fast an einen Serienfehler
> des Mega168 :) Eine ähnliche Schaltung mit Mega48
> (gleiche Soft) funktioniert nämlich,

Hmm.
Ein gern gemachter Fehler ist die Annahme, dass alle Bits in den 
Steuerregistern an den gleichen Stellen sitzen. Solange man immer nur 
auf einem bestimmten Typ arbeitet, wirkt sich das nicht aus. Sobald man 
aber den Typ wechselt, kommt es zu seltsamen Phänomänen. Besonders die 
vermeintlich clevere Zusammenfassung der Konfigurationsbits in eine 
Hex-Zahl präsentiert sich dann alles andere als clever.


Schon mal in die Richtung geforscht?

von TomB (Gast)


Angehängte Dateien:

Lesenswert?

Zumindest dran gedacht. Lt. Datenblatt ist der Unterschied zwischen 
Mega48-168 außer den Speichergrößen doch nur der rjmp- bzw. jmp-Befehl 
in der Interrupttabelle, soweit mir bekannt !?

Hier übrigens noch ein Bild davon. Ist eine kleine Live-Anzeige + 
Datenlogger für serielle Daten. Wenn es mir irgendwann gelingen sollte, 
Daten unbeschädigt raus zu senden kommt das Projektl in die 
Codesammlung, versprochen :)

Tom

von Spezi (Gast)


Lesenswert?

> Zum Schaltplan gibts nicht viel zu sagen- RX/TX sowie der PC hängen
> an der Standardbeschaltung des MAX232, nichts weiter.

Wie ist der Controller getaktet? Für UART-Kommunikation ist ein Quarz 
(am besten Baudratenquarz) eigentlich Pflicht ...

von TomB (Gast)


Lesenswert?

Getaktet mit 14,7456 MHz Quarz, im Baudratenregister steht die 95 für 
9600er
Geschwindigkeit. Wiegesagt, beim Empfang gibts kein Problem.

von Uwe N. (ulegan)


Lesenswert?

Wenn ich das Oszillogramm richtig interpretiere, schickst du da 8 Byte. 
Das erste und das letzte sind 0x01, die anderen 0x00. Vor und nach der 
Übertragung ist der Transmitter abgeschaltet und es wird Low-Pegel 
ausgegeben, eben das, was im PORT-Register steht und nicht der 
Stop-Pegel.
Oder die Tx-Leitung wird zum Input und hat einen Pull-Down.
Die kurzen Peaks sind die Stop-Bits! Am Anfang wird der Transmitter 
angeschaltet, kurz Stop-Pegel ausgegeben und dann das erste Byte 
ausgegeben. Also ein Low-Startbit, Bit0=1 und dann Nullen.
Falls es das ist, was du schicken möchtest, ist alles in Ordnung, bis 
auf das Abschalten des Transmitters.

von TomB (Gast)


Lesenswert?

"Abschalten des Transmitters" - Danke, das war das Stichwort!
Den hatte ich im UDR-Empty Interrupt mit Beendigung dessselben
gleich mit ausgeknippst! Interessant daß das bisher die UART-
Kommunikation auf TTL-Ebene (in erwähnter Mega48 Schaltung)
nicht beeinträchtigt hat- die Übertragung über ein RS232-Interface
dafür um so mehr.

Tom

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.