PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hardware RS232



Barthimaeus
19.01.2008, 10:26
Bisher habe ich immer mit einer Softwareseitigen rs232 Schnittstelle am mC gearbeitet und das ging auch gacnz gut. Nun sind meine mega8 und mega16 Controller angekommen, die zusätzlich noch eine hardwareseitige rs232 Schnittstelle haben. Nur leider bekomme ich die nicht so richtig angesteuert, oder mein Termialprogramm (von Bascom) ist falsch eingestellt. Der Programmcode lautet:


$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600

Do
Print "Hallo"
Wait 1
Loop

End

Müsste doch ok sein, oder? Mein Terminal ist auf 9600 Baud eingestellt, die anderen Einstellungen habe ich auf ihren Ausgangswert belassen. Kann mir jemand helfen?

Jon
19.01.2008, 10:32
Das Programm stimmt wohl soweit.
Was kommt denn beim Terminal an? Nichts oder irgendwelche Zeichen, die du nicht deuten kannst?

jon

Barthimaeus
19.01.2008, 10:41
Das ganze sieht so aus:


«::
*ë«::
*ë«::
*ë«::
*ë«::
*ë«::
*ë«::


Wobei die Zeilen wie gewünscht im Sekundentakt erscheinen ^^

Jon
19.01.2008, 10:49
Dann stimmt etwas bei der Kommunikation nicht ganz. Probiere mal andere Baudraten durch.
Bei mir war es so, dass ich den µC auf 9600 hatte, bei 4mhz, den PC auf 4800.
Das Problem ist hierbei, dass deine 8mhz kein gerader Teiler des PC-Quarz ist. Somit kann es zu Fehlern bei der Kommunikation kommen.

jon

Barthimaeus
19.01.2008, 10:58
da betreibt man seinen mC extra mit externem Quarz und dann sowas...

python_rocks
19.01.2008, 11:00
Hallo Barthimaeus!

Nur um es auszuschließen zu können: Kann es sein, dass du keinen MAX232 zwischen dem Computer und dem µC hast?

ZUSATZ:

Bei 8 Mhz und 9600 Baud liegt der Fehler unter 0,2 %. Diese geringe Fehlerquote sollte bei dieser kleinen Baudrate eigentlich kein Problem sein.

mfg
Gerold
:-)

Barthimaeus
19.01.2008, 11:00
jep , aber bis jetzt gings immer ohne...

python_rocks
19.01.2008, 11:07
jep , aber bis jetzt gings immer ohne...
Wenn du keinen MAX232 dazwischen hast, dann ist das Signal invertiert.

Mit OPEN http://avrhelp.mcselec.com/index.html?open.htm kannst du INVERTED mit angeben. Aber damit habe ich noch keine Erfahrung. Auch weiß ich nicht, ob man das auch für die Hardware-UART einstellen kann.

mfg
Gerold
:-)

Jon
19.01.2008, 11:08
Zw µC und PC keinen MAX232 :shock:
Dann hoffen wir mal, dass dein Hardware RS232 nicht geschrottet ist.
Der PC arbeitet mit -12V low und +12V high, der µC mit +-0V low und +5V high.
Da muss auf jeden Fall ein MAX232 rein!!

jon

EDIT: Bei Soft RS232 kann man die invertierung einschalten, bei Hard RS232 nicht.

Barthimaeus
19.01.2008, 11:30
Bisher habe ich den mC noch keine Daten empfangen lassen -> Die warscheinlichkeit das es geschrottet ist strebt also gegen null, oder?

Jon
19.01.2008, 11:34
I don't konw.
Vielleicht, vielleicht nicht. Du wirst es jetzt nur über Probieren herausbekommen.

jon

Barthimaeus
27.01.2008, 20:07
SO - Ich habe jetzt ein kleines MAX232 Modul für mein RS232 Kabel gebastelt und kann euch verraten - Er ist heil geblieben - alles funktioniert wunderbar ! Wie hoch kann man denn ohne Datenverlust mit der Baudrate gehen, wenn man einen 8Mhz Quarz benutzt?

Dirk
27.01.2008, 20:32
Wie hoch kann man denn ohne Datenverlust mit der Baudrate gehen, wenn man einen 8Mhz Quarz benutzt?
Bis 0,2% Fehler sind theoretisch möglich:
38,4 kBaud
250 kBaud
500 kBaud

Gruß Dirk