Frage zu USART in SPI

Gast #729865
Lesenswert?

Hallo,

ich benutze von nem ATMEGA48 die USART im SPI Betrieb.
Nun möchte ich gern die folgende Abfolge durchführen.:

-Einen Bestimmten Pin runterziehen (CS)
-Daten in den Sendepuffer laden
-Warten bis die Daten gesendet wurden
-Einen Bestimmten Pin hochziehen (CS)

Mein Problem ist die Warteschleife, die warten soll bis die Daten den 
Controller verlassen haben. Ich habe es mit dem TXC0 Flag im UCSR0A 
Register probiert. Leider hat das nicht funktioniert.

whle (!(UCSR0A &(1<<TXC0)));

Gibt es evtl. ne andere Möglichkeit? Ich möchte halt von einem Baustein 
Chip Select runterziehen, Daten senden und danch CS wieder hochziehen.


Vielen Dank.
Gast #729905
Lesenswert?

>Nimm das UDRE0-Flag.

Das Geht auch nicht, weil dieses Flag ist dann gesetzt, wenn die Daten 
aus dem UDR0 Buffer in das Schieberegister geladen wurden. Das heisst 
aber nicht, dass die Daten schon gesendet worden sind.
Gast #729910
Lesenswert?

Falls die Moeglichkeit besteht, den SPI auf den maximalen speed laufen 
zu lassen, dh das Zieldevice das auch so kann, kann man die 8 
clockzyklen pollen bis das Byte draussen ist. Der Overhead ist geringer.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren