Timerproblem atmega

Gast #5609011
Lesenswert?

Hi,
ich habe ein Problem mit dem Timer0 vom atmega und hoffe, dass ihr mir 
weiterhelfen könnt.
1
#define F_CPU 16000000UL
2
#include <avr/io.h>
3
#include <avr/interrupt.h>
4
#include <util/delay.h>
5

6
int main(void)
7
{
8
  DDRB |= (1<<PINB5);
9
  PORTB &= ~(1 << PINB5);
10
  
11
  TCCR0A |= (1 << WGM01); // CTC-Mode
12
  TCCR0B |= (1 << CS00) | (1 << CS01); // clkI/O/64
13
  OCR0A |= (250 - 1);
14
  TIMSK0 |= (1 << TOIE0);
15
  
16
  sei();
17
    while (1) 
18
    {
19
    
20
    }
21
}
22

23
ISR (TIMER0_OVF_vect)
24
{
25
  static int32_t milliseconds = 0;
26
  milliseconds++;
27
  
28
  if(milliseconds>=1000)
29
  {
30
    PORTB ^= (1<<PINB5);
31
    milliseconds = 0;
32
  }
33
}

Der Code ist noch ganz übersichtlich. Ich möchte zunächst die LED in der 
ISR im Sekundentakt toggeln lassen. Doch leider bleibt diese aus. (auch 
wenn ich die LED direkt beim eintreten in der ISR toggeln lassen möchte, 
bleibt diese aus). Wenn ich in der while-schleife allerdings ein 
_delay_ms(500); und dann die LED Toggle, blinkt diese im 500ms-Takt.
Aber was ist am Timer falsch? Oder warum wird nicht in die ISR 
gesprungen?
Gast #5609040
Lesenswert?

Kai schrieb:
> ich habe ein Problem mit dem Timer0 vom atmega und hoffe, dass ihr mir
> weiterhelfen könnt.

Wäre es zuviel Arbeit für dich anzugeben welchen Controller
du genau meinst .. denn die Vielfalt an ATMegas ist immens.

Jedenfalls würdest du den hilfsbereiten Leuten hier eventuell
viel Arbeit abnehmen wenn sie nicht auf den ersten Blick sehen
welcher Controller zu deinem Timer passt.

Dies nur für eventuell zukünftige Fälle ...

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