Hi Leute. Steh derzeit vor einem (scheinbar unlösbaren) Problem. C164CI (16 Bit Mikrocontroller) CAPCOM6 (Capture Compare Unit) Ich will einen Interrupt auslösen, sobald mein Counter den T12Period Wert erreicht hat. Derzeit wird der Interrupt nur einmal aufgerufen. Dann nicht mehr! Hab schon wirklich alles ausprobiert. Aktuelles Verhalten: Grüne LED blinkt dauerhaft Ein - Aus. Rote LED blinkt nur einmal. (1x Interrupt) Würde mich über Ideen freuen!! Dafür benutz ich folgenden Code.
1 | #define T12INT 0x4D
|
2 | #define T13INT 0x4E
|
3 | #define CC6INT 0x3F
|
4 | |
5 | |
6 | |
7 | //*****************************************************************************
|
8 | int n,k; |
9 | //*****************************************************************************
|
10 | void main(void) |
11 | {
|
12 | IEN=0; // disable interrupt |
13 | statusledInit(); |
14 | statusledSetOff(); |
15 | |
16 | // init CAPCOM6
|
17 | // TIMER12
|
18 | T12IC = ( 1 << 2) | 0; // set level & group |
19 | |
20 | T12IR = 0; // INTERRUPT REQUEST ENABLED |
21 | T12IE = 1; // INTERRUPT ENABLED |
22 | |
23 | T12P = 1000; // period register timer counts to 1000 |
24 | T12OF = 0; // offset |
25 | CTCON = 0x0000; // Compare Timer Control Register (use cpu frequence) |
26 | |
27 | |
28 | ECTP = 1; // enable timer 12 Period Interrupt |
29 | CT12R = 1; // start counter |
30 | IEN=1; // enable interrupts |
31 | for (;;) |
32 | {
|
33 | for(k=0;k<3;k++){for(n=0;n<65535;n++);} |
34 | statusledSetGreen(); |
35 | for(k=0;k<3;k++){for(n=0;n<65535;n++);} |
36 | statusledSetGreenOff(); |
37 | |
38 | }
|
39 | |
40 | |
41 | }
|
42 | |
43 | |
44 | |
45 | void timerInterrupt(void) interrupt T12INT |
46 | {
|
47 | statusledSetRed(); |
48 | }
|