Mein Interruptprogramm funktioniert nicht

Gast #3181184
Lesenswert?

Autor: Markus M. (Gast)

Datum: 28.05.2013 10:49

------------------------------------------------------------------------ 
--------





Hallo zusammen,

ich beschäftige mich mit der c coontrol pro und habe folgendes Programm
geschrieben:
1
#define LED1 0
2
#define SW1 27
3

4
int cnt;
5
int i;
6

7
void main(void)
8
{
9
 Port_DataDirBit(LED1,PORT_OUT);
10
 Port_DataDirBit(SW1, PORT_IN);
11

12
 Irq_SetVect(INT_1,IRQ);
13
 Ext_IntEnable(0,2);
14

15
 cnt=0;
16

17
 while(1)
18
 {
19
  if(cnt==1)
20
  {
21
   Port_WriteBit(LED1,PORT_ON);
22
   AbsDelay(20000);
23
  }
24
  if(cnt==2)
25
  {
26
   for(i=0;i<10;i++)
27
   {
28
    Port_WriteBit(LED1,PORT_ON);
29
    AbsDelay(1000);
30
    Port_WriteBit(LED1,PORT_OFF);
31
    AbsDelay(1000);
32
   }
33
  }
34
  AbsDelay(5000);
35
 }
36
}
37

38
void IRQ(void)
39
{
40
 cnt=Irq_GetCount(INT_1);
41
}
Das Programm wurde richtig kompiliert und übertragen( natürlich auch
gestartet). Doch die LED leuchtet nicht, egal wie oft ich auf SW1
drücke. Die Bauteile sind funktionsfähig und richtig eingesetzt. Kann
mir jemand verraten, was ich falsch gemacht habe ?

Danke im Voraus

Markus
#3181234
Lesenswert?

Hmm. Wenn ich mir hier
http://www.c-control-pro.de/documentation/index.html

die Hardware Doku zum Mega32 Board ansehe, dann scheint der SW1 auf den 
Interrupt 0 zu liegen und nicht am INT_1
Sehe ich in der Doku zum Mega128 Board nach, dann liegt der SW1 
scheinbar auf INT4 und nicht am INT_1

Abgesehen davon denke ich, dass du in einem Forum, welches sich auf die 
C-Control spezialisiert hat, wesentlich besser aufgehoben bist, als hier 
bei uns.

zb
http://ccpro.cc2net.de/forum/index.php
(Es mag noch andere Foren zur C-Control geben.)
#3181269
Lesenswert?

Markus M. schrieb:
> Das ist es vielleicht. Ich kam nie mit dem Befehl Ext_IntEnable()
> zurecht. Was bedeutet dann eigentlich die 2?


Ähm.
Ich hab dir einen Link auf ein Forum verlinkt.
Da gibt es auch einen Punkt 'Online-Manual'.
Das solltest du wirklich ernst nehmen. Denn niemand hier hat Lust, für 
dich die Dinge aus der Hilfe herauszusuchen, die du dir auch selbst 
raussuchen kannst.

http://www.c-control-pro.de/documentation/index.html
Gast #3181503
Lesenswert?

1
#define LED1 0
2
#define SW2 27
3

4
int cnt;
5
int i;
6

7
void main(void)
8
{
9
 Port_DataDirBit(LED1, PORT_OUT);
10
 Port_DataDirBit(SW2, PORT_IN);
11

12
 Irq_SetVect(INT_1,IRQ);
13
 Ext_IntEnable(1,2);
14

15
 cnt=0;
16

17
 while(1)
18
 {
19
  if(cnt==1)
20
  {
21
   Port_WriteBit(LED1,PORT_ON);
22
   AbsDelay(20000);
23
  }
24
  if(cnt==2)
25
  {
26
   for(i=0;i<10;i++)
27
   {
28
    Port_WriteBit(LED1,PORT_ON);
29
    AbsDelay(1000);
30
    Port_WriteBit(LED1,PORT_OFF);
31
    AbsDelay(1000);
32
   }
33
  }
34
 AbsDelay(5000);
35
 }
36
}
37

38
void IRQ(void)
39
{
40
 cnt=Irq_GetCount(INT_1);
41
}

Dieses Programm sollte eigentlich funktionieren. Aber das tut es nicht

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