Zitat Zitat von RoboPunk
- Wodurch ruft der Master die Daten vom Slave ab? Einfach indem er eine Übertragung startet?
Ja. Bei SPI werden immer Daten gleichzeitig in beide Richtungen übertragen. Master und Slave tauschen den Inhalt ihrer Datenregister, und der Master muss dafür die 8 Takte liefern.

- Wieso ist es notwendig, beim Slave das Flag zurückzusetzten und wie wird das gemacht? Bzw. wird das Flag nicht automatisch zurückgesetzt?
Dem Datenblatt nach muss man es per Hand machen. Wie? So wie bei jedem Interrupt-Flag, indem man eine 1 hineinschreibt.
Wo kommt dein Zitat her? Der Tiny24 hat kein Bit mit dem Namen SPIF. Du musst schon in das richtige Datenblatt schauen.

Ich hab auch mal versucht, das umzusetzen, allerdings funktioniert es so immer noch nicht.
Master:
Das "Wait for reception complete " ist zu viel. Wie gesagt, der Datenaustausch erfolgt gleichzeitig.
Slave:
Flag löschen fehlt noch.

Außerdem finde ich die Kommentierung missverständlich. Ich würde den Slave z.B. so machen:
Code:
   USIDR = 'x';                    // Daten bereitstellen
   while (!(USISR&(1<<USIOIF)));   // Warten bis Daten abgerufen wurden
   USISR = (1<<USIOIF);            // Flag löschen