Forum: Compiler & IDEs Timer2 OVF // 1 Sekunde.


von Norbert63 (Gast)


Lesenswert?

Hallo Gemeinde,


Kann mir jemand sagen wieso ich er nicht jede Sekunde in den OVF springt 
?!
1
// LED = PORTD.4
2
3
4
#define F_CPU 16000000UL
5
#include <avr/io.h>
6
#include <avr/interrupt.h>
7
8
9
ISR( TIMER2_OVF_vect ) {
10
11
PORTD ^= _BV(PD4);
12
TCNT2 = 131;
13
14
}
15
16
17
int main(void)
18
{
19
  
20
  
21
  DDRD = 0xff;
22
//  PORTD = (0<<PD4);
23
  
24
  
25
26
 TCCR2 |= (1<<CS22) | (0<<CS21) | (1<<CS20); 
27
 TIMSK |= (1<<TOIE2);            
28
 sei ();  
29
  
30
    while(1)
31
    {
32
        //TODO:: Please write your application code 
33
    }
34
}

von tscheche (Gast)


Lesenswert?

Was für einen AVR hast du?

von Thomas E. (thomase)


Lesenswert?

1. Ein Attiny25 hat gar keinen Timer2
2. Wenn er einen hätte, würde er mit Prescaler 128 bei 16MHz auf maximal
   1/16MHz/128/256 = ~2ms kommen
3. macht man das nicht mit OVF-Int sondern mit CTC

Ändert aber alles nichts. Mit einem 8-Bit-Timer geht das nicht.

mfg.

von Norbert63 (Gast)


Lesenswert?

Sorry :(

Ich habe einen ATmega 32 !

von Norbert63 (Gast)


Lesenswert?

okay stimmt....!

Ich habe jetzt den Timer1 benutzt...


Prescaler = 128 | Preload = 64286

von Thomas E. (thomase)


Lesenswert?

Norbert63 schrieb:
> okay stimmt....!
>
> Ich habe jetzt den Timer1 benutzt...
>
>
> Prescaler = 128 | Preload = 64286

Lass diesen Preload-Quatsch. Sowas hat man in der Steinzeit gemacht oder 
beim Atmega8 mit dem 8048-Revival-Timer 0. Guck dir den CTC-Mode an.

mfg.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.