UART empfängt Daten ohne Gegenstelle

OP #962496
Hallo Community,

ich habe nach dem Wechsel von einem ATMega16 auf einen ATMega32 ein 
UART-Problem (Lib von Peter Fleury), daß sich wie folgt äußert:

Datenempfang auch ohne angeschlossene Gegenseite (Datenmüll incl. 
Buffer overflows)
kein gezielter Datenempfang möglich (naja, manchmal schon).
kein Senden möglich.

Hardware (funktionierte mit dem mega16):
max232n mit AbblockC(schon ausgetauscht)
ATMega32, RXT testweise nun mit externem Pullup (100k)

Die Codesegmente sind im Anhang zu finden.


Hat von euch einer eine Idee, woran mein Problem liegen könnte?

Besten Dank schonmal,
Gruß
Christoph
Angehängte Dateien:
OP #962772
Danke ihr beiden,

habe leider kein Oszi zur  Hand. Wenn ich T1OUT vom Max auf Masse 
kurzschließe, verschwinden die Fehler (Aber neben den Fehlern 
verschwindet leider auch die Funktion; mit Kommunikation ist dann nix 
mehr).

Vorher war ein 16MHz Quarzoszi drin, damit gab es den gleichen Mist. Bin 
auf das Baudratenquarz gegangen, weil ich dies als Fehlerquelle 
ausschließen wollte.
OP #962922
Am Max liegt alles richtig an, soweit ich das überprüfen kann.

Habe noch alles nicht an der Buchse benötigtes abgeklemmt (Hatte 
irgendwie noch die Steuerleitungen an V+ des max232 gelegt; keine Ahnung 
warum...ist schon was her).

Nun ist das Verhalten ein anderes:
bei Anschluss an PC sendet der atmel mir unentwegt '\0'.
1
uart_putc((unsigned char) c);
(senden ist schon richtig; aber scheinbar bekommt er von irgendwoher 
genau die '\0')

Wenn ich das Kabel entferne, bekomme ich buffer overflows.
Senden (PC->atmel) kann ich immer noch nicht.
Persönliche Seite #962946
> Wenn ich T1OUT vom Max auf Masse kurzschließe, verschwinden die Fehler
> ...
> Am Max liegt alles richtig an, soweit ich das überprüfen kann.

Spätestens jetzt wäre das Bekanntgeben des Schaltplans und eines 
aussägefähigen Fotos des konkreten Aufbaus notzlich.

Hat der MAX232n Vcc und GND und korrekt angeschlossene 
Ladekondensatoren? Wie kommt das Signal PC seitig in den MAX232n - RX, 
TX und GND vorhanden?
OP #962988
Hier der Schaltplan und die Bilder.
Die rot gekreuzten Leitungen sind eben von mir 'per Hand' gekappt 
worden.
(sowohl im Schaltplan, als auch auf den Fotos markiert).

Die Platine ist zweiseitig beschaltet. Man kann auf der Vorderseite 
nicht alle Leitungen sehen. Habe aber nochmal entsprechend dem 
UART-Tutorial hier alles überprüft und für richtig befunden.
Die Ladekondensatoren sind entsprechend dem Datenblatt des Max 1µ. 
Allerdings keine Elkos.

Die Schaltung hat so mit einem ATMega16 schon korrekt funktioniert; weiß 
leider nichtmehr, ob auch mit der aktuellen Programmierung.



Seid nachsichtig mit mir ;-)
Es ist meine erste ausführliche Lötarbeit und meine erste selbst 
erstellte Platine.
Angehängte Dateien:
OP #962991
Rückseite

Danke für die Hilfe

edit:
Achja, ich vergaß zu sagen:
RxD und TxD sind im Schaltplan gekreuzt.
Da ich habe ein normales Kabel (kein Nullmodemkabel) verwende, habe ich 
sie entsprechend im Kabel zurück gekreuzt.
(War ein Fehler im Layout meinerseits, der im Kabel leichter zu beheben 
war).
Angehängte Dateien:
Persönliche Seite #963054
1/ Die korrekte Beschaltung mit einem 1:1 Kabel (kein Nullmodemkabel) 
zwischen PC und µC ist diese Verbindung:

AVR        MAX          DB-9 Buchse F  | 1:1-Kabel |  DB-9 Buchse M   PC
                                       | M       F |
======================================================================== 
=
TXD     T1IN/T1OUT         Pin2                             Pin2 
RXD
RXD     R1OUT/R1IN         Pin3                             Pin3 
TXD
GND                        Pin5                             Pin5 
GND

