Hallo, kann ich eine ISR in eine eigene Datei legen... main.c (hier läuft das Haupt programm) fetcher.c (von hier werden in regelmäßigen Abständen, Daten von extern geholt) in fetcher.c wird der entsprechende timer initialisiert. Die ISR (TIMER1_COMPA_vect) wird aber nur aufgerufen, wenn sie in der main.c ist, kopiere ich sie in die fetcher.c, wird sie nicht ausgeführt... ich möchte sie aber nicht wirklich in der main.c, da sie dort vom Inhalt nich reingehört... Muss ich irgendwas einstellen, etc? Oder geht das vielleicht garnich? Danke Dirk
Eigentlich sollte das probemlos funktionieren. #include <avr/interrupt.h> in fetcher.c nicht vergessen? Oliver
Wenn der Compiler nichts von der fetcher.c weiß, dann geht das natürlich nicht. Dann geht allerdings auch alles andere, was in fetcher.c steht, nicht. Ansonsten steht der Deklaration einer ISR in einem separaten Modul eigentlich nichts im Wege.
@ Dirk Reske (freak) >kann ich eine ISR in eine eigene Datei legen... Ja. >in fetcher.c wird der entsprechende timer initialisiert. >Die ISR (TIMER1_COMPA_vect) wird aber nur aufgerufen, wenn sie in der >main.c ist, kopiere ich sie in die fetcher.c, wird sie nicht >ausgeführt... Du musst sie logischerweise über ein include einfügen.
1 | #include "fetcher.c" |
MFG Falk
@Oliver: Klar, das muss natürlich auch rein. Allerdings müsste es ohne das #include Warnmeldungen geben...
@ Johannes M. (johnny-m) >Klar, das muss natürlich auch rein. Allerdings müsste es ohne das >#include Warnmeldungen geben... Warum? Die ISR wird nirgends im Code aufgerufen. Die wird nur compiliert und nie daszugelinkt :-0 MFG Falk
??? .c-Dateien werden NIEEEMALS includiert. Natürlich muss fetcher.c im makefile angegeben werden, aber dann sollte es auch funktionieren. Und #include <avr/interrupt.h> darf nicht fehlen, sonst gehts nicht. Oliver
@ Oliver (Gast) >.c-Dateien werden NIEEEMALS includiert. Natürlich muss fetcher.c im OK, hast ja Recht ;-) >makefile angegeben werden, aber dann sollte es auch funktionieren. Bzw. im AVR-Studio im Projektbaum mit drin sein. MFG Falk
Falk Brunner wrote: > Warum? Die ISR wird nirgends im Code aufgerufen. Die wird nur compiliert > und nie daszugelinkt :-0 Doch. Der Compiler meckert dann wegen "Implicit declaration of ISR" oder so ähnlich. Kannst es ja mal ausprobieren. Und .c-Dateien mit #include einzubauen ist auch nicht grad bester Stil...
Stimmt, der Compiler wirft ohne das include mehrere Warnungen, >proc.c:6: warning: return type defaults to 'int' >proc.c:6: warning: function declaration isn't a prototype >proc.c: In function 'ISR': >proc.c:6: warning: type of '__vector_21' defaults to 'int' >proc.c:8: warning: control reaches end of non-void function aber er läuft durch. Oliver
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.