SPI (SPIF flag)

Gast #72926
Lesenswert?

Hallo!

Ich möchte 2 AVR über SPI verbinden. Da beide senden sollen (und dabei
den Transfer einleiten können sollen) muß ich ja regelmäßig die
Master-/Slave-Zuordnung wechseln.

Nun meine Frage: Wichtig ist natürlich, daß das SPIF flag beim wechseln
zurückgesetzt wird. Passiert das bereits, wenn ich nur das Master/Slave
bit invertiere (MSTR), oder muß ich das volle Programm durchlaufen,
also /SS auf High, SPI aus, MSTR invertieren, SPI an, /SS auf low?

(Empfangsseitig wird das SPIF ja laut Datenblatt bereits beim Auslesen
des letzten Datenwortes gelöscht, interessant wäre jetzt also vorrangig
die Sendeseite.)
Gast #72927
Lesenswert?

Also ich hab gerade ein bißchen "rumprogrammiert", und entstanden sind
die beiden Quellcodes im Anhang.

Der Programmablauf ist folgendermaßen:
Zu Beginn wird AVR1 als Master festgelegt, AVR2 als Slave. Anschließend
wird 1 Byte von AVR1 zu AVR2 übertragen. Als nächstes wird die
Master-/Slave-Zurordnung gewechselt, und AVR2 schickt 1 Byte an AVR1.

Soweit so gut. Leider werden aber bei der 2. Übertragung offensichtlich
nur 7 Bit gesendet. Statt dem gesendeten 0x33 kommt nur 0x19 an.

Kann mir jemand sagen, wo ich den Fehler mache? Kann ja eigentlich nur
sein, daß beim Wechseln von Master und Slave irgendein Register nicht
zurückgesetzt wird, was vielleicht zurückgesetzt werden müßte!?
Angehängte Dateien:

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