static char im Interrupt definieren

Gast #1982252
Lesenswert?

Hey zusammen,

bei dem Versuch die static-Variable im Interrupt zu deklarieren bekomme 
ich die Nachricht "invalid expression". Was ist denn daran invalid?

Ich benutze die Demo des AVR-compilers von Mikroelectronika (Mikroc) in 
der neuesten Version
1
void interrupt() org IVT_ADDR_INT6 /*iv IVT_ADDR_INT7*/ {
2

3
     SREG_I_bit=0;
4
     static char i=0x00;   //--> invalid expression
5

6
     if (V1_PHASE_A) i=1;  //graycode to binary
7
     if (V1_PHASE_B) i^=3;
8

9
     i-=stand;
10

11
     if (i==-3) i=1;
12
     if (i==3) i=-1;
13

14
     Wert_rel+=i;
15

16
     i=0;
17
     SREG_I_bit=1;
18
}
Gast #1982260
Lesenswert?

wunderbar, funzt prima, danke dir!

weiß jemand, wie man diese Funkton von zwei Interrupts (Int an pin 6 und 
7) triggern lassen kann? Wenn ich die Kommentarzeichen entferne, wird 
gemeckert...
Gast #1982286
Lesenswert?

Die Version hier haut auch nihct so recht hin...

1
void interrupt() iv IVT_ADDR_INT6 {
2

3

4
     static char i=0x00;
5
     
6
     SREG_I_bit=0;
7

8

9
     if (V1_PHASE_A) i=1;  //graycode to binary
10
     if (V1_PHASE_B) i^=3;
11

12
     i-=stand;
13

14
     if (i==-3) i=1;
15
     if (i==3) i=-1;
16

17
     Wert_rel+=i;
18
     Stand =i;
19
     i=0;
20
     SREG_I_bit=1;
21
}
22

23
void interrupt2() iv IVT_ADDR_INT7  {
24

25
SREG_I_bit=0;
26
interrupt();
27
}

die Meldung:

14 364 Recursion or cross-calling of 'interrupt' Test Drehgeber.c

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