Stephan R. schrieb:
> Es will nicht klappen!!
> Wenn nicht ISR und Variablendekaration direkt nebeneinanderstehen,
> behauptet er, die Variable wäre nicht deklariert!
Code zeigen wäre hilfreich.
my_int.c:
1 | #include "my_int.h"
|
2 |
|
3 | // Globale Variable für den Datenaustausch
|
4 | // zwischen ISR und main()
|
5 | volatile char foo;
|
6 |
|
7 | ISR(TIMER2_COMP_vect)
|
8 | {
|
9 | foo = 1;
|
10 | }
|
my_main.c:
1 | #include "my_int.h"
|
2 |
|
3 | int main(void)
|
4 | {
|
5 | // TIMER2_COMP aufsetzen...
|
6 | while (1)
|
7 | {
|
8 | if (foo != 0)
|
9 | {
|
10 | // auf TIMER2_COMP reagieren...
|
11 | // Gemeinsame Variable zurücksetzen
|
12 | foo = 0;
|
13 | }
|
14 | }
|
15 | }
|
my_int.h:
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 | extern volatile char foo;
|
> Nebenbei: muss ich für eine ausgelagerte ISR einen Prototypen im
> Headerfile anlegen? Und ohne Auslagerung?
> Sähe der Prototyp für ISR(TIMER0_COMP_vect) dann so
> ISR(TIMER2_COMP_vect);
> aus?
> Fragen über Fragen. Zeit fürs erste Flens..
Nein für die ISR brauchst du keinen Prototypen anzulegen.
Die avr/interrupt.h hast du includiert, damit ISR und TIMER2_COMP_vect
beim Kompilieren bekannt sind?