Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Atmega16 - заперт прерываяния по перполнению Timer
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Stasevuch
Atmega 16 из Powersave просыпается от переполнения Timer/Counter2 . Как запретить wake up от either Timer Overflow or Output Compare event from Timer/Counter2 при этом не останавливая сам Timer ??? Судя по даташиту шаманить нужно с регистром TIMSK . Но танцы с бубном пока беузпешны - хореография хромает ((((. Может я не там в даташите копаю , везде написано как включить прерывание по таймеру , НО КАК ВЫКЛЮЧИТЬ ?

Сама идея конструкции заключается в том что бы в Powersave шли часы , но эти же часы при перполнении и не выводили из Powesave.
_dem
Установив в 0 соответствующий бит регистра.
Код показывайте.
Палыч
Цитата(Stasevuch @ Jan 13 2010, 14:32) *
Судя по даташиту шаманить нужно с регистром TIMSK.

Да. Вот из DS:
Цитата
The device can wake up from either Timer Overflow or Output Compare event from Timer/Counter2 if the corresponding Timer/Counter2 interrupt enable bits are set in TIMSK, and the Global Interrupt Enable bit in SREG is set.
Нужно сбросить соответствующие биты разрешения прерывания. Что конкретно не получается?
Stasevuch
Код
  

$regfile = "m16def.dat"
$crystal = 8000000

On Int2 A_st
  Enable Int2
    Config Clock = Soft                                
    Time$ = "00:00:00"
       Enable Interrupts

Do
  Enable Int2
  Powedown
  Print Time$
Loop


Состояние на момент включения TIMSK 01000000 . Второй бит если в ноль установить - таймер отсановливается.
Как бы сбрасывать в ноль особо уже нечего .
Палыч
Цитата(Stasevuch @ Jan 13 2010, 14:32) *
Сама идея конструкции заключается в том что бы в Powersave шли часы , но эти же часы при перполнении и не выводили из Powesave.
Не совсем понятна идея. Ну - хорошо: таймер идёт; наступило его переполнение; - и что? плюнуть на это? а, как же время подсчитать?

Цитата(Stasevuch @ Jan 13 2010, 14:49) *
Состояние на момент включения TIMSK 01000000 . Второй бит если в ноль установить - таймер отсановливается.
Э -нет! Таймер не остановиться. Это - испортиться правильный подсчет времени! А таймер - как работал, так и будет работать, только Вы не узнаете: сколько он уже тиков насчитал!
Stasevuch
Может я не правильно выразился , смысл в том что но при TIMSK 00000000 функция Print Time$ выдаёт результат 00:00:00
Палыч
Цитата(Stasevuch @ Jan 13 2010, 15:06) *
смысл в том что но при TIMSK 00000000 функция Print Time$ выдаёт результат 00:00:00
Ну, наверное, наращивание времени - как раз в процедуре обработки прерывания по переполнению таймера. А, если прерывания по переполнению запрещены, то и подсчёт времени не идёт...
Maik-vs
Установлен или нет бит в TIMSK, а при переполнении поднимается бит в TIFR, и как только вы установите бит в TIMSK так сразу получите прерывание. Перед установкой бита в TIMSK надо сбросить соотв. бит в TIFR, записав туда единицу
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.