Timer0 bleibt im ISR

Gast #2543234
nabend :-)
ich bin eben am verzweifelten versuch den Timer0 eines ATMega8 im OVF zu 
nutzen. Dabei habe ich eine funktionierenden Code aus einem älteren 
Projekt genutzt, neu compeliert und ausgeführt. Geht aber nicht. Wenn 
ich dann mit F11 den neuen Code ausführe, dann zählt der Timer bis 0x03h 
oder 0x20h. Je nach dem was für einen Prescaler eingestellt habe. 
komisch. In der Codeansicht sieht man wie nur der ISR Code ausgeführt 
wird und nicht zurück in den unterbrochenen Code springt.

Hier der Code den ich um den Timer zu testen geschrieben habe:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3

4
const uint8_t T_COUNT = 100;
5
uint8_t timeCounter = 0;
6

7
uint8_t checkISR = 0;
8

9
ISR (TIMER0_OVF_vect)
10
{
11
  timeCounter++;
12
  if(timeCounter>=T_COUNT){  
13
    timeCounter = 0;
14
    checkISR = 1;
15
        }
16
}
17

18
int main(void){
19
  
20
  DDRD |= (1 << DDD5); //LED1
21
  PORTD &= ~(1<<PD5); // Port aus
22

23
  TCCR0 = (1 << CS02)|(1<< CS00); // Prescaler
24
  TIMSK |= (1 << TOIE0);  //Bei Overflow Interrupt auslösen
25

26
  sei(); // Interrupts global freigeben
27

28
  while(1)
29
  {
30
  if (checkISR == 1) {
31
    PORTD |= (1<<PD5);
32
    checkISR = 0;
33
    }
34
  }
35
  
36
  return 0;
37
}
Gast #2543256
ja das habe ich. Ich hab den Code auf das nötigste verkleinert unm nur 
den Timer zu testen. und genau das macht er nicht:

>Der Zähler zählt nun aufwärts bis 255, um dann wieder bei 0 zu beginnen.
>Der aktuelle Zählerstand steht in TCNT0. Bei jedem Überlauf von 255 auf 0
>wird das Timer Overflow Flag TOV0 im Timer Interrupt Flag TIFR-Register gesetzt
>und, falls so konfiguriert, ein entsprechender Timer-Overflow-Interrupt ausgelöst
>und die daran gebundene Interrupt-Service-Routine (ISR) abgearbeitet.
>Das TOV Flag lässt sich durch das Hineinschreiben einer 1 und nicht wie erwartet
>einer 0 wieder zurücksetzen.

er zählt entweder bis 0x03 oder 0x20. Wo liegt da der fehler? Hat der 
Compiler ne Fehler?
Gast #2543321
Ich hab das gefühl als ob mich mein AVR Studio "verarscht" Das ist nicht 
das erste Projekt oder Programm. Ich hab jetzt eine ganz neues Projekt 
erstellt, mit dem Assistenten, Namen und Speicherort eingegeben, als 
Simulator den AVR Simulator gewählt und dann den ATMega8 so wie ich das 
immer mache. Ich glaub ich werd das AVR Studio neu installieren und 
schau dann mal.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.