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

 
 
 
Reply to this topicStart new topic
> Часы на МЕГЕ128, работающие на прерываниях, задержка в 1 сек на таймере
nagserg
сообщение Jun 2 2005, 15:16
Сообщение #1


Участник
*

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



Такая задача сделать время на прерываниях независимо от основной задачи.
Как можно сделать задержку в 1 сек на таймере0?

Устанавливаю делитель timer0/1024, получается 16525 Гц, т.е. программа должна попадать в прерывание по-моему 16525 раз в секунду, потом посчитать до 16525 и получится 1 секунда. Что-то я не так делаю, что программа попадает в прерывания частотой всего 100 Гц вместо 16525.

Подскажите, что я не так делаю?
Go to the top of the page
 
+Quote Post
vet
сообщение Jun 2 2005, 16:04
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



С частотой Fosc/1024 происходят не прерывания, а инкремент счётчика.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
CDT
сообщение Jun 3 2005, 04:53
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 303
Регистрация: 3-03-05
Пользователь №: 3 044



Таймер формирует прерывания с любым приятно умножающимся интервалом.
В обработке прерывания в регистре или ОЗУ подсчитываем их (прерывания) и по достижении нужного значения сбрасываем счетчик в ОЗУ и ставим флаг, что секунда (или 10мс) кончились.
В любом месте программы по этому флагу считаем время и дни.
Следует обратить внимание на точность кварца и обеспечить возможность его подстройки.

У этого способа есть одно очень приятное свойство - на этих прерываниях по состоянию счетчика в ОЗУ можно выполнять кучу задач с точным временным интервалом и в строгой последовательности друг за другом.


--------------------
Опыт - чудесная вещь: легко использовать, можно продать, трудно пропить.
Go to the top of the page
 
+Quote Post
trofim
сообщение Jun 3 2005, 07:16
Сообщение #4





Группа: Новичок
Сообщений: 12
Регистрация: 4-11-04
Пользователь №: 1 039



Timer0 8-ми битный, посему непонятно каким образом можно задать коэффициент деления 16525. Младший байт = 141, что примерно соответствует 100 Гц
Go to the top of the page
 
+Quote Post
MicronSys
сообщение Jun 3 2005, 07:27
Сообщение #5


Частый гость
**

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



Цитата(nagserg @ Jun 2 2005, 18:16)
Такая задача сделать время на прерываниях независимо от основной задачи.
Как можно сделать задержку в 1 сек на таймере0?

Устанавливаю делитель timer0/1024, получается 16525 Гц, т.е. программа должна попадать в прерывание по-моему 16525 раз в секунду, потом посчитать до 16525 и получится 1 секунда. Что-то я не так делаю, что программа попадает в прерывания частотой всего 100 Гц вместо 16525.

Подскажите, что я не так делаю?
*


Да извени а ты даташит воще читал !!! angry.gif
таймер 0 может считать только до 255 он 8 разрадный cranky.gif

возми таймер 1,2,3

вот тебе прога для расчета времени
Прикрепленные файлы
Прикрепленный файл  avrcalc.zip ( 15.78 килобайт ) Кол-во скачиваний: 57
 
Go to the top of the page
 
+Quote Post
nagserg
сообщение Jun 3 2005, 08:27
Сообщение #6


Участник
*

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



Всё вроде разобрался с помощью Application Builder-а в компиляторе ICC, там задаешь нужную частоту, а он (Application Builder) тебе пример программы.
Go to the top of the page
 
+Quote Post
sat
сообщение Jun 6 2005, 07:56
Сообщение #7





Группа: Новичок
Сообщений: 10
Регистрация: 6-07-04
Пользователь №: 265



На большинство вопросов по АВР я ответы нахожу в app notes. по тем же таймерам есть AVR130: Setup ad use the AVR Timers где все расписано.
Go to the top of the page
 
+Quote Post

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

 


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


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