atmega88 frage SPI - Master mode

OP #1490494
Lesenswert?

Hi,
Ich hab mich in ein wenig zur Verwendung der SPI umgesehen (zum Füllen 
von shift-registern)

Da AVR-Assembler nicht so ganz meine Welt ist, hab ich bei roboternetz 
ein Tut in C gefunden:

http://www.rn-wissen.de/index.php/Portexpander_am_AVR

dort wird nach dem SPI Schreibzugriff das Datenregister einmal sinnlos 
ausgelesen um das Interuptflag zu löschen.
1
   do
2
   {
3
      unsigned char data = *--serp;
4

5
      // SPDR schreiben startet Uebertragung 
6
      SPDR = data;
7

8
      // warten auf Ende der Uebertragung für dieses Byte 
9
      while (!(SPSR & (1 << SPIF)));
10

11
      // clear SPIF durch Lesen von SPDR 
12
      SPDR;
13
   }
Ist das notwendig?
Macht in meinen Augen nicht viel Sinn

Im Datenblatt steht:
> the SPIF bit is cleared by first reading
> the SPI Status Register with SPIF set,
> then accessing the SPI Data Register (SPDR).

Unter accessing würde ich auch einen Schreibzugriff verstehen - sprich 
beim nächsten setzen des Datenregister sollte das Flag ohnehin gelöscht 
werden, oder muss dies direkt im nächsten Takt geschehen?

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Ansteuerung_per_SPI-Modul
hab ich ein derartiges Lesen nicht gefunden, weiß aber nicht, ob das an 
den mangelnden ASM-Kenntnissen liegt.

Danke bereits im Voraus
OP #1490515
Lesenswert?

holger schrieb:
>>Ist das notwendig?
>
> Nein.
>
>>Macht in meinen Augen nicht viel Sinn
>
> Macht es auch nicht.

eine ausführlichere Antwort wär nett.

wird das bit beim setzen eines neuen SPDR automatisch gelöscht?
wenn ja, was passiert mit der aktuellen übertragung, falls diese noch 
nicht abgeschlossen ist?
Gast #1490525
Lesenswert?

>> Macht es auch nicht.

>eine ausführlichere Antwort wär nett.

>wird das bit beim setzen eines neuen SPDR automatisch gelöscht?

Ja. Wenn das Statusregister gelesen wurde setzen sowohl
Lese- als auch Schreibzugriff auf SPDR das SPIF zurück.

>wenn ja, was passiert mit der aktuellen übertragung, falls diese noch
>nicht abgeschlossen ist?

Es gibt Gurkensalat.

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