Forum: Mikrocontroller und Digitale Elektronik SPI (SPIF flag)


von Rico (Gast)


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.)

von Rico (Gast)


Angehängte Dateien:

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!?

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.