Forum: Mikrocontroller und Digitale Elektronik atmega88 frage SPI - Master mode


von Vlad T. (vlad_tepesch)


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

von holger (Gast)


Lesenswert?

>Ist das notwendig?

Nein.

>Macht in meinen Augen nicht viel Sinn

Macht es auch nicht.

von Vlad T. (vlad_tepesch)


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?

von holger (Gast)


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.

von Vlad T. (vlad_tepesch)


Lesenswert?

>Es gibt Gurkensalat.
über so ein kleines Gadget würde sich meine Frau sicherlich freuen ;)

aber danke, da kann ich das Lesen also ruhigen gewissens raushauen.

Danke!
Vlad

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.