Forum: Mikrocontroller und Digitale Elektronik Probleme mit UART


von Herbert G. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

bin noch Anfänger und hab mir die Testschaltung zum Empfang von Daten 
via Uart aufgebaut(nach dem Schaltplan aus den Tutorial).
Leider funktioniert es nicht und ich bin nicht dahinter gekommen warum.
Hab das Programm mit yaap in den Controller(mega8) geschrieben, meine 
Testschlatung mit dem MAX 332 aufgebaut und alles verkabelt. Leider wird 
im Hyperterminal absolut nichts angezeigt. Eigentlich sollte ja das Wort 
'Test' in einer Endlosschleife übertragen werden.

Vielleicht hab ich einen Fehler in meiner Schaltung.

Kann sich vielleicht mal jemand mein Platinenlayout(im Eagle-Format) 
ansehen und gegebenfalls bitte korrigieren?
Vielleicht liegt einfach da schon der Fehler!
Ich stehe jetzt jedenfalls irgendwie auf der Leitung-


wäre sehr dankbar, um hilfe!

von Steffen Burr (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Herbert,

deine Schaltung ist falsch - das kann so nicht funktionieren.
Der Denkfehler liegt in der Durchnummerierung (am besten das Bild im 
Attachment anschauen).

Du hast also auf der rechten Seite des Chips falsch herum 
durchnummeriert.

Viele Grüße
Steffen

von Herbert G. (Gast)


Lesenswert?

Hallo Steffen!

danke, da hätte ich wohl lange rumrätzeln können, wo der Fehler liegt. 
Werde die Schaltung verändern und hoffe, dass es dann funktioniert!

von Steffen Burr (Gast)


Lesenswert?

Jo, kein Problem.
Falls sie immer noch net funktionieren sollte, einfach nochmals melden.

von Herbert G. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Hab jetzt das Platinenlayout korrigiert, die Schaltung nochmals 
aufgebaut und leider funktioniert noch immer absolut nichts!
Hab zur Kontrolle mein verändertes Layout nochmals angehängt!
Könnte es vielleicht sein, dass der Max232 defekt ist?

von Steffen Burr (Gast)


Lesenswert?

Hallo Herbert,

hab deine Schaltung gerade nochmals überprüft. Das Layout ist richtig 
so, das sollte funktionieren.

Möglich wäre, dass der Max232 durch deine falschen Versuche 
kaputtgegangen ist. Vielleicht hast du noch einen Ersatzchip?

von Herbert G. (Gast)


Lesenswert?

Hallo Steffen,

danke für deine schnelle Antwort! Es ist echt zum Verzweifeln. Alles hat 
bis jetzt geklappt, nur die Sache mit dem UART nicht.
Ja, hab noch einen Max232 als Ersatz, jedoch hatte ich auch den schon 
für "falsche" Versuche eingesetzt und kann darum nicht sicher sein, ob 
er nicht auch kaputt ist.

Jedefalls hab ich mal den Max232 ausgetauscht und es tut sich noch immer 
nichts.

Hab mal nochmals alle Lötstellen und Leiterbahnen überprüft, da sollte 
alles ok sein.

Die Kondensatoren scheinen auch richtig gepolt zu sein.

Die Spannungsversorgung +5V ist da.

Das Kabel zur Seriellen Schnittstelle ist das korrekte und sollte auch 
ok sein, da ich es erst neu gekauft hab.

Habe auch mal eine anderen COM-Port probiert, auch nichts!

Im Hyperterminal heißt es zwar, dass angeblich eine Verbindung 
hergestellt wurde, aber es tut sich nichts!

Hab mal einen Reset am Mega8 ausgefürt, den Controller gelöscht und das 
Programm nochmals einprogrammiert. Hat aber nichts genützt.
Das Programm aus dem Tutorial ist ja wohl auch korrekt.
Hab AVR-Studio 4.07 verwendet, um das Programm zu assemblieren.

Alles andere hat mit bis jetzt funktioniert.


Ratlose Grüsse

von Steffen Burr (Gast)


Lesenswert?

Hallo Herbert,

du hast die Platine geätzt? Kannst du vielleicht mal n Foto von der 
Platinenunterseite posten?

Das Tutorial funktioniert so - ich habs selbst daran gelernt. Hatte 
keine Probleme. Habe allerdings mit dem 4433 gearbeitet.

Ich nehme an die Verbindung zum uC stimmt auch (kein TXD / RXD 
vertauscht) !?!

Hast du ein Oszi, mit dem du mal schauen kannst, ob sich auf den 
Übertragungsleitungen überhaupt was tut?

von Herbert G. (Gast)


Lesenswert?

Hallo Steffen,

ja, ich hab die Platine geätzt und chemisch verzinnt. Aber von daher 
scheint alles ok zu sein.
Ich hab mal versucht mit meiner Webcam ein Bild von der 
Platinenunterseite zu machen, allerdings war die Qualität so schlecht, 
dass es sich nicht lohnt dieses zu posten.
Ja, die Verbindung zum uC stimmt.
Hab leider kein Oszi.
Aber das Programm im Tutorial wurde umgeschrieben für den Mega8, da sich 
dort einiges am UART geändert hat.
Vielleicht is da ein Fehler?

von Herbert G. (Gast)


Lesenswert?

nur hab ich statt einem 4Mhz Quarzoszillator(wie im Tutorial) ein 8 Mhz 
verwendet. Aber das dürfte bei der Anwendung des UART wohl egal sein? 
oder?

von Steffen Burr (Gast)


Lesenswert?

Aha, hier liegt das Problem.
Wenn du einen 8 MhZ Quarz verwendest musst du das Prog entsprechend 
anpassen.

.equ CLOCK = 4000000

Aus dieser Zeile einfach
.equ CLOCK = 8000000
machen - dann sollte es aber eingentlich funktionieren ...

Viele Grüße
Steffen

von Herbert G. (Gast)


Lesenswert?

Hallo,

leider war das wohl nicht das Problem bzw. war das nicht das einzige, 
mit dem falschen Takt im Programm.
Hab jetzt alles probiert, hab sogar testweise mal ein 4433 verwendet und 
das alte UART Programm aus dem Tutorial.
Leider geht immer noch nichts.
Scheinbar ist wohl der Max232 doch kaputt.
Muss jetzt erst schauen, wo ich einen neuen Max232 herbekomme, um alles 
weitere zu testen.
Danke für deine Hilfe.

von Steffen Burr (Gast)


Lesenswert?

Schade! Dann wirds wohl am 232 liegen, glaub ich auch ...

Viele Grüße
Steffen

von Herbert G. (Gast)


Lesenswert?

wollen wirs hoffen. werd mich auf alle fälle mal nochmal melden sobald 
ich nen neuen max232 hab und dir sagen, ob dann geklappt hat. kann aber 
noch etwas dauern...
viele grüsse

von thkais (Gast)


Lesenswert?

Um die Funktion des 232 zu prüfen kannst Du folgendes machen:
An Pin 3 sollte (gegen Masse, Pin 15) eine positive Spannung von ca. 10V 
anliegen. An Pin 6 eine negative Spannung von -10V. Ist dies nicht der 
Fall, dann ist die Ladepumpe (die aus 5V +/- 10V generiert) defekt. Ohne 
mir die Schaltung angesehen zu haben: Hast Du die Elkos richtig gepolt? 
Gerne wird der an Pin6 zu Masse verkehrt eingebaut.

von Herbert G. (Gast)


Lesenswert?

ja, die elkos sind richtig gepolt. Also beim nachmessen der Spannungen 
am max232 direkt in der schaltung bekomme ich bei Pin3 +2,6 V und bei 
Pin6 -8,23 V

von Thorsten (Gast)


Lesenswert?

Hi Hebert

leg dech einfach mal eine Spannung von -10V oder +10V an
die Empfangsseite des RS232 und messe auf der TTL Seite den Pegel. Du 
solltest dann 5V bzw. 0V messen können.
Dann solltet du auf der TTL Seite 0V und 5V anlegen und
auf der RS232 Seite die 10V und die -10V messen.
Wenn das nicht der Fall ist, ist der Chip kaputt oder irgendwo
ist ein Kurzer.
Viel Glück

mfg Thorsten

von Claus Krause (Gast)


Lesenswert?

Hallo Herbert,

sofern der UART softwaretechnisch korrekt angesprochen wird, liegt es 
uU. am Hyperterm. Es ist dafür berüchtigt... Als Alternative kann ich 
mttty empfehlen.

Wichtig wäre auch, wenn kein Hardware Handshake gebraucht wird, selbiges 
im Terminalprogramm auszuschalten (im mttty auf "Flow Control..." 
clicken und alles disablen).


Gruß,
Claus

von Herbert G. (Gast)


Lesenswert?

Hallo an alle!

Danke für eure Tips! Leider hab ich schlechte Nachrichten, hab heute 
einen neuen Max232 eingebaut und es funktioniert noch immer nicht.
Außerdem bin ich dann extra mal an den Com-Port von einem anderen PC 
gegangen und dort hat auch nichts funktioniert. Auch andere 
Terminalprogramme als das Hyperterminal hab ich probiert. Jetzt weiss 
ich aber echt nicht mehr weiter.
Könnte mir jetzt nur noch vorstellen, dass das Kabel einen "Macken" 
haben könnte. Oder was meint Ihr?

von Herbert G. (Gast)


Lesenswert?

hab das Kabel mal durchgemessen scheint auch ok zu sein.

von Steffen Burr (Gast)


Lesenswert?

Es darfd sich bei dem Kabel nicht um ein gekreuztes handeln - hast du 
das schon mal nachgeprüft? (also kein Nullmodemkabel) ...

von Herbert G. (Gast)


Lesenswert?

ja, hab ich. ist kein nullmodemkabel

von Herbert G. (Gast)


Angehängte Dateien:

Lesenswert?

nur um mich nochmals zu versichern.

Mein Platinenlayout (Eagel Datei im Anhang) ist also definitiv richtig 
so?

Wollte nur nochmals Fragen, um sicher zu sein, dass der Fehler nicht an 
einer falschen Schaltung liegt.

Könnte das Problem auch am IC-Sockel des Max232 liegen? Hab keine 
Präzisionsfassung nicht, dass der IC keine richtige Verbindung mit dem 
Rest der Schaltung hat?

von thkais (Gast)


Lesenswert?

Wie schauts an Pin 3 und Pin 6 aus?
Die +2,6V sind definitiv nicht in Ordnung, die -8,23V wären gerade noch 
OK.

von Herbert G. (Gast)


Angehängte Dateien:

Lesenswert?

@thkais

wird wohl am Besten sein, wenn ich mir nochmal die Platine ätze und die 
komplette Schaltung nochmals neu aufbaue.

Hab mal das Platinenlayout nochmals als GIF angehängt. Schau bitte mal 
kurz rein, die Layout müsste doch richtig sein oder?

von Herbert G. (Gast)


Lesenswert?

könnte es nicht doch sein, dass das serielle Kabel an allem Schuld ist? 
War nur ein recht günstiges Kabel. Vielleicht sollte ich mal ein Kabel 
mit guter Abschirmung verwenden, um die Schaltung mit dem COM-Port des 
PC zu verbinden.

von tom (Gast)


Lesenswert?

der externe osszilator auch eingeschaltet?

von Herbert G. (Gast)


Lesenswert?

ja, externer oszi ist aktiviert. Ausserdem hab ich ja bei meinem 4433 
dasselbe Problem.

von thkais (Gast)


Lesenswert?

Ahh, ja, als GIF gehts schon besser....
Mir fällt da etwas auf: Der Elko von Pin2 geht mit (-) an die +5V. Der 
sollte besser an GND angeschlossen werden.
Genauso der Elko, der mit (-) an Pin 6 dranhängt: Im GIF hat die andere 
Seite des Elko keine Verbindung zu irgendwas. Der (+)-Pol dieses Elkos 
auch an GND anschließen.
Bevor Du den Fehler woanders suchst: Erst die Spannung, wie oben 
beschrieben, an Pin 2 und Pin 6 checken. Wenn die nicht stimmt, kanns 
nicht funktionieren.

von Herbert G. (Gast)


Lesenswert?

doch der Elko an Pin6 hat eine Verbindung zn GND, ist nur im GIF nicht 
so gut zu erkennen.
Warum der Elko an Pin2 besser an GND anschließen? Das is mir jetzt nicht 
ganz klar.

von thkais (Gast)


Lesenswert?

Weil der Pin 2 die +10V bereitstellt. Wenn Du den Kondensator von +10V 
an +5V anlegst, hast Du nur 5V Differenz, der Kondensator hat einfach 
eine geringere Energiemenge. An Masse angelegt ist es besser, außerdem 
wird das im Datenblatt auch so angegeben.
Bevor Du eine neue Platine ätzt, probiers mal mit Lochraster oder einem 
Steckboard. Macht weniger Arbeit, falls doch noch etwas zu ändern ist.
Ich habe gerade mein Layout nicht zur Hand, heute abend poste ich mal 
eines.

von Herbert G. (Gast)


Lesenswert?

ok, danke! vielleicht sollte ich eventuell auch mal die Werte der 
Kondensatoren verändern? Ich hab wie hier im Tutorial 22µF verwendet. Im 
Datenblatt werden glaub ich 1µF angegeben.

von Steffen (Gast)


Lesenswert?

Noch mal zum Kabel:

Pin13 des MAX232 ist R1In und geht auf Pin2 der Sub-D Buchse also 
gleiche Belegung wie beim PC. Dann braucht man doch ein Nullmodemkabel.
MfG
Steffen

von thkais (Gast)


Lesenswert?

Ich finds einfach ums verrecken net mehr - irgendwo in den Tiefen der 
Festplatte muß es doch sein.....
Ich habe aber Dein Layout nochmal mit nem Datenblatt gegengecheckt. Wenn 
Du Pin 11 an TXD und Pin 12 an RXD angeschlossen hast, ist (bis auf die 
Sache mit dem Elko) alles O.K. Die 232 sind mit den Kondensatoren nicht 
so Pingelig, ich habe meistens 1uF dran, aber zumeist laufen sie sogar 
mit 100nF.
Dein Kabel kannst Du ganz einfach mit einem Durchgangsprüfer überprüfen, 
es sollte 1:1 durch geschleift sein (Also Pin2 an Pin2, Pin3 an Pin3 
usw.)

Geh doch mal ganz analytisch vor, um den Fehler einzugrenzen:

1.
Bei einer 9-pol. SUB-D Buchse Pin 2 und 3 brücken und direkt auf den 
COM-Port des PC stecken. Nun sollte jedes Zeichen, das der PC sendet, 
sofort zurückgesendet werden. Falls nicht: Falsche Schnittstelle, 
COM-Port evtl. defekt.
2.
Kabel an PC anschließen, die "Blind-Buchse" ans Ende des Kabels. Ging es 
bei 1 und jetzt nicht, isses das Kabel.
3.
Kabel an Adapter anschließen, Spannung ans Adapter und Pin 11 und 12 
brücken (ohne Controller). Spannung an Pin2 und 6 checken (s.o.). Gings 
vorher und jetzt nicht, isses die Adapter-Platine.
4.
Nun den Controller anschließen. Wenns vorher ging und jetzt nicht, isses 
der Controller oder die Software.

Ist mir auch schon so gegangen, Tagelang einen Fehler gesucht und dann 
wars ne kalte Lötstelle. Der Teufel steckt im Detail.

von kutschenegger (Gast)


Lesenswert?

@Herbert
Nur mal so nebenbei: Man sollte auch die Fuse-
bits checken.Der Takt muss vom Quarz kommen und nicht
vom internen Oszillator. Sonst macht jedes Uart Macken.
Prüfen kannst du das, indem du einfach mal den Quarz
abklemmst und dir zB. über eine LED anschaust, ob der
Prozi noch läuft. Sollte er natürlich dann nicht !

Thema LED: ist schon ganz praktisch für Monitorzwecke:
(hab mir deinen Plan noch nicht angesehen, gehe aber
davon aus, dass du keine als monitor Verwendest).
Ich lasse mir über verschiedene Lichtzeichen der LED
anzeigen, ober der Prozi läuft, wann er etwas sendet
und ob er was empfängt. Das ist dann die einfachste
Möglichkeit, die Software zu testen.

@ Steffen:

Wann nehme ich nun ein NUllmodemkabel und wann nicht ?
Das würde mich mal interessieren. Hängt das nur davon
ab, ob die Rx/Tx vertauscht sind ??

von Steffen (Gast)


Lesenswert?

Ein Nullmodemkabel (gekreuzt 2--3 3--2 ) brauche ich, wenn die Belegung 
des Steckers oder der Buchse am MC mit der des PC´s identisch ist.

Bei dem 9-poligen Stecker am PC ist Pin2 RXD und Pin3 TXD. Mit der oben 
gezeigten Schaltung muss RXD(PC Pin2) mit T1Out (Max232 Sub-D Pin3) und 
TXD(PC Pin3) mit R1In (Max232 Sub-D Pin2) verbunden werden. Also ein 
gekreuztes Kabel.

Achtung, wenn am Kabel eine Buchse und ein Stecker angeschlossen sind. 
Die Belegung ist dann gespiegelt, was schnell zu Verwechslungen führen 
kann.

Ein 1:1 Kabel hat meist einen Stecker und eine Buchse. Ein 
Nullmodemkabel (gekreuzt) hat meist zwei Buchsen.

MfG
Steffen

PS: Masse (Pin5) nicht vergessen.

von Marc (Gast)


Lesenswert?

Woher kommt denn die Weisheit das der Takt vom Quarz kommen muss und 
nicht vom internen Oszillator?
Ich habe in einigen Schaltungen gar keinen Quarz drinnen, verwende die 
UART und das funktioniert ohne die geringsten Probleme!

von Herbert G. (Gast)


Lesenswert?

Hallo!

ja, der externe Oszi ist aktiviert. Korrekt, LEDs für Monitorzwecke hab 
ich bis jetzt in meiner Schaltung keine vergesehen.

@thkais
Hab jetzt an einer Buchse Rx und Tx gebrückt und auf das Kabel 
aufgesteckt.
Was ich jetzt über ein Terminalprogramm an Zeichen sende(mit Terminal 
1.9b von Br@y++), kommt wieder an den PC zurück d.h. das Kabel ist wohl 
definitiv ok. Es muss also wohl doch an der Adapterplatine liegen.
Werde mir jetzt nochmals die Platine vornehmen.

von Steffen (Gast)


Lesenswert?

Ich tippe trotzdem noch auf das Kabel. Der Test mit dem Brücken sagt nur 
aus, das der PC funktioniert. Wenn es das falsche Kabel ist, dann geht 
trotzdem nichts.

Wie schon mal von mir gesagt es muss ein gekreutztes Kabel sein nicht 
wie oben behauptet ein 1:1 Kabel.

Was ist es jetzt eigentlich für eins? Hat es zwei Buchsen oder eine 
Buchse und einen Stecker?

MfG
Steffen

von Steffen (Gast)


Angehängte Dateien:

Lesenswert?

Hab mir gerade das Board noch mal angeschaut. Eingezeichnet ist eine 
Sub-D Buchse also ist das Kabel wenn´s ein Standartkabel ist 1:1 dann 
funktiniert das nicht.

von Steffen Burr (Gast)


Lesenswert?

Hab gerade mein Kabel mal durchgemessen. Ist ein 1 zu 1 Kabel. Ich hab 
an meiner Schaltung eine Buchse, an die ich an die Lötstellen wie 
aufgedruckt an 2 TXD und an 3 RXD angeschlossen hab. Dann hab ich ein 
Verlängerungskabel mit der Steckerseite an meiner Schaltung und der 
Buchsenseite an meinem PC. Und bei mir funktioniert das einwandfrei seit 
dem ersten Versuch ...

von Herbert G. (Gast)


Lesenswert?

@Steffen

Ich glaub du hast Recht! Da ist wohl der Fehler. Ich hab eine Buchse 
eingezeichnet.

von Steffen (Gast)


Lesenswert?

OK, schlagt mich.

Ich nehme alles zurück und behaupte das Gegenteil. Die Buchse ist in der 
Schaltung richtig angeschlossen. Ich hab beim ersten mal anschauen die 
Pins verdreht.

Asche auf mein Haupt.

MfG
Steffen

von Herbert G. (Gast)


Lesenswert?

ich glaub, ich brauch dich nicht zu schlagen g

Ich hab einen Sub-D Stecker. Eingezeichnet ist aber eine Buchse

von Steffen (Gast)


Lesenswert?

Noch mal zum Test der Schaltung, wenn E$7 (Verbindung zum MC) gebrückt 
wird, und der Test genauso funktioniert wie mit dem Kurzschlussstecker 
auf dem Kabel, dann ist die Schaltung auf jeden Fall OK und der MC ist 
irgendwie falsch angeschlossen.

MfG
Steffen

von Steffen (Gast)


Lesenswert?

Na dann sollte sich das Problem ja gelöst haben.
Aber mach dir nix draus das ist mir auch schon passiert und ich hab 
stundenlang gesucht.

MfG
Steffen

von Herbert G. (Gast)


Lesenswert?

hoffen wir, dass das jetzt der ganze Fehler war. Leider werd ich es wohl 
erst morgen probieren können. Wer mich aber auf alle Fälle nochmal 
melden. naja, ich mach mir zwar eigentlich nichts draus, aber komme mir 
trotzdem schon vor wie ein idiot.

von Herbert G. (Gast)


Lesenswert?

hab es nicht lassen können und habe heute doch noch schnell ne neue 
Platine geätzt(gleich zwei sogar, um genau zu sein).
Siehe da ... es funktioniert und ganz ohne Probleme!!! Hurra, der UART 
funktioniert g

Das ganze Problem war der Layoutfehler mit der Buchse bzw. dem Stecker.

Ich möchte mich nochmals bei allen Leuten hier aus dem Forum für die 
Unterstützung bedanken.
Insbesondere geht mein dank an: Steffen u. thkais aber natürlich auch an 
alle anderen.
Vielen dank! Leute ihr seit einfach spitze!

von Steffen Burr (Gast)


Lesenswert?

Hallo Herbert,

freut mich, dass wir das Problem gelöst haben.

Viele Grüße
Steffen

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.