Hallo, Ich habe folgenden Quelltext. Der Timer arbeitet korrekt(Im Simulator ausprobiert).Jedoch wird nicht in die ISR gesprunge, sondern an den Anfang des Programms. Wenn ich mir den erzeugten Maschinencode im Disassembler ansehe, stelle ich fest, dass keine Adresse in die Vektortabelle eingetragen wurde. Wo liegt der fehler?? #include <avr/io.h> #include <stdio.h> #include <avr/interrupt.h> void ISR(TIMER0_OVF_VECT){// Interrupt Funktion /* Interrupt Code */ } int main(void){ init_ports(); init_timer0(); sei(); while(1){ } return 0; }
Erinnert mich etwas an das Problem, was ich vor kruzem hatte: Beitrag "ATMega16 & INT2 mit avrgcc" War ein Fehler beim Linken.
versuch Nr. 2 aus TIMER0_OVF_VECT machst Du TIMER0_OVF_vect Gruß Sebastian
Du musst das void weglassen und TIMER0_OVF_vect benutzen! C ist Case-sensitiv, Groß- und Kleinschreibung müssen unbedingt beachtet werden! Abgesehen davon: Hast Du mal einen Blick in die Device-spezifische Header-Datei geworfen? Da stehen (ziemlich weit unten) die korrekten Namen der Interrupt-Vektoren drin. Da Du leider nicht sagst, was für einen Controller Du verwendest, kann man da so nicht mehr zu sagen. Gruß Johnny
> Ich verwende dem MEGA16
Weiß der Compiler das auch?
Gibt es beim Compilieren Warnmeldungen? Hast Du es mal so ausprobiert,
wie ich es beschrieben habe?
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.