Forum: Compiler & IDEs 16 bit Timer rasst davon..


von Crusader (Gast)


Lesenswert?

Hallo Zusammen

Ich bin gerade dabei bei einem Atmega2560 mit den Timern etwas 
herumzuspielen. Ich habe nun verucht mit timer 3 im CTC modus eine ISR 
im 1 Sekunden Takt auszulösen. Nun ist es aber so dass dauer zwischen 
den Interrupts bei etwa 200mS liegen, also viel zu schnell...
Ich habe nun etwa 10 mal das entsprechende Kapitel im datenblatt gelesen 
und komme einfach nicht weiter. Was mache ich falsch?
1
#define F_CPU  16000000UL
2
3
#include <avr/io.h>
4
#include <avr/interrupt.h>
5
6
7
int main(void)
8
{
9
  uint16_t Timer = (F_CPU/1024) -1;
10
  TCCR3A = (1<<WGM31);      //CTC Mode
11
  TCCR3B = (1<<CS32) | (1<<CS30);    //prescaler 1024
12
  
13
  OCR3AH = (Timer>>8);      //t = 1s
14
  OCR3AL = Timer;
15
  
16
  TIMSK3 |= (1<<OCIE3A);    
17
  sei();
18
  DDRL = 0xFF;
19
    while(1)
20
    {
21
        //Blablabla
22
    }    
23
}
24
25
  ISR(TIMER3_COMPA_vect)
26
  {
27
    PORTL ^= (1<<PL0);
28
  }

von Thomas E. (thomase)


Lesenswert?

Crusader schrieb:
> TCCR3A = (1<<WGM31);      //CTC Mode

das ist Phase Correct PWM. CTC ist WGM32 in TCCR3B.

mfg.

von Crusader (Gast)


Lesenswert?

Danke. Heute Morgen habe ich es auch geschnallt... Ich hatte die Tabelle 
des 8Bit Timers angeschaut und dort ist es eben der WGM1..

Danke vielmals!

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.