Timer1 Overflow

Gast #364840
Lesenswert?

Hi Leute

sicher ein leichtes Ding für euch: Beim Overflow des T1 soll ein
Register um 1 erhöht, und als LED Leiste angezeigt werden.

Leider bleiben die LEDs alle aus. Nichts erhöht sich.
Springt der vielleicht nicht in die INT-Routine?
Angehängte Dateien:
Gast #364842
Lesenswert?

So wird das nix..
Du brauchst globale Variablen, auf die du aus jeder Funktion zugreifen
kannst. Dann brauchst du noch das Schlüsselwort volatile, damit du auf
die Variable auch aus Interruptroutinen aufrufen kannst, sonst denkt
sich der Compiler vielleicht mal, dass er da irgendwas optimieren kann,
was ungut wäre

#include <avr/io.h>
#include <avr/iom8515.h>
#include <avr/interrupt.h>

volatile uint8_t min_counter_low = 0x00;
volatile uint8_t min_counter_high = 0x00;
volatile uint8_t overflw = 0x00;

int main(void)
{DDRB = 0xFF;
 PORTB = 0x00;
 TCCR1B |=  (1<<CS12);
 TIMSK |= (1<<TOIE1);
 sei();
 for (;;)
 {PORTB = min_counter_low;
 }
 return 0;
}
ISR (TIMER1_OVF_vect)
{++overflw;  //++bla ist etwas schneller als bla++
}



  if ( overflw == 5)
  {
    min_counter_low++;
    overflw = 0x00;
  }


}

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