mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Widerspenstige Serielle (Mega168)


Autor: TomB (Gast)
Datum:
Angehängte Dateien:

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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

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

Autor: TomB (Gast)
Datum:

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

Autor: TomB (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: TomB (Gast)
Datum:
Angehängte Dateien:

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

Autor: Spezi (Gast)
Datum:

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

Autor: TomB (Gast)
Datum:

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

Autor: Uwe Nagel (ulegan)
Datum:

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

Autor: TomB (Gast)
Datum:

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

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.