![]() ![]() ![]() ![]() ![]()
Раздел: Документация
0 ... 107 108 109 110 111 112 113 ... 195 7.4. Предделители таймеров/счетчиков Блоки предцелителей предназначены для формирования тактовых сигналов таймеров/счетчиков clkT0, clkTb clkT2, clkT3. Упрощенная структурная схема блока предделителя таймеров/счетчиков, не имеющих асинхронного режима работы, приведена на Рис. 7.5, а. Структурная схема блока предделителя таймеров/счетчиков, имеющих возможность работы в асинхронном режиме, приведена на Рис. 7.5, б. Как показано на рисунке, в состав каждого блока входят собственно 10-битный предделитель, выходной мультиплексор (селектор тактового сигнала), а для таймеров, имеющих возможность работы в асинхронном режиме, — еще и входной мультиплексор исходного тактового сигнала. По последней схеме выполнен предделитель таймера/счетчика ТО моделей ATmega64x/128x и таймера/счетчика Т2 остальных моделей. Следует иметь в виду, что все таймеры/счетчики каждой модели семейства, не имеющие асинхронного режима работы, используют один и тот же 10-битный предделитель. При этом управление тактовым сигналом каждого таймера/счетчика осуществляется индивидуально и будет описано при их рассмотрении. clk/o 10-битный предделитель Сброс PSRx о ![]() ![]() Кроме ATmega 162х о Тактовый сигнал таймера/счетчика Тл л = 0,1 3 1,2,3 0,1 для ATmega162x(PSRx=PSR310), для ATmega64x и ATmega 128х (PSRx = PSR321), для ATmega8515х/8535х ATmega8x/16х/32х и ATmega 165х/325х/3250х/645х/6450х (PSRx= PSR10), для АТтеда48х/88х/1б8х и ATmega 164х/324х/644х (PSRx= PSRSYNC), для ATmega640x/1280x/1281х/2560х/2561х (PSRx = PSRSYNC) 0,1 0,1,3,4,5 ![]() CSnO CSn1 CSn2 Vc\kJn Тактовый сигнал таймера/счетчика Tn л= 1 — для ATmega64x и ATmega128x(PSRx = PSR0); 2 — для ATmega8535x, ATmega8x/16x/32x, ATmega 162х и ATmega 165х/325х/3250х/645х/6450х (PSRx = PSR2); 2 —дляАТтеда48х/88х/1б8х, ATmega164x/324x/644x и ATmega640x/1280х/1281х/2560х/2561 х (PSRx = PSRASY). б) Рис. 7.5. Блок предцелителя таймеров/счетчиков: а — без асинхронного режима; б — с асинхронным режимом Следует понимать, что предделители работают независимо от таймеров/счетчиков. Следствием этого является, в частности, неопределенный промежуток времени (1...7V+1 тактов исходного сигнала, где N — коэффициент деления предделителя) между разрешением таймера/счетчика и первым его отсчетом при работе совместно с предделителем. Чтобы уйти от этой неопределенности, можно воспользоваться средствами, описанными в следующем подразделе. 7.4.1. Управление предделителями Помимо управления тактовым сигналом таймера/счетчика, все микроконтроллеры семейства позволяют осуществлять сброс предделите-лей, а отдельные модели позволяют также осуществлять их остановку. Для этого используется либо регистр специальных функций SFIOR, либо (в новых моделях) регистр управления таймеров/счетчиков GTCCR, расположенный по адресу $23 ($43). Формат этого регистра для различных моделей микроконтроллеров приведен на Рис. 7.6 (биты, не используемые для управления предделителями таймеров/счетчиков, указаны на рисунке как X).
ATmega8515x ATmega 162х ATmega64x ATmega 128x ATmega8535x ATmega8x/16x/32x ATmega 165x ATmega325x/3250x ATmega48x/88x/168x ATmega 164x/324x/644x ATmega640x/1280x/1281x ATmega2560x/2561x 6) Puc. 7.6. Управление предделителями таймеров/счетчиков — регистры SFIOR (а) и GTCCR (б) Для сброса предделителей таймеров/счетчиков используются биты PSRjc (PSRSYNC/PSRASY) регистра. При записи в эти биты лог. 1 предделители соответствующих таймеров/счетчиков переводятся в исходное состояние. Биты сбрасываются в 0 аппаратно после выполнения операции сброса. Напоминаю, что один предделитель, как правило, используется несколькими таймерами/счетчиками, и соответственно сброс предделителя повлияет на все таймеры/счетчики, которые его используют. Остановка всех предделителей микроконтроллера осуществляется записью лог. 1 в бит TSM регистра SFIOR или GTCCR. Последующий запуск предделителей осуществляется записью в бит TSM лог. 0. Указанная функция может использоваться, в частности, для синхронизации тай- 0 ... 107 108 109 110 111 112 113 ... 195 |