variablen Fehler

OP #6731771
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

Eine eigene Frage? Dieser Thread ist über 5 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.