Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: предделитель таймера
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
dimka76
При работе с таймерами-счетчиками для m48 и m16 (другие не пробовал) пытался производить сброс предделителей для синхронной работы, но они, гады, на сброс не реагируют.
Кто-нибудь сталкивался с такой проблемой?
smk
А как сбрасывал? Я бы сначала остановил таймеры, записав 1 в SFIOR(TSM), установил нужные значения PSR. Потом записал 0 в SFIOR(TSM) и тем самым пустил все таймеры одновременно. Должно работать.
KRS
Цитата(dimka76 @ Nov 2 2006, 08:22) *
При работе с таймерами-счетчиками для m48 и m16 (другие не пробовал) пытался производить сброс предделителей для синхронной работы, но они, гады, на сброс не реагируют.
Кто-нибудь сталкивался с такой проблемой?

А как вы определили что не работает?
( еще 0 и 1 таймер работают от одного прескалера так что они сами по себе синхронны)
=GM=
Цитата(dimka76 @ Nov 2 2006, 05:22) *
При работе с таймерами-счетчиками для m48 и m16 (другие не пробовал) пытался производить сброс предделителей для синхронной работы, но они, гады, на сброс не реагируют.
Кто-нибудь сталкивался с такой проблемой?

1) Для м16 просто записываете 1 в бит PSR10 регистра SFIOR, прескалер сбросится для таймеров 0,1.
Для проверки работы просто выждите несколько тактов, снова сбросьте прескалер (1-->PSR10) и немедленно прочтите оба таймера. Содержимое должно совпадать.

2) Для м48 установите бит TSM=1 и PSRSYNC=1 в регистре GTCCR, затем сбросьте TSM. Прескалер обнулится. Проверка примерно такая же, как для м16.
dimka76
проверял следующим образом.
настраивал таймер0 и таймер2 (для m16) на работу в режиме ШИМ с дление Fclk на одинаковый коэфициент.
Запускал таймер0, выжидал время запускал таймер2, сбрасывал оба предделителя одновременно. Смотрю осцилографом, а фазы ШИМ не совпадают.
=GM=
Цитата(dimka76 @ Nov 3 2006, 05:19) *
проверял следующим образом.
настраивал таймер0 и таймер2 (для m16) на работу в режиме ШИМ с дление Fclk на одинаковый коэфициент.
Запускал таймер0, выжидал время запускал таймер2, сбрасывал оба предделителя одновременно. Смотрю осцилографом, а фазы ШИМ не совпадают.


Не надо выжидать, делаете так:

1) Останавливаете таймеры TCCR0=0bXXXXX000, TCCR2=0bXXXXX000.

2) Записываете в таймеры0,2 нули TCNT0=0x00, TCNT2=0x00.

3) Сбрасываете прескалеры SFIOR=0bXXXXXX11.

4) Включаете таймеры TCCR0=0bXXXXXnnn, TCCR2=0bXXXXXnnn. Эту операцию надо делать быстро и непосредственно после п.3, так как у вас всего N тактов процессора (минимум 8) до появления первого импульса из прескалера.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.