Timer beim Atmega 1284P

OP #2902864
Lesenswert?

Hi, habe vor den Timer3 des Atmega1284P zu benutzen um nach einer 
gewissen Zeit etwas auszuführen.

Der Timer3 ist ein 16 Bit Timer der von 0 bis 65535 zählt. Bei 12Mhz 
brauche ich also in etwa 56mal einen Overflow für 10 Sekunden (Bei 1024 
Prescale).

Nun wird aber der Befehl NIE ausgeführt? Wodran kann es liegen?

Ich habe folgendermaßen Programmiert, wobei die Variable ovf mein Flag 
ist das ich hochzähle.
#######################################
...
......
........

volatile unsigned long  ovf= 0;

ISR(TIMER3_OVF_vect){
  ovf++;
}

int main(void){

.....
....

TCCR3B|=(1<<CS32)|(1<<CS30); //Für 1024 Prescale

....
sei();

...
.....

if(ovf>=56){
  get_average_7789();
  ovf = 0;
}
...
....
......
}

Hab ich vielleicht vergessen irgendein Bit zu setzen? Das 
get_average_7789 ist die Funktion die ausgeführt werden soll wenn 10 
Sekunden verstrichen sind.

Vielen Dank :-)
Gast #2902878
Lesenswert?

Hi

>Der Timer3 ist ein 16 Bit Timer der von 0 bis 65535 zählt. Bei 12Mhz
>brauche ich also in etwa 56mal einen Overflow für 10 Sekunden (Bei 1024
>Prescale).

Bei 12MHz und Prescaler 1024 hast du alle 5,6 s einen Overflow.

MfG Spess
OP #2902889
Lesenswert?

spess53 schrieb:
> Hi
>
>>Der Timer3 ist ein 16 Bit Timer der von 0 bis 65535 zählt. Bei 12Mhz
>>brauche ich also in etwa 56mal einen Overflow für 10 Sekunden (Bei 1024
>>Prescale).
>
> Bei 12MHz und Prescaler 1024 hast du alle 5,6 s einen Overflow.
>
> MfG Spess

WIe kommst du auf die 5,6s ?

12000000/(1024*65535) = 0,17882 Sekunden für einen Overflow oder nicht.

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