PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zum MAX232



daniel.weber
06.03.2008, 17:29
Hallo ich habe die Grundschaltung aus dem wiki aufgebaut (https://www.roboternetz.de/wissen/images/6/65/Avrtutorial_grundschaltung_max232.gif) habe einen MAX232N verwendet.

Ich habe die Schaltung jetzt bestimmt das 100. mal überprüft, es stimmt alles auch die Bauteile sind in Ordnung, soweit ich das mit den Mitteln, die mir zur verfügung stehen prüfen kann.

Ich habe die Pins 15 u. 16 nicht vergessen ;)
---
Nun zum Problem:
Nachdem ich alles aufgebaut hatte habe ich ein kleines Testprogramm in den Mega32 geladen, um die Ausgabe zu testen.

Bascom Code:



$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1600000
$baud = 9600

Config Porta = Output


Print "Hallo wie gehts?"
Porta.1 = 1


Leider bekomm ich mit Telnet keinerlei Anzeigen :( woran könnte das liegen? Hab das IC schon ausgetauscht, weil ich dachte es wäre hin aber nichts, ändert nichts...

Habe leider nur ein Multi zum messen. Wie muss die Spannung an den einzelnen Pins sein? Vielleicht hilft mir das ja weiter. Bin hier echt am verzweifeln :(

deSilva
06.03.2008, 17:35
Daniel, das ist hier keine Zauberei, sondern alles so wie man denkt - oder denken sollte!

In einem MAX232 sind 2 invertierende Leitungstreiber und 2 ebenfalls invertierende Receiver drin. Das ist die simpelste Sache der Welt.

Also gib jedem von ihnen mal eine entsprechende Testspannung und guck was da rauskommt am anderen Ende... Ein Multimeter ist HERVORRAGEND dafür geeignet.

UND: DATENBLATT, DATENBLATT, DATENBLATT...

Zapo.
06.03.2008, 17:41
Fusebits auf ext Quarz eingestellt?

--> probiere doch mal einfach den internen Takt (8Mhz - 9600 Baud)

end am ende des Programms nicht vergessen!

am besten Terminal auf 9600 / 8 / N / 1 stellen und mal den print befehl in eine do:loop schleife setzten...

dann mit dem Multimeter messen das auch am richtigen PIN was gesendet wird (am Max232) auf der einen SEite +- 8V auf der anderen Seite 5V reichen aus...

funktionieren die Ladungspumpen an dem Max?
Osziloskop wäre sehr sinnvoll!(geht aber zur not auch mit dem trägen Multimeter!)

Rx/Tx muss natürlich bis die am Computer ankommen verdreht werden...

Zapo.

daniel.weber
06.03.2008, 19:00
Hallo,
also zuerst habe ich mal die Leitungen Rx/Tx getauscht, dann das Programm wie folgt angepasst:



$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 8000000
$baud = 9600

Config Porta = Output


Do
Print "test"
Porta.1 = 1

Loop

End


Dann auf internen Takt gestellt (8Mhz)

Nun bekomme ich in Telnet ab und zu Zeichen, leider keine lesbaren Zeichen und auch nur sporadisch (meistens nach anlegen der Spannung) wenn ich auf 4800 baut gehe, bekomme ich die ganze Zeit Zeichen (lauter U)

Die Spannung bei den beiden Ports zum Mega32 (also Pin 11 t1in und 12 r1out am MAX232) liegt bei 2.01 V zu Masse.

Bei T1Out (14) liegt eine Spannung von 3,55V zu Masse an.
Bei R1In (13) liegt -9,94 V zur Masse an.

-
wie kann ich überprüfen ob die Ladungpumpen funktionieren?
-
schonmal vielen Dank für die bisherige Hilfe.

Neutro
06.03.2008, 19:13
Hallo Daniel,

Wenn du wie im ersten Programmbeispiel einen 16MHz Quarz verwendest
(denke ich mir mal) dann musst du bei Crystal 16 mit 6 Nullen schreiben
und nicht mit 5 Nullen, den entsprechenden Fusebit auf ext. Crystal high freqeuz einstellen.
Mit dem internen Oszillator wird das meistens nix weil der zu ungenau ist.

daniel.weber
06.03.2008, 19:26
Hallo Neutro,
verwende einen 16 Mhz Quarzozi.
Den Fehler mit den Nullen habe ich gar nicht bemerkt und sofort geändert, bringt aber leider auch keine Abhilfe.

Es ist doch richtig, dass ich in Bascom das Fusebit auf ext. Clock stellen muss?

Zapo.
06.03.2008, 20:26
füge mal noch eine Wait 1 unten ein... mit 8 Mhz schickt dein Prozi viel zu schnell für deine Schnittstelle!!!!!!!!
(außerdem, warum setzt du den Ausgang nochmal = 1??? --> lass das weg!)

also
do
print "hallo"
wait 1
loop

end.

das mit den Spannungen sieht mir aus als hättest du dies mit dem Multimeter gemessen... nun da brauch man ein klein wenig Erfahrung und Phantasie um damit abschätzen zu können ob beim Pegelwandler alles in Ordnung ist!

also je nach dem ob du z.B. einen Max232 oder einen SIPEX232 verwendest können die Spannungen da unterschiedlich sein!

im Ruhezustand misst du allerdings an den Ausgängen zum Prozessor hin ziemlich genau 5Volt und zum PC ungefähr "-8Volt".
jeweils gegen Masse gemessen.
PIN 15 und 16 müssen natürlich +5Volt anliegen!

bei den Ladungspumpen (PIN 1-3 und 4-5) liegt ein Rechtecksignal an.. auf der einen Seite ohne Offset und auf der anderen Seite mit.
mit dem Multimeter rel. schwer zu messen....
gegen Masse vielleicht so: PIN 1 = 6Volt / PIN 3 = 2,5Volt
PIN 4 = 4,4 Volt / PIN 5 = -4,4Volt!

an PIN 2 liegt aber auf jeden FAll eine gleichspannung, nämlich jene die den PEGEL für den PC bildet...
also PIN 2 ca. +8Volt, PIN6 ca. -8Volt
falls das nicht so ist, stimmt was an der Beschaltung nicht!!!!!!!

daniel.weber
06.03.2008, 21:02
habe jeden pin überprüft, die werte kommen soweit hin, habe das programm mit der pause angepasst. Die RxD Leitung zum PC hat allerdings nur 0.06V

ich setze den Ausgang auf 1, um zu sehen, ob das Programm läuft, in der Schaltung liegt da eine LED an.

leider bringt das ganze immer noch keine Änderung :(

Zapo.
06.03.2008, 21:10
also die spannungen am pin 2 und 6 stimmen auch? - dann sollten aber keine 0volt an der PC seite liegen!

wenn du da eine led dran hast verwende besser

toggle porta.1
nach dem wait...dann siehst du ob die schleife durchlaufen wird!

hast du den Kondensator von pin 2 und pin 6 gegen masse und +5volt?

hast du gepolte Kondensatoren(elkos) oder unipolare !??! MKS oder so?!?!

100nF ?!? oder welchen Wert?

daniel.weber
07.03.2008, 13:28
Hallo,
habe das ganze nochmal durchgemessen OHNE den RS232 Stecker an den PC anzuschließen.

An PIN2 liegen 7,35V an
An PIN6 liegen -6,91V an

Den Kondensator von Pin 2 und 6 liegt gegen Masse bzw VCC an, so wie auf dem Schaltplan.

Also Kondensator verwende ich Elkos mit 4,7 µF
Außer eben bei Pin 15 und 16 da ist es ein MKS 100nF

Ceos
07.03.2008, 13:35
verbinde doch mal testhalber pin 11 und 12 und tipp im hyperterminal mal was ein dann müsste deine eingabe einfach reflektiert werden, wenn dem so nicht ist ist es hardware wenn doch muss ich leider passen, bascom iss nich meine welt ^^ aber mit der schaltung wie im bild beschrieben funktioninert meine kommunikationeinwandfrei ... cih tippe darauf das du ne winzige kleingkeit vergesse hast oder wie hast du rx tx und gnd auf der pc seite verbunden ? rx pin2 tx pin3 gnd pin5 (angabe ohne gewÄhr ... aber ich hab n gewEhr falls jemand meint sich beschweren zu müssen ^^)

daniel.weber
07.03.2008, 14:16
soa endlich :)
habs hin bekommen, auch wenn ich jetzt nicht genau weis woran es gelegen hat, habe rx und tx zum pc nochmal vertauscht, das ic gegen ein neues ausgetauscht und siehe da, mega32 sagt hallo.

Vielen, vielen Dank für alle die mir geholfen habe, hoffe ich werde irgendwann so vertraut mit der Materie sein, dass ich mich revanchieren kann :)

Nochmal ein dickes Danke!

Ceos
07.03.2008, 14:21
wenn du mehr als ein hallo und ein kleines protokoll für übertragung gemacht hast wende ich mich gern an dich ^^ mehr als datenpakete schaufel von µC zu PC kann ich nämlich noch nich .... ich wollt mich demnächst mal an interruptempfang und gepufferte paketauswertung am µC versuchen aber ich hab einfach keine zeit XD