Atmega8 UART

Gast #2484197
Lesenswert?

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
Gast #2484377
Lesenswert?

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
#2484422
Lesenswert?

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.
#2484426
Lesenswert?

> 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?
Gast #2484489
Lesenswert?

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
Gast #2485344
Lesenswert?

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
Gast #2485669
Lesenswert?

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:
1
CONFIG COM1 = baud , synchrone=0|1 , parity=none|disabled|even|odd , stopbits=1|2 , databits=4|6|7|8|9 , clockpol=0|1
Gast #2485807
Lesenswert?

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
Angehängte Dateien:
Gast #2485945
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren