Atmega8 Timer Interrupt

Gast #550249
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
Gast #550258
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.
Gast #550264
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.
Gast #550280
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 :(
Gast #550293
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren