UART Ausgabe blockiert AVR?
Hallo!
Sehe ich es richtig, dass das Senden von zB einem Byte per UART den Controller während des Sendens komplett blockiert? Bei 9600 Baud würde das Senden von einem Byte dementsprechend ca 1 ms dauern, währenddessen nichts anderes vom Controller getan werden kann? In Bascom stellt es sich zumindest so dar. Andererseits müssen in dieser Millisekunde doch nur 10 Bit erzeugt werden, da sollten doch einige Prozessortakte für anderes übrig sein... Kann mir jemand erklären was da low-level passiert? Vielen Dank!
Gruß
Malte
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Um das Thema dann mal abzuschließen: es ist so wie Jeacko gesagt hat, man kann bei BASCOM mit "Config Serialout = Buffered , Size = x" einen Puffer aktivieren und dimensionieren. Man darf dabei nicht vergessen, die Interrupts anzuschalten ("Enable Interrupts") weil UDRE verwendet wird um anzuzeigen, dass die UART-Hardware ein Byte entgegennehmen kann.
Mich hat interessiert wie schnell das ganze mit Puffer ist, das Attachment zeigt das mal als Diagramm. Ab >4 Bytes wird's ziemlich linear mit 3.8 µs/Byte langsamer. Ich hab einen M644 mit 20 MHz verwendet.
Also Danke nochmal! Eure Hinweise haben mir wiedermal sehr geholfen!
Gruß
Malte