mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega8 Timer Interrupt


Autor: Michael Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
ISR(VEKTORNAME_vect)
{
    //Code
}
eingeleitet.

Autor: Michael Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: johnny.m (Gast)
Datum:

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

Autor: Michael Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :(

Autor: Michael Müller (Gast)
Datum:

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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.