SD Karte über (Hardware) SPI ansteuern, IF Flag (XMEGA)

OP #4407481
Lesenswert?
• ▲
▼
Hallo!

Ich bin dabei eine SD Karte über SPI anzusteuern und habe diesbezüglich 
eine Frage in Bezug auf SPI. Es wird ein XMEGA verwendet und das 
Hardware-SPI-Modul. Diese Prozedur ist für das Senden bzw. Empfangen der 
Daten verantwortlich:

        sts  SPIC_Data,tmp
loop:   lds tmp,SPIC_Status
        sbrs tmp,SPI_IF_bp
        rjmp loop
        [...]

Es wird also der Inhalt des Registers tmp an das Data-Register geschickt 
und dann das Status-Register abgefragt. Anschließend wird das IF Flag 
abgefragt und sobald das Flag gesetzt ist, wird die Schleife verlassen, 
da die Daten raus sind. Jetzt die eigentliche Frage: ist es eigentlich 
möglich, dass das IF Flag nicht gesetzt wird und die Schleife dann nie 
verlassen wird? Ich bin am überlegen eine zusätzliche Schleife 
einzubauen um z. B. nach 255 Versuchen von einem „Time Out“ auszugehen. 
Ich habe allerdings bemerkt, dass auch wenn keine Karte angeschlossen 
ist, die Daten „rausgehen“, das SPI-Modul also nicht wirklich weiß, ob 
da etwas angeschlossen ist oder nicht und halt die 8-Bits dann 
„ausspuckt“ und dann das IF Flag setzt. Sollte man also die Zahl der 
Abfragen des IF Flags begrenzen, oder ist das völlig unnötig? Vielen 
Dank für alle Antworten im Voraus.
#4407565
Lesenswert?
• ▲
▼
Norbert T. schrieb:
> Jetzt die eigentliche Frage: ist es eigentlich
> möglich, dass das IF Flag nicht gesetzt wird und die Schleife dann nie
> verlassen wird?

Nein. Die Anzhal der Clocks vom Scbreiben des Datenregisters bis zum 
Setzen des Flags ist im Master Mode streng deterministisch. Das Modul 
wachelt halt 8 Mal am SPI Clock und am MOSI enstprechend dem Wert im 
Datn Register (bzw. Shift Register), außerdem wird MISO bitweise 
eingelesen.


Wenn der Prozessor die Schleife nicht verlässt ist er kaputt oder die 
SPI Einheit vorher nicht korrekt konfiguriert worden. Bei AVR kann das 
z.B. an NSS liegen.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.