Gast
#2592558
Hallo Leute, da ich mich hinsichtlich Mikrocontroller in der Einarbeitungsphase befinde, beschäftge ich mich auch mit den Interrupts. Ich programmiere mit C und benutze den PIC12F1822. Ich möchte den Timer2 zählen lassen und wenn dieser den Wert vom PR2-Register erreicht, soll der Timer2-Flag auf 1 gesetzt werden und somit ein Interrupt auslösen und in dieser soll eine Variable inkrementiert werden. Ich habe die erforderlichen Registerbits gesetzt (GIE, TMR2IE und PEIE). Das Problem ist nicht das Flag, dieses wird gesetzt, sondern eher, dass die Interrupt-Funktion nicht aufgerufen wird. Könnte mir jemand da behilflich sein? Mein Code lautet so: unsinged char counter = 0; void main(void) { PR2 = 150; // Referenzwert INTCONbits.GIE = 1; // Global Interrupt Enable bit INTCONbits.PEIE = 1; // Peripheral Interrupt Enable bit (wegen Timer2) PIE1bits.TMR2IE = 1; // TMR2 to PR2 match Interrupt Enable bit T2CON = 0b00000001; // Bit 7 ist nicht implementiert // Bit 6-3 Postscaler (1:1) // Bit 2 Timer2On Bit (Off) // Bit 1-0 Prescaler (4) T2CONbits.TMR2ON = 1; // Timer2 On } void interrupt isr(void) { counter++; // inkrementieren PIR1bits.TMR2IF = 0; // Flag auf null setzen } Gruß Thomas P.S.: Es ist egal, ob die Aufgabe Sinn macht, Ziel ist es nur, dass ich die Interrupt-Funktion erfolgreich programmiere.