Hallo,
ich habe ein seltsames Problem.
In mein Atmel Studio 6 Projekt habe ich ein neues file.c generiert und
dort meine Timer interrupt routine ISR(... eingefügt.
Interessanterweise findet der compiler diese routine nicht, obwohl
andere
Funktionen in genau dem gleichen File aufgerufen werden können.
Die ISR an sich ist auch richtig geschrieben, da wenn ich die ganze
Routine in ein anderes file kopiere, funktioniert alles einwandfrei.
Wie kann das sein? Habt ihr eine Idee?
Viele Grüße
S.
Kann man damit was anfangen? Nein, weil der Code an sich funktioniert,
wie ich schon sagte. Er funktioniert nur nicht, wenn ich ihn in meine
file.c
einfüge... Soll ich vll das ganze Projekt hochladen oder wie soll das
gehen??
S. schrieb:> Sehr lustig.
Der Post von Holger ist lustig. Der von witzig dagegen überhaupt nicht.
> Hier der Code:>>
1
>ISR(TIMER0_COMPA_vect)
2
>{
3
>DDRA|=(1<<PINA7);
4
>PORTA|=(1<<PINA7);
5
>
6
>}
7
>
>>> Kann man damit was anfangen? Nein, weil der Code an sich funktioniert,> wie ich schon sagte. Er funktioniert nur nicht, wenn ich ihn in meine> file.c> einfüge... Soll ich vll das ganze Projekt hochladen oder wie soll das> gehen??
Ja, wie denn sonst. Daß die 3 Zeilen da oben funktionieren, sieht jeder
Idiot. Aber das schriebst du ja schon.
mfg.
Wird die andere File (in die du die ISR verschiebst) ggf. nicht zum
Projekt gelinkt?
ISR sind weak symbols - wenn die am Ende fehlen gibt es keinen Fehler...
...und so wird Fehlerverhalten erst waehrend der Ausfuehrung bemerkbar.
MfG
S. schrieb:> Ich kopiere die ISR einfach in ein anderes file und dann ist der Fehler> da...
Wenn ich sowas mache, funktioniert das. Genauso wie bei jedem anderen
auch.
Also zeig das File, wo du das reinkopierst und die Fehlermeldungen und
Warnungen. Das, was du bisher veröffentlicht hast, interessiert kein
Schwein.
mfg.
Kann es sein, das Du file.c (noch) nicht als Projektfile hinzugefügt
hast?
Falls, nein, gibt es mehrere Dateien namens "file.c" auf Deinem Rechner?
Kann es sein, das Du die ISR in einer anderen Datei namens "file.c"
hinzugefügt hast, als jene die Du als projektfile hinzugefügt hast?
Falls das alles nicht relevant ist, dann poste mal das ganze Projekt als
ZIP-File. Vielleicht mag das mal jemand hier anschauen. (Ich habe kein
AVRStudio 6).
Ich habe den Fehler gefunden. umfall
In das func.c wird über 3 Ecken die Bibliothek
#include <avr/interrupt.h>
eingebunden... und in mein file.c nicht.
Natürlich. Jetzt ist alles klar. Sorry für meinen Aufruhr, hatte
eigentlich
vorher schon alle Biblothekten abgeglichen, aber diese ist mir zwischen
den Händen weggeglitten...
Danke trotzdem für eure Hilfe!!!
S. schrieb:> Ich habe den Fehler gefunden. *umfall*>> In das func.c wird über 3 Ecken die Bibliothek> #include <avr/interrupt.h>> eingebunden... und in mein file.c nicht.
Interessant.
Und da gabs keine Warnung, dass die Funktion
1
ISR(TIMER0_COMPA_vect)
2
{
3
DDRA|=(1<<PINA7);
4
PORTA|=(1<<PINA7);
5
6
}
namens "ISR" keinen Return-Datentyp hat und der Compiler mit
TIMER0_COMPA_vect nichts anfangen kann?
Wenn da wirklich nichts gekommen ist, dann kontrollier deine
Warning-Levels!
(Aber eigentlich, wenn ichs mir recht überlege, hätte das sogar ein
Error sein müssen)
Karl Heinz schrieb:> Wenn da wirklich nichts gekommen ist, dann kontrollier deine> Warning-Levels!> (Aber eigentlich, wenn ichs mir recht überlege, hätte das sogar ein> Error sein müssen)
Mein warning level ist: -pedantic -w
Ich kann mich auf den Kopf stellen, aber ich bekomm weder errors noch
warnings, egal was ich mach: Build, Rebuild, clean solution+rebuild....
Vll weiß hier jemand auch Rat, wie bei solchen Fällen zu mindest ein
warning
ausgegeben wird?
S. schrieb:> Mein warning level ist: -pedantic -w>> Ich kann mich auf den Kopf stellen, aber ich bekomm weder errors noch> warnings, egal was ich mach: Build, Rebuild, clean solution+rebuild....
Ist ja auch kein Wunder, wo du doch sämtliche Warnings abschaltest.
Stefan Ernst schrieb:> Ist ja auch kein Wunder, wo du doch sämtliche Warnings abschaltest.
Why? Ahso, das flag ist natürlich auch noch gesetzt: -Wall
Wüsste nicht welche flags ich noch setzen könnte.
S. schrieb:> Why?
Ernsthaft? Du hast zwei Optionen gepostet, und ich habe das damit
kommentiert, dass du die Warnungen abschaltest. Ist es jetzt echt so
schwer, diese Optionen einfach mal in der Doku nachzuschlagen?
Stefan Ernst schrieb:> Ernsthaft? Du hast zwei Optionen gepostet, und ich habe das damit> kommentiert, dass du die Warnungen abschaltest. Ist es jetzt echt so> schwer, diese Optionen einfach mal in der Doku nachzuschlagen?
Ich habe deinen Post interpretiert, dass ich ein flag vergessen hab zu
aktivieren. Dann hab ich nachgeschaut und kein weiteres flag finden
könne.
Deshalb war meine Frage wohl ernsthaft...
Mittlerweile habe ich verstanden, dass ich das Wort "inherit" aus dem
englischen falsch übersetzt habe und -w deaktiviert.
Egal...