globale Variable in Interruptroutine ansprechen

Gast #515742
Lesenswert?

Ich verstehs nicht...
Ich versuche eine globale Variable in der ISR anzusprechen.
Der CodeVision-Compiler meldet mir immer nur: "undefined symbol 'tick'"
Was mache ich falsch??

Hier der Code:
1
#include <mega128.h>
2

3
// Timer 1 overflow interrupt service routine
4
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
5
{
6
// Place your code here
7
tick++;
8
}
9

10
// Declare your global variables here
11
volatile unsigned char tick;
12

13
void main(void)
14
{
15

16
//[....] Initialisierung der Hardware
17

18
while (1)
19
     {
20
     // Place your code here
21
   #asm("nop");
22
   #asm("nop");
23
     };
24
}
Gast #515754
Lesenswert?

1
#include <mega128.h>
2

3
uint16_t tick = 0;
4

5
// Timer 1 overflow interrupt service routine
6
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
7
{
8
// Place your code here
9
tick++;
10
}
11

12
// Declare your global variables here
13
volatile unsigned char tick;
14

15
void main(void)
16
{
17

18
//[....] Initialisierung der Hardware
19

20
while (1)
21
     {
22
     // Place your code here
23
   #asm("nop");
24
   #asm("nop");
25
     };
26
}

oder alternativ

#include <mega128.h>
1
// Timer 1 overflow interrupt service routine
2
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
3
{
4
static uint16_t tick = 0;
5
// Place your code here
6
tick++;
7
}
8

9
// Declare your global variables here
10
volatile unsigned char tick;
11

12
void main(void)
13
{
14

15
//[....] Initialisierung der Hardware
16

17
while (1)
18
     {
19
     // Place your code here
20
   #asm("nop");
21
   #asm("nop");
22
     };
23
}
Gast #515759
Lesenswert?

Aua.
Jetzt sehe ichs auch...
Da hab ich mich zu sehr auf den Codegenerator von CodeVision verlassen 
und gar nicht darüber nachgedacht, dass die globalen Variablen am 
sinnvollsten am Anfang der Datei stehen sollten...
Gast #517325
Lesenswert?

Macht sowas Sinn?  Globale Variablen sind doch deshalb global, weil sie 
in verschiedenen Prozessen beschrieben werden. Ein ISR kann aber 
jederzeit auftreten - du hast also keine HandlungsKontrolle über den 
Ablauf! (?)
Gast #517329
Lesenswert?

@Hamburgs Mannheimer

>Macht sowas Sinn?  Globale Variablen sind doch deshalb global, weil sie
>in verschiedenen Prozessen beschrieben werden. Ein ISR kann aber

Ja eben. Der ISR beschreibt sie, ein oder mehrere Prozesse lesen sie. 
Das ist ein Standardvorgehensweise.

MFG
Falk

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