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!
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
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!
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?
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?
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
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?
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?
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
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.
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
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.
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
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
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
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?
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?
@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?
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.
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.
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.
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.
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.
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
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.
@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 ??
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.
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!
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.
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
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.
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 ...
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
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
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.
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!