Hallo,
ich möchte eine Kommunikation zwischen RS232 und einem Atmega8
realisieren. Dazu benutze ich einen Max232.
Ein Loop-Back Test funktioniert. Daher gehe ich davon aus, dass ich bis
zum Max232 alles richtig gemacht habe.
Ich versuche mit folgendem Code das vom Atmega8 gesendete Zeichen mit
dem Terminal zu empfangen. Leider kommt dort nichts an, wenn ich die
Stromversorgung zum Atmega8 einschalte.
1
2
$regfile = "M8def.dat"
3
$crystal = 1000000
4
$hwstack = 100
5
$swstack = 100
6
$framesize = 100
7
$baud = 2400
8
9
Do
10
11
Print "u"
12
13
Loop
14
15
End
Die Baudrate ist auch im Terminal auf 2400 eingestellt.
Hat jemand eine Idee woran es liegen könnte ?
MfG. Bit
Die Baudrate wurde im Terminal und µC sowohl mit 4800 als auch mit 2400
getestet. Leider ohne Erfolg.
Müsste ich nicht theoretisch, sobald der µC mit Strom versorgt wird,
"u"s mit dem Terminal empfangen ?
Dies ist weder mit dem HyperTerminal von WinXP der Fall, noch mit dem
Terminal-Emulator aus Bascom-AVR.
Hat noch jemand einen Tipp ?
Gruß
Bit
Bit schrieb:> Die Baudrate wurde im Terminal und µC sowohl mit 4800 als auch mit 2400> getestet. Leider ohne Erfolg.>> Müsste ich nicht theoretisch, sobald der µC mit Strom versorgt wird,> "u"s mit dem Terminal empfangen ?>> Dies ist weder mit dem HyperTerminal von WinXP der Fall, noch mit dem> Terminal-Emulator aus Bascom-AVR.>>> Hat noch jemand einen Tipp ?
Nimm eine LED mit einem 220 Ohm Vorwiderstand und teste mal ob auf dem
Tx Pin vom µC was rauskommt. Bei 2400 Baud wirst du die LED noch
Flackern sehen.
Dann verfolgst du das Signal vom µC zum MAX und auf der anderen Seite
vom MAX zum Kabel.
Wenn da überall das Flackern da ist, dann kreuz mal probehalber das
Kabel aus.
Selbst wenn die Baudrate nicht stimmt, müsstest du am PC was sehen.
> Ein Loop-Back Test funktioniert. Daher gehe ich davon aus,> dass ich bis zum Max232 alles richtig gemacht habe.
Was muss man sich darunter vorstellen?
Den Loopback Test machst du am sinnvollsten, indem du den µC aus seinem
Sockel nimmst und direkt im Sockel eine Drahtbrücke bei den Tx und Rx
Pins des µC einsteckst. Hast du das so gemacht?
Das mit der LED ist eine gute Idee, nur müsste ich -vom µC aus gesehen-
nach dem Max232 nicht auf +-12V Pegel sein ? Direkt aus dem µC müsste
ich das flackern aber sehen, stimmt.
Ich habe -vom PC aus gesehen- nach dem Max232 TX und RX miteinander
verbunden (Pin 11,12). Dann vom PC ein Zeichen gesendet. Dieses Zeichen
habe ich dann auch wieder empfangen.
MfG. Bit
Vom PC aus sehe ich das Blinken der LED, wenn ich ein Byte über den
Max232 versende.
Hänge ich die LED an den TX des Atmega8, ist diese die ganze aus und ich
sehe auch kein flackern. (Vom PC aus gesehen, nach dem MAX232, war die
LED die ganze Zeit an, bis auf die kurze Zeit des flackerns)
Messe ich mit einem Multimeter die Spannung am TX Ausgang des µC, zeigt
es mir 0,00V.
Ist mein µC defekt ?
MfG. Bit
Bit schrieb:> Der Aufbau entspricht der Schaltung im Anhang.
Wo hast du denn diese Schaltung her. Ich habe diese "Sparschaltung" noch
nicht gesehen. Da fehlt wohl ein Kondensator. Der Kondensator C7 muß
weg. Von den Anschlüssen V+(2) und V-(6) muß jeweils ein Kondensator
gegen GND geschaltet werden.
Evtl. sind weiterhin auch noch die Werte der Kondensatoren falsch. Nur
der MAX232A arbeitet mit 100nF Kondensatoren. Beim normalen MAX232
müssen die vier Kondensatoren mindestens 1µF groß sein.
Im Programm mußt du auch noch die UART konfigurieren:
Dietrich L. schrieb:> An V+ und V- muss je 1 Kondensator gegen GND!
Wie ich gerade sehe: nach Datenblatt geht der Kondensator von V+ nicht
nach GND, sondern nach +5V.
Dietrich L. schrieb:> Dietrich L. schrieb:>> An V+ und V- muss je 1 Kondensator gegen GND!> Wie ich gerade sehe: nach Datenblatt geht der Kondensator von V+ nicht> nach GND, sondern nach +5V.
Das ist egal. Man kann ihn gegen GND oder +5V schalten.
GeraldB schrieb:> Das ist egal. Man kann ihn gegen GND oder +5V schalten.
Gegen +5V spart man aber eine Menge Geld, da der Kondensator weniger
Spannungsfestigkeit braucht ;-))
Ich habe die Kondensatoren jetzt auch an V+ und an V- eingebaut.
Nachdem ich den Teil mit "Config Com1 = 2400, "etc. hinzugefügt habe,
kommt auch was in der Konsole an.
Doch das Ergebnis ist noch nicht so perfekt (siehe Foto).
Baudrate im Terminal und Code auf 2400, Crystal auf 1MHz.
Wer kann mir weiterhelfen ?
MfG. Bit
Ich meine gelesen zu haben, dass eine UART-Kommunikation mit dem
internen Quarz möglich ist (Atmega8).
Scheint dann ja leider nicht der Fall zu sein :(
MfG. Bit
Es ist kein Quarz drin, nur ein RC-Generator. Das kann funktionieren,
ist aber nicht stabil bei Temperaturänderungen. Mach einen Quarz dran
und Du hast eine Sorge weniger.
MfG Paul
Hi
>Ich meine gelesen zu haben, dass eine UART-Kommunikation mit dem>internen Quarz möglich ist (Atmega8).
Das ist kein Quarz. Wenn du jetzt keinen Quarz anschließen kannst,
besteht nur die Möglichkeit mit dem OSCCAL-Register die Abweichung zu
korrigieren. Also das Register auslesen und den Wert stückchenweise
höher oder niedriger einstellen. Was hast du denn bei deinem Screenshot
gesendet?
MfG Spess