AVR mega8 CTC datasheet上分频计算出错?
按照datasheet上面介绍CTC模式下分频的计算公式fOCnA = fclk_io/(2 *N* (1+ OCRnA ))------------ 公式1
但我实际测试出来的分频值却貌似应该是
fOCnA = fclk_io/(N* (1+ OCRnA ))----------------- 公式2
这样算的。
下面是我的实测代码,8M外部晶振,理论上应该是PB0输出应该是持续40ms的高地电平变化实际上却是20ms的高电平变化。
如果是用公式1,想不通,但用公式2算却是合理的,难道是datasheet上出错?还是我自己算出了,请各位大虾赐教。void TimeCounter1_Init(void)
{
TCCR1A = 0;
TCCR1B = (1<<WGM12);
OCR1A= 156;
TIFR = 0; //clear interrupt flag
TIMSK = (1<<OCIE1A); //enable compare match interrupt
DDRB = 0x01;
TCNT1 = 0;TCCR1B |=(1<<CS10)|(1<<CS12);sei();//enable T/C0;
}
volatile uChar Count = 0;
ISR(TIMER1_COMPA_vect)
{
PORTB++ ; //Count;
}
int main( void )
{
TimeCounter1_Init();
for(;;)
{
}
return 0;
} 是我自己算错了,不好意思啊!
页:
[1]