реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Atmega16 - заперт прерываяния по перполнению Timer
Stasevuch
сообщение Jan 13 2010, 11:32
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 6-11-07
Пользователь №: 32 112



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

Сама идея конструкции заключается в том что бы в Powersave шли часы , но эти же часы при перполнении и не выводили из Powesave.
Go to the top of the page
 
+Quote Post
_dem
сообщение Jan 13 2010, 11:38
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



Установив в 0 соответствующий бит регистра.
Код показывайте.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 13 2010, 11:49
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(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.
Нужно сбросить соответствующие биты разрешения прерывания. Что конкретно не получается?
Go to the top of the page
 
+Quote Post
Stasevuch
сообщение Jan 13 2010, 11:49
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 6-11-07
Пользователь №: 32 112



Код
  

$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, 11:50
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 13 2010, 11:57
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



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

Цитата(Stasevuch @ Jan 13 2010, 14:49) *
Состояние на момент включения TIMSK 01000000 . Второй бит если в ноль установить - таймер отсановливается.
Э -нет! Таймер не остановиться. Это - испортиться правильный подсчет времени! А таймер - как работал, так и будет работать, только Вы не узнаете: сколько он уже тиков насчитал!
Go to the top of the page
 
+Quote Post
Stasevuch
сообщение Jan 13 2010, 12:06
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 6-11-07
Пользователь №: 32 112



Может я не правильно выразился , смысл в том что но при TIMSK 00000000 функция Print Time$ выдаёт результат 00:00:00

Сообщение отредактировал Stasevuch - Jan 13 2010, 12:08
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 13 2010, 12:18
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Stasevuch @ Jan 13 2010, 15:06) *
смысл в том что но при TIMSK 00000000 функция Print Time$ выдаёт результат 00:00:00
Ну, наверное, наращивание времени - как раз в процедуре обработки прерывания по переполнению таймера. А, если прерывания по переполнению запрещены, то и подсчёт времени не идёт...
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Jan 13 2010, 19:17
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Установлен или нет бит в TIMSK, а при переполнении поднимается бит в TIFR, и как только вы установите бит в TIMSK так сразу получите прерывание. Перед установкой бита в TIMSK надо сбросить соотв. бит в TIFR, записав туда единицу
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 10:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01417 секунд с 7
ELECTRONIX ©2004-2016