Например TDA7294

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

Текущее время: Пн июл 28, 2025 02:04:42

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


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



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 9 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Некорректная работа таймера ATMega16A
СообщениеДобавлено: Вт июл 10, 2012 06:51:20 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июл 05, 2012 22:39:11
Сообщений: 39
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Захотел сделать часы. МК работает на 16МГц. Выбрал таймер T2, делитель 1024, режим СТС, прерывание на 125. Внутри прерывания крутиться переменная, которая доходя до 125 увеличивает счётчик секунд.
125*125*1024=16000000. Таким образом получается чёткий один герц. Но в реальности на "секунду" уходит около 3.9 секунд :facepalm: (таймер тормозит в 3.9), засекал секундомером на большом промежутке. почему так? или CLKsys это не частота МК а что-то другое? тогда что?

кусочки кода:

interrupt [TIM2_COMP] void timer_comp(void) //прерывание по совпадению
{
if(++ps==125) //переменная ps обеспечивает ещё одно разделение на 125
{
ps=0;
sec++;
}
}

void Start_Clock(void) //инициализация таймера
{
TIMSK |=(1<<OCIE2); //разрешаем прерывание по совпадению
TCCR2 |=(1<<CTC2)|(1<<CS20)|(1<<CS21)|(1<<CS22); //режим СТС, тактовый сигнал=CLKsys / 1024
OCR2=125; //прерывание при дохождении до 125
}

ЗЫ. При использовании функции delay_ms из библиотеки delay.h на примере моргающего светодиода такая же фигня - моргает он куда медленнее, чем указанная частота. Хотя кварц стоит на 16.000, в настройках CVAVR частота указана правильно.
ЗЫЫ. Для вывода используется дисплейчик от Нокии3310, библиотеку я взял чужую и без особого разбора подключил. Хотя странно, но вдруг в ней дело? подскажите, знающие люди!)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Некорректная работа таймера ATMega16A
СообщениеДобавлено: Вт июл 10, 2012 07:07:35 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 74
Зарегистрирован: Пн июн 18, 2012 12:01:04
Сообщений: 650
Откуда: Челябинская область, Копейск
Рейтинг сообщения: 0
Счетчик таймера TCNT2 сбрасывать надо в обработчике прерывания , иначе он по кругу гоняет пока его не остановишь или не сбросишь.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Некорректная работа таймера ATMega16A
СообщениеДобавлено: Вт июл 10, 2012 07:18:53 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июл 05, 2012 22:39:11
Сообщений: 39
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
zero648 писал(а):
Счетчик таймера TCNT2 сбрасывать надо в обработчике прерывания , иначе он по кругу гоняет пока его не остановишь или не сбросишь.

Исходя из названия режима это странно по понятным причинам.
Но даже если так, это объясняет тормоза только в два раза, а не в четыре.

Да, сделал сброс TCNT2 в обработчике прерывания - ничего не изменилось, та же проблема.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Некорректная работа таймера ATMega16A
СообщениеДобавлено: Вт июл 10, 2012 07:33:19 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 11
Зарегистрирован: Вт фев 21, 2012 20:42:26
Сообщений: 135
Откуда: Санкт-Петербург, Россия, Земля
Рейтинг сообщения: 0
Petr57, Вы про фьюзы ничего не сказали. Вполне возможно, что МК у Вас работает от внутреннего ггенератора.

_________________
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Некорректная работа таймера ATMega16A
СообщениеДобавлено: Вт июл 10, 2012 08:07:46 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июл 05, 2012 22:39:11
Сообщений: 39
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
U235 писал(а):
Petr57, Вы про фьюзы ничего не сказали. Вполне возможно, что МК у Вас работает от внутреннего ггенератора.

опа опа оппапа! Кажется Вы правы. Не подскажите, где можно найти русскоязычное описание фьюзов на мегу16?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Некорректная работа таймера ATMega16A
СообщениеДобавлено: Вт июл 10, 2012 08:12:41 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 74
Зарегистрирован: Пн июн 18, 2012 12:01:04
Сообщений: 650
Откуда: Челябинская область, Копейск
Рейтинг сообщения: 0
Как ничего не изменилось, даже в два раза быстрее считать не стал чтоли?
У вас кварц на 16МГц стоит или что? Тактируется МК от чего?


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Некорректная работа таймера ATMega16A
СообщениеДобавлено: Вт июл 10, 2012 08:14:53 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 74
Зарегистрирован: Пн июн 18, 2012 12:01:04
Сообщений: 650
Откуда: Челябинская область, Копейск
Рейтинг сообщения: 0
Да и вообще внутренний генератор не точный частота может колебаться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Некорректная работа таймера ATMega16A
СообщениеДобавлено: Вт июл 10, 2012 09:53:18 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
1) Подключенный снаружи кварц ещё не гарантия тактования от него!
2) В режиме СТС не нужно в прерывании трогать счетчик таймера - на то он и СТС!
3) насколько я знаю.....из 16000000 тяжело получить точную секунду....лучше используйте часовой кварц
4) не забывайте что таймер считает 0-1-2-3 а не 1-2-3 !! внимательнее с этим надо быть
5) Ваш программный делитель до 125 не досчитывает и там путаницы с нулём нет!

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Некорректная работа таймера ATMega16A
СообщениеДобавлено: Вт июл 10, 2012 11:57:00 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июл 05, 2012 22:39:11
Сообщений: 39
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Ух, намучался.. Искал какие же всё-таки фьюзы нужно выставлять, в результате прошил на работу от внешнего генератора.. :o . Думал всё, конец, перепробовал кучу методов и всё таки нашёл решение! взял завалявшуюся тиньку2313 прошил в неё код
while(1)
{
PORTB.0=0;
PORTB.0=1;
}
и подключил этот выход на XTAL1 меги. :shock: Ура!! этого хватило, чтобы снять злополучные фьюзы! может кому-нибудь пригодится такой метод. 8)

Действительно, она работала не на 16МГц. Нашёл какие фьюзы ставить - теперь часики отлично тикают :))
Всем большое спасибо, и извините за такую глупость :)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 9 ] 

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


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

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


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

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


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