Hallo Leute,
ich empfange über den UART meines ATmega8 Daten vom PC mit 4800 Baud (asynchron via Interrupt). Der MC läuft mit 3,686MHz (externer Quartz).
Wenn ich viele Bytes gleichzeitig schicke gehen leider welche verloren, der ATmega empfängt nur den Anfang des Streams. Wenn ich in der Client-Anwendung nach jedem Byte ein Delay von 5ms einfüge funktioniert alles wunderbar.
Mein Verdacht ist nun, dass ich im Interrupt-Handler zu viele Zyklen verbrate. Frage: wie viele Zyklen stehen mir pro empfangenem Byte zur Verfügung? Bitte sagt mir, ob diese Rechnung richtig ist:
4800 Baud: 4800 interrupts pro Sekunde, 3686000 Zyklen/s
= ca. 768 Zyklen pro empfangenes Byte.
Das sollte locker reichen. Ich brauche maximal 200!
Fällt euch was dazu ein? Ich freue mich über jeden Hinweis!!!
Danke schonmal und viele Grüße,
Dennis
Lesezeichen