Hi, hab hier einen Mega8 der über einen MAX232 mit einem PC verbunden ist. Nutze den internen Oszillator (8Mhz,9600Baud) und die Lib von Peter Fleury. Wenn ich über Minicom oder Hyperterminal Zeichen sende, empfängt der Mega alles korrekt. (Senden klappt auch fehlerlos) Will ich aber eine Zeichenfolge senden z.B. echo ABC1234 > /dev/ttyS0 empfängt der Mega nur das erste Zeichen. Wie kann der Mega trotz Interrupt-Betrieb Zeichen bei der Kommunikation verlieren ??? Alle anderen Programmteile wie z.B. Timer usw. hab ich ausgeblendet. Es läuft wirklich nur die Uart-Empfangsroutine. Ist ess Möglich das der PC trotz richtiger Baud-Rate "zu schnell" sendet ??? MfG Uwe
@ UB (Gast) >Nutze den internen Oszillator (8Mhz,9600Baud) und die Lib von Peter >Fleury. MÖÖÖP! Fehler! >Ist ess Möglich das der PC trotz richtiger Baud-Rate "zu schnell" sendet >??? AVR-Tutorial: UART MfG Falk
Hm, 8Mhz und 9600Baud ergibt nur einen Fehler von 0,2%. Warum sollte das nicht gehen? Ich habe hier einen Akkulader mit Mega8, der auch nur mit dem internen Takt läuft und mir seine Ladedaten über RS232 auf den Rechner bringt. Der geht fehlerlos. MfG Paul
ICh glaub, du musst das Interrupt Flag alleine löschen, irgenwie war das bei UART so.
@ Paul Baumann (Gast) >Hm, 8Mhz und 9600Baud ergibt nur einen Fehler von 0,2%. Warum sollte das >nicht gehen? "Nutze den internen Oszillator (8Mhz,9600Baud)" Der hat keine 0,2%, eher 2% und mehr. Sihe Link. MFG Falk
Paul Baumann wrote: > Hm, 8Mhz und 9600Baud ergibt nur einen Fehler von 0,2%. Warum sollte das > nicht gehen? Weil das keine 8Mhz sind. Eher sowas von: "in der Gegend von 8Mhz. Können aber auch nur 7.5Mhz oder doch schon 8.5Mhz sein" > Ich habe hier einen Akkulader mit Mega8, der auch nur mit > dem internen Takt läuft und mir seine Ladedaten über RS232 auf den > Rechner bringt. Der geht fehlerlos. Möglich ist es. Kann gehen, muss aber nicht.
Ich habe das Programm "AVRbaud" benutzt, das bringt die 0,2% Fehlerangabe. Kann sein, daß ich Glück hatte, aber einen Versuch habe ich mal gemacht: Ich ließ mir mit einem Mega8 und internem Takt an einem Pin 100Hz erzeugen und setzte einen industriellen Frequenzzähler dahinter, der sogenannte "Shots" machen kann. d.h. er mißt die Frequenz an seinem Eingang periodisch und speichert das Ergebnis zusammnen mit der abgelaufenen Zeit. Dann habe ich den armen Kerl (Mega8) mit Kältespray und/oder Lötkolben aus nächster Nähe bearbeitet. Ergebnis: Das verdroß ihn kaum, die 100Hz waren "wie ein Mann" da. Da dachte ich: Guck an, so schlimm ist die Drift doch gar nicht, wie die Leute immer behaupten´. MfG Paul
der initerne Oszillator ist ungenau. Wenn du mehrere Zeichen hintereinander ohne Pause sendest kann es sein das der UART die ersten 1-2 Zeichen noch erkennt, alle folgenden nicht mehr. Wenn Du einzelne Zeichen mit Pausen sendest (wie mit Hyperterm) kann sich der UART bei jedem Zeichen synchronisieren und schafft das eine Zeichen gerade so. Also bei UART Aktionem empfiehlt sich ein externer Quarz, am besten mit den speziellen UART Quarzen wie 7,3728 oder 14,745MHz
@ Paul Baumann (Gast) >Dann habe ich den armen Kerl (Mega8) mit Kältespray und/oder Lötkolben >aus nächster Nähe bearbeitet. Ergebnis: Das verdroß ihn kaum, die 100Hz >waren >"wie ein Mann" da. Dann hast du irgendwie falsch gemessen, vielleicht war ein angeschlossener Quarz aktiv? Der RC-Oszillator macht schon EINIGES an Drift, schau mal in Datenblatt. So zwischen 7,9..8,3MHz von -40..85 Grad. Das sind ca. +/- 2,5%. Für eine Oszillator sind das Welten. MFG Falk
Nein, das kann ich gerade noch so erkennen, ob ich einen Quarz eingelötet habe, oder nicht. (breit grins) Vielleicht wollen sie in den Datenblättern nur auf der sicheren Seite sein und geben die Wurst-Käse-Fälle (oder so ;-)) an. Für eine Massenproduktion würde ich auch immer mit Quarzen an's Werk gehen, aber für einzelne Apparate für zu Hause kann man schon mal versuchen, ob es auch so geht. Das ist der Sonnabend-Nachmittag-Effekt: gerade den Quarz, den man bräuchte, hat man nicht da. Guten Rutsch (aber langsam, höchstens mit 300 Baud) wünscht Paul
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.