Май 28

AVR использование таймеров ( ATMega8 TIMER0)

Timer0 — 8битный таймер.
В ATMega8 и ему подобных, timer0 ну очень простой таймер. Он умеет только считать, только от 0, и только до 255. Считает он с заданной частотой, и это пожалуй единственная настройка, которую можно настроить. Хотя и тут выбор не так велик, как хотелось бы.
Счетный регистр TCNT0 (8-и разрядный, как не сложно догадаться), доступен на чтение и запись, при переполнении (когда значение меняется с 0xFF на 0x00) дергается прерывание по-вектору TIMER0_OVF (если конечно разрешено битом TOIE0 в регистре TIMSK и глобально включено командой sei). Так, вот, благодаря доступу на запись, можно немного мухлевать, или даже много, например если в прерывании таймера в TCNT0 загнать, например 127, то считать он будет порядком (двоичным порядком) веселее. Таким образом даже шимить можно. Если очень нужно.

Параметры таймера задаются регистром TCCR0 , точнее первыми 3-мя битам (Clock Select) этого регистра: CS00,CS01,CS02 – выбор тактового источника

Continue reading