TWI_vect wird nicht ausgelöst

OP #2383736
Lesenswert?

Hallo Leute,
ich habe folgendes Problem. In der main() werden sekündlich jobs auf 
einen TWI-Stack gestapelt. Auf dem Stack kann immer nur ein Job von 
einem Typ sein. Jeder Job hat ne Statemachine. Jeweils die erste Aktion 
ist logischerwierse ein TWI_sendStart():
1
void TWI_sendStart(){
2
TWCR = (1<<TWINT) | (1<<TWEN) | (1 << TWIE) | (1<<TWSTA);
3
}
Wenn der TWI job fertig ist soll das TWI_busy Flag gelöscht werden:
1
ISR(TWI_vect) {
2
  TWI_busy = 0;
3
  USART_puts("TWINT INT");
4
}
Und dann kann fröhlich weitergearbeitet werden.
1
if (!TWI_busy)
2
  TWI_popJobAndExecute();

Allerdings kommt die ganze Maschinerie nicht ins rennen. Ich habe mir 
mal alles ausgeben lassen ( hab leider kein debugger) und mir ist 
aufgefallen, dass die TWI ISR garnicht gestartet wird. Im DS steht TWI 
interrupt wird nach beendeten Jobs, die Softwareresponse erwarten, 
ausgelöst. (/ TWINT gesetzt) Auf jeden Fall beim gesendeten StartSignal.

Wieso also bekomm ich keinen Interrupt?

Grüße und danke schon mal für die Hilfe!

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