www.mikrocontroller.net

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


Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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.
   do
   {
      unsigned char data = *--serp;

      // SPDR schreiben startet Uebertragung 
      SPDR = data;

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

      // clear SPIF durch Lesen von SPDR 
      SPDR;
   }
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-Tutori...
hab ich ein derartiges Lesen nicht gefunden, weiß aber nicht, ob das an 
den mangelnden ASM-Kenntnissen liegt.

Danke bereits im Voraus

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ist das notwendig?

Nein.

>Macht in meinen Augen nicht viel Sinn

Macht es auch nicht.

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.