Forum: Mikrocontroller und Digitale Elektronik Timer beim Atmega 1284P


von André R. (andr_r23)


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 :-)

von spess53 (Gast)


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

von André R. (andr_r23)


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.

von DerFlo (Gast)


Lesenswert?

TOIE Bit vergessen zu setzen...

von spess53 (Gast)


Lesenswert?

Hi

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

Nö.

  (1024*65536)/12000000

ergibt eine Zeit. Du rechnest die Frequenz aus.

MfG Spess

von André R. (andr_r23)


Lesenswert?

DANKE,

Hauptproblem gelöst durch das setzen von TOIE3.

Danke auch für den Tipp mit der Zeit, war ein bischen dumm von mir, 
natürlich hast du Recht :-).

Vielen Dank alles funktioniert.

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.