Forum: Mikrocontroller und Digitale Elektronik TWI_vect wird nicht ausgelöst


von Manuel S. (doc-snyder)


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!
von Guest (Gast)


Lesenswert?

Ist denn noch niemandem selbiges wiederfahren?
von Raphael F. (erdbewohner)


Lesenswert?

du hast aber schon ein sei(); drin. Oder?
von Manuel (Gast)


Lesenswert?

Jop sorry hätt ich erwähnen sollen. Asynchroner Timer für die Uhr läuft 
komischerweise.
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.