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.