Forum: Mikrocontroller und Digitale Elektronik Geschwindigkeisproblem mit RS232 und ATMega8


von Mario T. (Firma: privat) (mariotunger)


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

von ich (Gast)


Lesenswert?

Der interne Taktgeber ist zu ungenau, verwende einen Quarz. Denk auch an 
die FUses.

von hdd (Gast)


Lesenswert?

Ich hoffe du meinst nicht wirklich kbit/s sondern bit/s?
Bei 19200 bit/s sollte der USART noch lange nicht an seine Grenzen 
kommen. Zeig mal deinen Code den du zum Senden verwendest.

von Timmo H. (masterfx)


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.

von guenter_s (Gast)


Lesenswert?

Hallo Mario,

es liegt sehr wahrscheinlich an der Taktfrequenz des Atmega8.
Mit internem Takt sind max. 4800 baud möglich, teilweise geht aber auch 
nichts wenn der interne Takt zu ungenau arbeitet
Mit externem Takt geht mehr, mehr dazu z.B. unter
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/uart_rs232_zum_computer/

Viel Erfolg!

Gruss

Guenter

von spess53 (Gast)


Lesenswert?

Hi

>Mit internem Takt sind max. 4800 baud möglich, ...

Mit 8MHz sind bis 38400Bd mit 0.2% Fehler möglich. Allerdings scheitert 
das an den besagten Taktfehler.

MfG Spess

von Mario T. (Firma: privat) (mariotunger)


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.

von holger (Gast)


Lesenswert?

>$crystal = 1000000
>$baud = 4800   --> (eigenlich 19200)

Bei 1MHz Takt hast du laut Datenblatt bei 19200Baud
mindestens 7% Fehler. Es lohnt sich das Datenblatt zu lesen;)

von spess53 (Gast)


Lesenswert?

Hi

>Bei 1MHz Takt hast du laut Datenblatt bei 19200Baud
>mindestens 7% Fehler. Es lohnt sich das Datenblatt zu lesen;)

Nicht erst bei 19600Bd.

MfG Spess

von Michael A. (Gast)


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.

von spess53 (Gast)


Lesenswert?

Hi

>Wenn die Baudrate bei 19,2kbd um 7% falsch ist, hat das die gleichen
>Auswirkungen wie wenn sie bei 4800bd um 7% falsch ist.

Bei 1MHz und 4800Bd sind es aber nur 0,2%.

MfG Spess

von Tim T. (tim_taylor) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hatte irgendwann mal Langeweile...

von spess53 (Gast)


Lesenswert?

Hi

>Hatte irgendwann mal Langeweile...

Steht in jedem Datenblatt.

MfG Spess

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

EDIT: Ok, hab grade Seite 161 (19.11 Examples of Baud Rate Setting) 
gefunden...^^

von oldmax (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.