Например TDA7294

Форум РадиоКот • Просмотр темы - Как мне обстоять с таймерами?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 27, 2025 21:37:39

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Как мне обстоять с таймерами?
СообщениеДобавлено: Вс сен 02, 2012 21:31:43 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вс апр 17, 2011 21:38:10
Сообщений: 244
Рейтинг сообщения: 0
Ребята коты, всем привет! Хочу сделать отсчет времени в мк атмега8, но проблема в том что помимо этого еще хочу чтоб выполнялся мой код. На сколько я понимаю прерывание начнет выполнять код с того места где (допустим по обнулению таймера) оно ушло на код обработчика прерывания, но в таком случае тот же вывод на экран не выполнится, т.к. до того как выполнится код выводящий информацию на экран, таймер опять прервет его.

Есть ли в Атмегах какой - нибудь способ независимо считать а при надобности брать набежавшее значение? т.е. допустим запустили таймер- он считает себе и можно выполнять другие команды, но в опр момент можно забрать значение таймера. Заранее благодарен.
PS Поправлюсь, я имею в виду более длительный таймер нежели клок/1024 и все это заполняет (в случае 8 бит) 256 значений. т.е. шибко такой таймер не поможет если речь идет о секундах. - как сделать таймер более вместительным?


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Как мне обстоять с таймерами?
СообщениеДобавлено: Вс сен 02, 2012 22:56:07 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 889
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6212
Откуда: Minsk
Рейтинг сообщения: 0
Не совсем ясна задача. Если просто вести отсчет времени до определенного события - это одно, а вести и выводить постоянно, к примеру, на экран - это другое.
Допустим, второй вариант. Вывод времени на LED индикаторы динамический. Настраиваем таймер, к примеру, на 1 мс. Каждую миллисекунду в прерывании во-первых, инкрементируем значение времени - мс - сек - мин - час , и когда изменится значение сек - мин - час ,
обновляем буфер вывода ; во-вторых, циклически выводим инфу из упомянутого буфера вывода в позиции знакомест индикаторов, получим частоту обновления 166Гц, что больше чем достаточно, и не занимает много процессорного времени.
Можно по другому. Один таймер занимается только обслуживанием индикаторов, второй - подсчетом времени, и когда ( см. выше ) - он выставляет флаг, по которому второй таймер, отвлекшись от стробирования разрядов, обновляет буфер вывода.
Вариантов может быть много. Главное - в прерывании производить минимально необходимые действия, чтобы оставить время основной программе.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как мне обстоять с таймерами?
СообщениеДобавлено: Пн сен 03, 2012 01:34:19 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вс апр 17, 2011 21:38:10
Сообщений: 244
Рейтинг сообщения: 0
Так вот одна неувязочка - я помоему жестко затупил и подумал что прерывание заново весь код гонит, но ведь оно просто будет потихонечку вклиниваться и делать свое дело, а код дальше продолжаться ведь так?
В таком случае прошу помочь с кодом:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>
#include <avr/interrupt.h>
volatile char timer2=0;
ISR(TIMER0_OVF_vector)
{
timer2=105;//пока о ++ не идет речь, 105 хотя бы вывести)
}
int main()
{
TCCR0=0x05;//clk/1024
TIMSK=0x01;//прерывания
while (1)
{

itoa(timer2,&mass[0],10)/вывод на экран
вывод(mass);
}
}
/*Такой код у меня не работает почему то :?
PS Может fuse есть какой - то за прерывание отвечающий, или с глобальным разрешением прерывания что - то не то:(
*/


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как мне обстоять с таймерами?
СообщениеДобавлено: Пн сен 03, 2012 07:47:09 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Protobear писал(а):
....или с глобальным разрешением прерывания что - то не то:(

Да вот его что-то не видно в CodeVisionAVR это так #asm("sei"). По пробуйте что нибудь такое поставить перед циклом.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Как мне обстоять с таймерами?
СообщениеДобавлено: Пн сен 03, 2012 08:25:36 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вс апр 17, 2011 21:38:10
Сообщений: 244
Рейтинг сообщения: 0
pokk писал(а):
Protobear писал(а):
....или с глобальным разрешением прерывания что - то не то:(

Да вот его что-то не видно в CodeVisionAVR это так #asm("sei"). По пробуйте что нибудь такое поставить перед циклом.

в WInAVR это так на сколько я понял sei(); поставил, но мой основной код вообще перестал выполнятся, а ножка D5 не знаю как остальной порт Д, начала дрыгаться(у меня на нее стоит включение подсветки LCD) Впрочем код по прерыванию тоже не выполняется видно 0 в первой строке и все, и пропорционально частоте мигает подсветка.
вот так поставил:
TCCR0=0x05;//clk/1024
TIMSK=0x01;//прерывания
sei();//////////////////////////вот она
DDRD=0x20;
PORTD|=0x20;// А вот тут вопрос - почему дрыгается лапка при включенном sei();Это таймер/счетчик 1 но я его вообще не включал.
while (1)
{

itoa(timer2,&mass[0],10)/вывод на экран
вывод(mass);
}
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как мне обстоять с таймерами?
СообщениеДобавлено: Вт сен 04, 2012 01:37:08 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вс апр 17, 2011 21:38:10
Сообщений: 244
Рейтинг сообщения: 0
Protobear писал(а):
ISR(TIMER0_OVF_vector)
{
timer2=105;//пока о ++ не идет речь, 105 хотя бы вывести)
}

*/

Ув. Protobear, вы не правильно написали, а затем напечатали код - при переписывании из ДШ возможно по ошибке на писали vector, вместо vect
PS ISR(TIMER0_OVF_vect) Вот так работает) - Остается страшной тайной что такое vector и почему его пропустил компилятор и за что он тогда отвечает.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y