Forum: Mikrocontroller und Digitale Elektronik Mein Interruptprogramm funktioniert nicht


von Markus M. (Gast)


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

von Markus M. (Gast)


Lesenswert?

Ich weiß wirklich nicht mehr weiter

von Karl H. (kbuchegg)


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.)

von Martin (Gast)


Lesenswert?

Hmm... Ich kenne die C-Control zwar nicht, aber irgendwie scheinen die 
IRQ-Nummern nicht zu stimmen.

INT_1 --> externer Interrupt1
Ext_IntEnable(0,2); --> ext. IRQ 0

von Markus M. (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


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

von Markus M. (Gast)


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

von Markus M. (Gast)


Lesenswert?

Habe ich etwa noch einen Fehler gemacht ?

von Markus M. (Gast)


Lesenswert?

Und das andere Forum hilft mir auch nicht

von Oliver (Gast)


Lesenswert?

Markus M. schrieb:
> Und das andere Forum hilft mir auch nicht

Das ist dann schlecht. Hier im Forum hat vermutlich überhaupt niemand 
Erfahrung mit dem Gerät, im anderen Forum wäre das eigentlich zu 
erwarten gewesen. Dann bliebt dir wohl nur, das Problem selber zu lösen.

Oliver

von zagge (Gast)


Lesenswert?

kenne c-control überhaupt nicht, möglicherweise optimiert der Compiler 
das aber alles weg.
ev. cnt als volatile deklarieren ...

von Karl H. (kbuchegg)


Lesenswert?

zagge schrieb:
> kenne c-control überhaupt nicht, möglicherweise optimiert der Compiler
> das aber alles weg.

:-)
Da gibts so keinen echten Compiler auf Maschinencode-Ebene.
Das Programm wird tokenisiert und von einem Interpreter abgearbeitet.

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.