Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено pv 22 января 2004 г. 14:59
В ответ на: Про константу понял, все верно, а вот с таймером(+) отправлено RUAL 22 января 2004 г. 13:53

TCNT1 - 16 бит.
unsigned int impulsetimer_start,impulsetimer_stop;
а что там будет неправильно?
как ни странно заработало все следующим образом:

#pragma vector=INT0_vect
__interrupt void ext_int0_isr(){
impulsetimer_start=impulsetimer_stop;
impulsetimer_stop=TCNT1;
dt+=(unsigned int)(impulsetimer_stop-impulsetimer_start);
impulsecounter+=1;
}

#pragma vector=ANA_COMP_vect
__interrupt void ana_comp_isr(){
enginefreq_=(((unsigned long)impulsecounter*16666667)/dt);
}

но опять же частоты больше 20 гц начинает мерить с ошибкой, но она уже постоянная, т.е. он постоянно вместо 250000 выдает 248333
но это я только в proteus'e проверил. может для него 15КГц много?
может мне объяснит кто-нибудь чем принципиально это отличается от того что было?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru