Forum: Mikrocontroller und Digitale Elektronik Atmega8 Timer Interrupt


von Michael Müller (Gast)


Lesenswert?

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

von johnny.m (Gast)


Lesenswert?

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.

von Michael Müller (Gast)


Lesenswert?

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.

von johnny.m (Gast)


Lesenswert?

Du musst die avr/interrupt.h einbinden, sonst geht das nicht

von Michael Müller (Gast)


Lesenswert?

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 :(

von Michael Müller (Gast)


Lesenswert?

Huch, nun geht's.
Der Timer-Wert stimmt zwar nicht, aber wenigstens funktioniert der 
Interrupt.
Besten Dank für die Tipps!

von johnny.m (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.