Geschwindigkeisproblem mit RS232 und ATMega8

(Firma: privat) #2775034
Lesenswert?

Ein Hallo in die Runde,

bei der Datenübertragung zwischen einen Terminalprogramm und meinen 
Experimentierboard mit den AT Mega 8 habe ich ein Problem,und zwar komme 
ich über eine Geschwindigkeit von 4800 kbit/s nicht hinaus. Stelle ich 
schneller ein, kommen nur unsinige Zeichen auf den Bildschirm. Ich 
benötige jedoch eine Geschwindigkeit von 19200 kbit/s. Das 
Terminalprogramm welche ich nutze ist der klassiger "Hyper Terminal" 
oder der von Bascom. Mein Ansinnen ist es die AT-Befehle von den 
Mikrokontroller an mein Handy Siemens C55 zu senden und das war bisher 
leider ein Mißerfolg. Die ganze Idee steckt noch in den Kinderschuhen . 
Das Handy kann ich mit "Hyper Terminal" ansprechen und der Kontroller 
kommuniziert auch mit den Terminalprogramm nur leider zu langsam.Beide 
Komponenten (Telefon und AT-Mega8)wollen nicht miteinander.Hat jemand 
Erfahrung damit?
Danke erstmal im vorraus
#2775042
Lesenswert?

Kann man mal Quellcode sehen? Vielleicht stellst du irgendetwas falsch 
ein. Zeig z.B. mal den Code für 57600 Baud.
Wenn der Code OK ist, dann verwendest du vermutlich den internen 
Oszillator des Atmegas, welcher relativ ungenau ist. Dieser lässt sich 
jedoch über das OSCAL zu Laufzeit kalibrieren, sodass du - zumindest für 
die aktuelle Umgebungstemperatur - einen recht genauen Wert bekommst.

Ich habe hier schon viele Atmegas gehabt, deren interner Oszillator um 
ca. 5% von der Nennfrequenz abwich und entsprechend mit dem OSCAL 
kalibriert werden mussten.
Schau mal ins Datenblatt unter den ATmega8 Typical Characteristics => 
Internal Oscillator Speed. Da kannst du gut sehen wie stark der Takt des 
internen Oszillators von der Spannung und Temperatur abhängt. Und dann 
spielt auch eben noch die Kalibrierung eine Rolle.

Also besser gleich einen externen Baudratenquarz verwenden, dann 
kommst du exakt auf die gewünschte Baudrate.
(Firma: privat) #2775408
Lesenswert?

Hallo,

für die schnelle Beantwortung auf mein Anliegen bedanke ich mich sehr.
Mit der externen Taktung des Mega8 habe ich mir auch fast gedacht und 
mich an die Fuses gemacht. Natürlich habe ich damit auf klassische Weise 
den Mega8 lahm gelegt. Er will nicht mehr. Mit den Fuses-Bits ist es 
auch ein wenig unübersichtlich. Ich habe versucht über BASCOM den 
Eingriff vorzunehmen, nur leider ohne Erfolg. Hat jemand von Euch einen 
Plan?
Was den Quellcode anbetrift , bin ich gerade dabei mich zu Fuß 
ranzutasten.
Ich habe es für die Fehlersuche auf ein Minimum eingedampft:


$regfile = "m8def.dat"
$crystal = 1000000
$baud = 4800   --> (eigenlich 19200)

Wait 2
Print "AT+CMSS=1"
Waitms 500
Print " "
Waitms 500
Print "AT"

End



Mit der Einstellung 4800 baud kommuniziert der IC nicht mit den Telefon 
und wenn ich höher(auf 19200)drehe.... naja.
Gast #2775473
Lesenswert?

Timmo H. schrieb:
> Wenn der Code OK ist, dann verwendest du vermutlich den internen
> Oszillator des Atmegas, welcher relativ ungenau ist.

Und warum sollte sich ein Baudratenfehler bei höherer 
Übertragungsgeschwindigkeit schlimmer auswirken, als bei niedrigerer. 
Wenn die Baudrate bei 19,2kbd um 7% falsch ist, hat das die gleichen 
Auswirkungen wie wenn sie bei 4800bd um 7% falsch ist.

Den Baudratenfehler festzustellen, sollte doch kein Problem sein, wenn 
man die Zeichendauer von PC und µC auf dem Oszi vergleicht.

Bei konstanten Umgebungsbedingungen kann man die Kalibrierung auch 
nutzen, um den internen Oszillator neben der Nennfrequenz zu betreiben 
und dadurch den Baudratenfehler zu verkleinern, wenn das mit dem Teiler 
vom Baudratengenerator sonst nicht sauber genug aufgeht.
Gast #2776014
Lesenswert?

Hi Mario
Die Baudrate ist nicht dein Problem. Bau einen externen Taktgeber oder 
Quarz dran und die Leitung ist stabil. Habe selbst auch schon mal mit 
den AT-Befehlen gearbeitet. Das ist ganz lustig, weil du dich anrufen 
lassen kannst, ohne das es dich was kostet.
Einen "verfusden" Chip bekommst du u.U. mit einem ext. Takt wieder hin. 
Angefangen mit einem NE555 über einen Taktgeber bis hin zum 
programmierten Chipretter ist da einiges machbar.
Gruß oldmax

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