Hey, ich hab gerade mal versucht den Timer Interrupt beim Atmega8 auf 1s zu legen und dann eine LED an/auzuschalten. Leider tut sich bei mir gar nichts. Wenn ich die LED innerhalb der Endlosschleife im Hauptprogramm schalte geht's. Also nehme ich an, daß er nicht in die ISR geht. Jemand ne Idee warum? Code: http://nopaste.php-q.net/291745 mfg
Was für einen Compiler verwendest Du überhaupt? Wenn das GCC sein soll (was ich aus einigen Details mal schließe), dann frage ich mich, wo Du die Syntax für die ISR her hast. Eine ISR wird in AVR-GCC mit
1 | ISR(VEKTORNAME_vect) |
2 | {
|
3 | //Code
|
4 | }
|
eingeleitet.
Hallo, an der Zeile hatte ich mal was geändert (anderen Compiler benutzt), um zu gucken ob da der Fehler liegt. Hab's jetzt wieder auf: ISR (TIMER1_OVF_vect) //ISR für Timer1 { TCNT1=0x85ED; //Reloadwert, ISR wird jede Sekunde aufgerufen //if (stat==0) //{ an(); } //else //{ an(); } PORTC &= ~( 1 << PC5 ); } geändert, aber leider bringt das auch kein Ergebnis.
Hallo, die ist doch über #include "interrupt.h" eingebunden (hab sie vorher in den Projektordner kopiert. Gerade mal mit #include <avr/interrupt.h> probiert, aber auch keinen Erfolg :(
Huch, nun geht's. Der Timer-Wert stimmt zwar nicht, aber wenigstens funktioniert der Interrupt. Besten Dank für die Tipps!
Kleiner Tip: So was macht man i.d.R. mit dem CTC-Modus des Timers und einem Compare-Interrupt. Das erspart einem das Nachladen des Timers in der ISR und ist genauer. Und die .h-Dateien kopiert man nicht in den Projektordner sondern bindet sie von da aus ein, wo sie stehen.
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.