if(num==0)
{
if(period<0x100)
- {
cs = BIT(CS00);
- }
else if(period<0x800)
{
cs = BIT(CS01);
OCR0A = period;
TIMSK0 = BIT(OCIE0A);
}
- if(num==1)
+ else if(num==1)
{
if(period<0x10000)
- {
cs = BIT(CS10);
- }
else if(period<0x80000)
{
cs = BIT(CS11);
OCR1AL = period;
TIMSK1 = BIT(OCIE1A);
}
+ else if(num==2)
+ {
+ if(period<0x100)
+ cs = BIT(CS20);
+ else if(period<0x800)
+ {
+ cs = BIT(CS21);
+ period /= 8;
+ }
+ else if(period<0x2000)
+ {
+ cs = BIT(CS21) | BIT(CS20);
+ period /= 32;
+ }
+ else if(period<0x4000)
+ {
+ cs = BIT(CS22);
+ period /= 64;
+ }
+ else if(period<0x8000)
+ {
+ cs = BIT(CS22) | BIT(CS20);
+ period /= 128;
+ }
+ else if(period<0x10000)
+ {
+ cs = BIT(CS22) | BIT(CS21);
+ period /= 256;
+ }
+ else
+ {
+ cs = BIT(CS22) | BIT(CS21) | BIT(CS20);
+ period /= 1024;
+ if(period>0xFF)
+ period = 0xFF;
+ }
+ TCCR2A = BIT(WGM21);
+ TCCR2B = cs;
+ OCR2A = period;
+ TIMSK2 = BIT(OCIE2A);
+ }
}
void timer_start_hz(uint8_t num, uint32_t freq_p, uint8_t freq_q)
TCCR1B = 0;
TIMSK1 = 0;
}
+ else if(num==2)
+ {
+ TCCR2B = 0;
+ TIMSK2 = 0;
+ }
}