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...
Hallo, wenn du wirklich einen MAX232 eingesetzt hast sind die Kondensatoren zu klein. C1 - C4 = 1µF Gruesse Hans
@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 ^^
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.