variablen Fehler

#6731771
Lesenswert?

Ich habe ein Komplexeres Programm geschrieben, habe aber das Problem auf 
diesen Einfachen Fall reduzieren können.

Das ist der Code von einen Attiny45 und soll einfach nach Überlaufen des 
Timers0 einen Interrupt auslößen welcher die Variable i auf 1 setst.
Das wiederum sollte in der main schleife dazu führen das der Ausgang 
(PINB4)
auf HIGH geschaltet wird.

Das ist nicht der Fall und deshalb würde ich gerne wissen was ich falsch 
gemacht habe, bzw. wie es richtig geht.

---
Ich habe den Ausgang geprüft er funtioniert.
Wenn ich den PORTB Befehl in den Interrupt schreibe geht der Ausgang an.

1
#define  F_CPU 1000000
2
#include <avr/io.h>
3
#include <avr/interrupt.h>
4

5
uint8_t i = 0;
6

7
int main(void)
8
{
9
    sei(); //Enable Global Interupt
10
    TCCR0B |= (1<<CS00); //Timer set Prescaler 1
11
    TIMSK |= (1<<TOIE0); //Enable Overflow Interrupt
12

13
    DDRB |= (1<<PINB4); //Output PINB4
14

15
    while (1) 
16
    {
17
        if(i == 1)
18
        {
19
          PORTB |= (1<<PINB4); //Set PINB4 High
20
        }
21
    }
22
}
23

24
ISR(TIMER0_OVF_vect)
25
{
26
  i = 1;
27
}

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