Forum: Mikrocontroller und Digitale Elektronik Atiny als SPI Slave Interrupt funktioniert nicht.


von Thomas Frosch (Gast)


Lesenswert?

Hi,

möchte meinen Atiny2313 als SPI Slave verwenden. Ich kann auch schon 
Daten empfangen, jedoch nur wenn ich auf das Flag warte. Nun möchte ich 
Daten gerne per Interrupt empfangen. Dazu habe ich den USI_OVERFLOW 
Vector genommen. Ich denke jedoch, dass ich irgendwas nicht richtig 
verstanden habe. Ist es überhaupt möglich beim Empfang einen Interrupt 
auslösen zu lassen? Möchte keine zusätzlichen Timer verwenden!

meine Konfiguration sieht im moment so aus

...

DDRB  |= (_BV(PB6));  // MISO
PORTB |= (_BV(PB7));  // UCSK
PORTB |= (_BV(PB5));  // MOSI

USICR |= (1<<USIWM0) | (1<<USICS1); // Three-wire Mode +
USICR = (1<<USIOIE);

USIDR = 'a';
USISR = (1<<USIOIF);

...


ISR(USI_OVERFLOW_vect)
{
  SET_YELLOW;
}

von Stefan E. (sternst)


Lesenswert?

Thomas Frosch schrieb:
> USICR |= (1<<USIWM0) | (1<<USICS1); // Three-wire Mode +
> USICR = (1<<USIOIE);

Und welche Bits sind wohl in USICR nach ausführen dieser beiden Zeilen 
gesetzt? Kleiner Hinweis: es ist nur ein einziges.

von Thomas Frosch (Gast)


Lesenswert?

Ach ne. So ein Sch***. Immer diesen blöden Tippfehler die man dann auch 
noch 1000x überliest.

vielen Dank!! werd mal probieren obs so funktioniert!

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