CAPCOM (Timer12) Interrupt wird nur einmal ausgeführt

OP #2189160
Lesenswert?
• ▲
▼
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
}
Gast #2189185
Lesenswert?
• ▲
▼
Interuptflag wird beim xC16x automatisch zurückgesetzt, wenn die ISR 
betreten wird.

Aber eine wesentlich einfacher Frage: Wo setzt du dein Rotes LED zurück?
Das Grüne wird in der main per statusledSetGreen() ein geschalten und 
per statusledSetGreenOff() wieder ausgeschalten.
Die Rote wird in der ISR per statusledSetRed() eingeschalten, aber 
nirgends aus geschalten!

Und wie sehen diese Set-Funktionen aus?

C164CI? Also eine C-Control II. Damit wurde ich auch angefixt :-)

Gruß,
TManiac
OP #2189187
Lesenswert?
• ▲
▼
"Dann zeig dochmal den Code dieser Funktion, die müßte ja togglen"

Naja in der For-Schleife wird ja diese LED wieder auf 0 gesetzt.

Aber hier der Code
1
sbit STATUS_RED_PORT =         P8^0;      // Declare portpin to use
2
sbit STATUS_RED_PORT_DIR =    DP8^0;      // Declare direction bit to use
3
sbit STATUS_GREEN_PORT =       P8^2;      // Declare portpin to use
4
sbit STATUS_GREEN_PORT_DIR =  DP8^2;      // Declare 
5
//************************************************************
6
#define statusledSetRed()    {STATUS_RED_PORT=0;   STATUS_GREEN_PORT=1; }
7
#define statusledSetGreen()    {STATUS_RED_PORT=1;   STATUS_GREEN_PORT=0; }
8
#define statusledSetGreenOff()  {STATUS_RED_PORT=1;   STATUS_GREEN_PORT=1; }
9
#define statusledSetRedOff()  {STATUS_RED_PORT=1;   STATUS_GREEN_PORT=1; }
10
#define statusledSetGreenO()  {STATUS_GREEN_PORT=0;}
11
#define statusledSetGreenOffO()  {STATUS_GREEN_PORT=1;}
12
#define statusledSetRedO()    {STATUS_RED_PORT=0;}
13
#define statusledSetRedOffO()  {STATUS_RED_PORT=1;}
14
#define statusledSetOrange()  {STATUS_RED_PORT=0; STATUS_GREEN_PORT=0;}
15
#define statusledSetOff()      {STATUS_RED_PORT=1; STATUS_GREEN_PORT=1;}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.