Forum: Mikrocontroller und Digitale Elektronik Mega8 Uart Empfangs Problem


von UB (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Paul Baumann (Gast)


Lesenswert?

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

von Martin (Gast)


Lesenswert?

ICh glaub, du musst das Interrupt Flag alleine löschen, irgenwie war das 
bei UART so.

von Falk B. (falk)


Lesenswert?

@ 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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Paul Baumann (Gast)


Lesenswert?

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

von Markus B. (Firma: Embedit Mikrocontrollertechnik) (_mb_)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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

von Paul Baumann (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.