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
Der interne Taktgeber ist zu ungenau, verwende einen Quarz. Denk auch an die FUses.
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.
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.
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
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
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.
>$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;)
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
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.
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
Hi
>Hatte irgendwann mal Langeweile...
Steht in jedem Datenblatt.
MfG Spess
EDIT: Ok, hab grade Seite 161 (19.11 Examples of Baud Rate Setting) gefunden...^^
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.