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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.