Hallo werte µC-Gemeinde
ich hatte gehofft, dass ich durch die große Anzahl an Threads zu meinem
Problem dieses lösen kann, aber leider will es immer noch nicht so wie
ich möchte.
Ich möchte eine USART-Verbindung realisieren, zwischen PC und einem
ATmega8. Das Ganze soll über ein RS232 Kabel laufen, und dafür ist eben
ein MAX232ECWE-Baustein in der Schaltung, dieser gibt mir aber sehr
seltsame Werte an.
Zum Testen hab ich den TXD-Pin (PD1) des µC einfach im
Zwei-Sekunden-Takt getogglet, um dann mit dem Multimeter die Spannungen
abzulesen, dabei kam raus:
V+ 4,3V
V- 0,4V
Vcc 5V
T1Out zwischen 0,3V und 0,6V wenn TXD HIGH war, 0,0014V wenn TXD LOW
war
Dazu muss ich aber noch sagen, dass schon der High-Pegel von TXD nur
3,4V war (obwohl ich den Mega mit 5V betreibe).
Mein Anliegen, mit dem ich mich nun an euch wende, ist also: Ist der
MAX232 hinüber, oder ist der Fehler eher in der Beschaltung zu suchen ?
Ich denke bis jetzt, dass es vielleicht doch an den Kondensatoren am MAX
hängt, die erscheinen mit unterdimensioniert. Seltsam erscheint mir
jedoch, dass der Pegel an meinem TXD-Pin einbricht, das deutet doch eher
auf einen Kurzschluss hin, oder ?
Noch ein paar allgemeine Infos - ich mache das alles im Rahmen eines
Praktikums, die Platine auf der das alles drauf ist, war schon fertig
und ich programmiere eigentlich nur noch den µC. Mein Arbeitsplatz ist
leider sehr spärlich eingerichtet, ich hab kein Oszi, keinen
Funktionsgenerator, nichtmal ein Netzteil steht hier, und für ein
Multimeter muss ich einen Kollegen fragen ob ich es mir leihen kann...
Meh..
Auf der Platine sind noch ein paar andere Bausteine drauf, aber die sind
nicht mit dem MAX232 verbunden, und ich weiß nicht ob ich die einfach so
zeigen kann. Deshalb hab ich das nicht mit abgebildet.
Zu meinem Wissenstand -> 3 Semester C, C++ und Assembler an der Uni und
ein kurzes Praktikum, in dem ich mit einem ATTiny gearbeitet habe, also
ich bin kein blutiger Anfänger.
Achso, eine Lötstation hab ich natürlich auch nicht. Deshalb wende ich
mich auch zuerst an euch, damit ich mein Problem eingrenzen kann und
dann nicht die Kollegen die ganze Zeit stören muss, sonst hät ich da
schon andere Kondensatoren + Blockkondensatoren drin.
Vielen Dank fürs lesen dieser Wand aus Text, ich hoffe das ich nichts
vergessen habe und mein Problem nachvollziehbar ist.
Grüße, Matthias
Einfachster Test: Verbinde den Max232 mit dem PC und auf der
Mikrocontroller Seite verbindest Du TxD mit TxD. Dann sendest Du mit dem
PC irgendwelche Zeichen und schaust, ob sie als Echo zurück kommen.
Die von Dir gemessenen pegel sind jedenfalls schrott. Entweder ahst DU
falsch gemessen, oder der Chip funktioniert nicht. Bist Du sicher, dass
er korrekt beschaltet wurde? Fehlt vielleicht die Stromversorgung VCC?
Die Beschaltung des Max232 ist so wie im Schaltbild oben, die Pins hab
ich gestern alle mit einem Multimeter durchgeklingelt, nachdem ich die
seltsamen Messwerte aufgenommen hab und mir schon dachte das da was
nicht koscher ist.
So, dann hab ich eben mit der Drahtbrücke rumgespielt. Danke für den
Tipp.
TXD und RXD am µC zu überbrücken bringt nichts, ebenso R1in und T1out
(gut, das die sich genau so Verhalten war zu erwarten, sind ja nur ein
paar Zentimeter Leiterbahn dazwischen). Da empfängt HTerm garnichts von
dem was ich sende.
Wenn ich T1out und R1in brücke, dann empfange ich Kauderwelsch (TXD und
RXD waren als Ausgang und mit Low-Pegel geschaltet). Immerhin ists immer
der selbe Kauderwelsch (aus "123\r\n" wird " 'L', 0xA6, 0xA6, 'H', 0xF8
"). Das selbe empfängt er, wenn ich die Brücke direkt am Stecker
anbringe, während die Kabel von der Platine noch dran sind. Auch ein
High-Pegel ändert nichts an der Ausgabe.
Ich habe mal noch spaßenshalber die Masse von Pin5 abgezogen, Brücke
steckt nach wie vor zwischen Pin2 und 3 am Sub-D9-Stecker. Jetzt
empfängt er bei der selben gesendeten Zeichenkette ein " 0x93, 0xD3,
'S', 'H', 0xF8 ".
Wenn die Platine keinen Strom bekommt (USB-Stecker also gezogen ist),
dann empfange ich auch wieder "123" ... phew, wenigstens das
funktioniert...
@Hans: Das bestätigt auch meine Vermutung (und mein Blick ins Datenblatt
^^), und das werde ich definitiv ankreiden. Ich kann nur nicht
einschätzen, ob mein Problem dadurch gelöst wird, oder eben nicht. Wenn
man das anhand meiner Angaben überhaupt einschätzen kann, ihr sitzt ja
leider nicht neben mir ^^
@Thomas: Hab ich erst auch gedacht, habe dann aber ein MAX232-Datenblatt
von TI gesehen. Die schalten C1 gegen Masse. Anscheinend (so ein paar
ältere Threads hier im Forum) wirkt sich das nur auf die Spannung, die
am Kondensator abfällt, aus. Wenn man gegen Vcc schaltet, dann kann die
Spannungsfestigkeit des Kondensators 5V niedriger ausfallen.
Im Maxim-Datenblatt (meiner hier ist von Maxim, hätte ich oben erwähnen
müssen, sorry) ist es allerdings gegen Vcc verschaltet.
Ich hab das schon bei meinem Ansprechpartner angeprangert, er meinte
dass dieses Bauteil hier immer so verschaltet wird (auch mit den
Kondensatoren), und es funktioniert. Aber in der nächsten Version der
Platine wirds berücksichtigt.
Solange V+ und V- fehlen und nicht bei +9V und -9V liegen (VDD/2 - 0,7V)
brauchst Du gar nicht weitermachen. Dann ist ein Kondensator defekt oder
der MAX ist hinüber.
Mit zu kleinen Kondensatoren stimmen die Spannungen im Leerlauf, brechen
aber bei Datenverkehr ein.
Wie C1 geschaltet wird ist einigermassen egal. Im einen Fall muss er 4V,
im andern 9V aushalten. Früher war das ein Preisunterschied, heute
können die alle 50V.
> Ich habe mal noch spaßenshalber die Masse von Pin5 abgezogen,> Brücke steckt nach wie vor zwischen Pin2 und 3 am Sub-D9-Stecker.> Jetzt empfängt er bei der selben gesendeten Zeichenkette ein " 0x93,> 0xD3, 'S', 'H', 0xF8 ".
Moment mal. Wenn Du eine Brücke zwischen Rxd und TxD baust (egal an
welcher Stelle in der Kette) musst Du die Leitungen zu anderen
Signalquellen unterbrechen. Sonst baust Du einen Kurzschluss.
Also z.B. verbindest Du direkt am 0 Poligen Sub-D Anschluss des PC die
Pins 2 und 3. Die ganze Schaltung klemmst Du aber ab (nicht nur die
Masse). Wenn Du dann im Terminal nicht das Empfängst, was Du gesendet
hast, ist dein PC defekt.
In den folgenden Zeichnungen ist // eine Unterbrechung.
Test, ob der PC funktioniert:
Das Terminal Programm muss zeigen, dass jhedes gesendete Zeichen als
Echo zurück kommt.
1
PC RxD o--<--+----//----<--o RxD Deine Schaltung
2
RS232 |
3
TxD o-->--+----//---->--o TxD
4
5
GND o-------------------o GND
Wenn das geklappt hat, dann Test ob der MAX232 funktioniert:
Das Terminal Programm muss zeigen, dass jhedes gesendete Zeichen als
Echo zurück kommt.
1
2
MAX232 Mikrocontroller
3
____ _______
4
| | | |
5
PC RxD o--<---| < |---<---+---//---<---| TxD |
6
RS232 | | | | |
7
TxD o-->---| > |--->---+---//--->---| RxD |
8
|____| |_______|
9
| |
10
GND o---------+--------------------------+-----o GND vom Netzteil
Wenn das geklappt hat, dann Test ob der Mikrocontroller funktioniert:
Das Test-Programm im Mikrocontroller prüft, ob jedes gesendete Zeichen
wieder empfangen wird. Ergebnis mittel Status-LED oder LCD Display
anzeigen.
1
2
MAX232 Mikrocontroller
3
____ _______
4
| | | |
5
PC RxD o--<---| < |---<---//---+---<---| TxD |
6
RS232 | | | | |
7
TxD o-->---| > |--->---//---+--->---| RxD |
8
|____| |_______|
9
| |
10
GND o---------+--------------------------+-----o GND vom Netzteil
Nichtsdesto Trotz sind die von Die gemessenen Spannung ganz unerwartet,
also muss irgendwo um den MAX232 herum auch noch etwas falsch sein.
Ups, okay. Ich dachte eben weil ich einen Kurzschluss mache stört der
Rest der Schaltung nicht >.>
Naja, also mein Rechner funktioniert, das kann ich problemlos
ausprobieren, bzw. habe ich problemlos probiert.
Ich werde mal sehen, wann ich mir einen Lötkolben ergattern kann, und
dann einen neuen Max232 mit C's versorgen und dann wie Stefan
beschrieben hat testen ob der richtig funktioniert. Ist das der Fall und
er spinnt nach dem Aufbau auf der Platine wieder rum, dann ist etwas an
der Platine faul.
Wenn der aktuelle Max232 erstmal runter ist, kann ich auch testen ob die
Signale richtig aus dem µC raus kommen. Beziehungsweise, ich kann auch
mal ihn durch testen, ob er so die vermutete Fehlfunktion hat.
Danke nochmals an alle für die Hinweise und Tipps. Ich war mir halt
unsicher, ob ich meine Ergebnisse nur falsch deute, und wollte nicht
wegen nichts angerannt kommen.
Ich meld mich dann spätestens noch mal, wenn ich alles ausgetauscht habe
(und es funktioniert ^^), in der Hoffnung das mein Max wirklich einen
Schlag weg hat.
Wenn das dann immer noch nicht funktioniert... hmm... naja, vielleicht
seht ihr dann etwas mehr von der Schaltung xD
Fragt nicht, warum es so lang gedauert hat, bis ich mich wieder melde...
Aber ich kann zufrieden sagen, dass der MAX defekt war. Ich habe die
Platine gerade wieder bekommen, und mein Prozessor spricht mit mir. Nun
muss ich ihm nur noch beibringen, mich zu verstehen.
Danke nochmal für die Hilfe und die Erklärungen ^^