Wenn du auf der Platine an der DB-9 Buchse F fir Belegung von Pin2 und 
Pin3 getauscht hast, kannst du nicht mit einem 1:1 Kabel arbeiten.

Du müsstest in diesem Fall das 1:1 Kabel an einer Seite öffnen und die 
Verbindungen an Pin2 und Pin3 tauschen.

2/ Ich sehe in deinem Schaltplan (und den zu kleinen Fotos) keine 
Kondensatoren zwischen Vcc und GND bei den ICs (Atmega und MAX232).

3/
> Datenempfang auch ohne angeschlossene Gegenseite (Datenmüll incl.
> Buffer overflows)
> kein gezielter Datenempfang möglich (naja, manchmal schon).
> kein Senden möglich.

Was meinst du mit "Gegenseite" bzw. wo entdeckst du die 
Übertragungsfehler?
Hast du schon mal den Atmega32 entfernt und eine Brücke zwischen Pin14 
und Pin15 an der Fassung IC2 angebracht und dann vom PC aus probiert, 
was zu senden? Wenn die Verkabelung und der Anschluss des MAX232 i.O. 
ist, solltest du so ein Echo bekommen.
OP #963111
Hallo Stefan,
erstmal danke für deine ausführliche Antwort.

Stefan "stefb" B. wrote:

> Wenn du auf der Platine an der DB-9 Buchse F fir Belegung von Pin2 und
> Pin3 getauscht hast, kannst du nicht mit einem 1:1 Kabel arbeiten.
>
> Du müsstest in diesem Fall das 1:1 Kabel an einer Seite öffnen und die
> Verbindungen an Pin2 und Pin3 tauschen.

Ist genau so, wie du schreibst; An der Buchse Pin2 und Pin3 vertauscht, 
dafür in dem 1:1 Kabel auch an einer Seite Pin2 und Pin3 getauscht.

> 2/ Ich sehe in deinem Schaltplan (und den zu kleinen Fotos) keine
> Kondensatoren zwischen Vcc und GND bei den ICs (Atmega und MAX232).

Die Abblockkondensatoren habe ich tatsächlich im Schaltplan vergessen 
(Wie gesagt, war mein erster), dafür sind sie nachträglich auf der 
Rückseite der Schaltung zu finden.


> 3/
>> Datenempfang auch ohne angeschlossene Gegenseite (Datenmüll incl.
>> Buffer overflows)
>> kein gezielter Datenempfang möglich (naja, manchmal schon).
>> kein Senden möglich.
>
> Was meinst du mit "Gegenseite" bzw. wo entdeckst du die
> Übertragungsfehler?
> Hast du schon mal den Atmega32 entfernt und eine Brücke zwischen Pin14
> und Pin15 an der Fassung IC2 angebracht und dann vom PC aus probiert,
> was zu senden? Wenn die Verkabelung und der Anschluss des MAX232 i.O.
> ist, solltest du so ein Echo bekommen.

Ich habe an der Schaltung ein LCD-Display (das irgendwie auch fehlerfrei 
funktioniert. Hierüber lasse ich darstellen, was der UART empfängt.
Aktueller Stand ist:

Kein ser. Kabel an der Schaltung -> datenmüll am µC
Kabel an der Schaltung (und anderes Ende am PC/Hyperterminal) ->
nix am µC
nix im Hyperterminal;
Wenn ich was zum µC sende, kommen (manchmal!) '\0' in unterschiedlicher 
Anzahl zurück

Werde jetzt mal den atmel aus der Fassung nehmen und das Ganze mal mit 
der von dir vorgeschlagenen Methode testen.
Gebe dann sofort wieder Rückmeldung.
OP #963174
Problem gelöst:

Habe auf Stefans Anraten hin mal vom PC angefangen die Leitung 
gecheckt...

erster Fehler: der USb-RS232-Konverter war falsch eingestellt.
(da sich das Problem nicht besserte über die native rs232 habe ich hier 
bei der Problembeschreibung den Konverter außen vor gelassen).

zweiter Fehler: Max232 kaputt (beide getesteten, echt doof)


letzt läuft es (fast) perfekt.
Ab und zu werden befehle vom µC nicht verarbeitet, aber da es sich bei 
der UART nur um einen Testaufbau im System handelt 
(Prototypen-Datalogging), kann ich hier mit einem geeigneten Protokoll 
Abhilfe schaffen.

Vielen Dank nochmal allen, die sich des Problems angekommen haben.

Beste Grüße & ein schönes Wochenende,
Christoph

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.