SPI Problem: Warte ich in der Senderoutine auf InterruptFlag hängt sich Atmega8 auf

OP #2938558
Lesenswert?

Guten Abend,
hier mal wieder ein SPI Problem:

Nachdem ich nun den zweiten Tag versuche einen DigiPoti (MCP41010) via 
SPI anzusprechen möchte ich Euch um Rat bitten.

Wenn ich in der Senderoutine das InterruptFlag abfrage bleibt der 
Controller hängen als würde das Flag nie gesetzt werden. Kommentiere ich 
die beiden Zeilen aus läuft der Controller, SPI geht natürlich nicht.

Im Anhang der betreffende Code, sollte das nicht reichen kann ich auch 
gern den Rest posten der allerdings umfangreich ist.

Dank für Eure Antworten.
Angehängte Dateien:
Persönliche Seite #2938572
Lesenswert?

Jens Neumann schrieb:
> die ISR ist nicht mit gepostet, tschuldigung...
>
> Sie ist allerdings auch leer da ich sie ja nur zum selbständigen löschen
> des Flag`s brauche.

Was erwartest du?

Interruptbedingung tritt ein --> (leerer) Interrupthandler wird 
aufgerufen, bevor dein Unterprogramm dazu kommt das Flag abzufragen --> 
durch den Aufruf des (leeren) Interrupthandlers wird das Flag natürlich 
gelöscht und deine while Schleife schleift sich nen Wolf!
Gast #2938651
Lesenswert?

Ein Blick ins Datenblatt ergibt:

SPIF is cleared by hardware when executing the corresponding interrupt 
Handling Vector. Alternatively, the SPIF bit is cleared by first reading 
the SPI Status Register with SPIF set, then accessing the SPI Data 
Register (SPDR).

Auf Deutsch: Du musst SPDR lesen um SPIF zurückzusetzen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren