Timer0 bleibt im ISR

Gast #2543234
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

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