Часы реального времени на кварце 16 мГц

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Часы реального времени на кварце 16 мГц

Сообщение Amstron »

Есть проблема с часами реального времени.
У меня мега 8 и стоит кварц на 16 мгц.
Я весь инет перерыл и овета не нашол...


Попщем в инете пишут, что надо протикать 256 раз по 62500 тиков и получится 16 000 000 тиков.

Вопщем в инете люди пишут, что в регистре TCNTn надо выставить 62500 и поставить счетчик на 1/256 . Делаю - не получается.
Не получается потомучто каждый раз начинает считать с 65535 (кроме первого раза).

Как у людей получается не понимаю....


У меня есдинственный выход на данный момент.
Записать в регистр сравнения 62500 и далать прерывания по сравнению.(или 3035 и делать прерывание по переполнению) и когда дойдет до 256, то это и будет секунда.

Не нравится мне это тем, что каждые 62500 тик программа будет уходить в прерывание.

И еще. если в этот момент будет работать другое прерывание, то надо это вызывать.
Разрешить прерывание в прерывании.

Да и из прерывания это прерывание вызывать не охото, а надо.


Подскажите как у людей работает????
Реклама
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Часы реального времени на кварце 16 мГц

Сообщение blackx »

Amstron писал(а): Подскажите как у людей работает????
Люди ставят часовой кварц на 32768 :)))

Выложите часть кода где у вас таймер настраивается.
Изображение only pure true norwegian blackx Изображение
Реклама
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Часы реального времени на кварце 16 мГц

Сообщение Amstron »

blackx писал(а):
Выложите часть кода где у вас таймер настраивается.
такого кода нет.
Подскажите как сделать на практике.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Часы реального времени на кварце 16 мГц

Сообщение Аlex »

такого кода нет.
Убила эта фраза, чесслово :))) :))) :)))
Реклама
Эиком - электронные компоненты и радиодетали
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Часы реального времени на кварце 16 мГц

Сообщение Amstron »

Аlex писал(а):
такого кода нет.
Убила эта фраза, чесслово :))) :))) :)))
Давайте начнем с этого:
Спойлерinterrupt [TIM1_OVF] void timer1_ovf_isr(void) //прерывание по перепонению TC/1
{ sec ++;
if (sec == 60)
{min++, sec = 0;
if (min == 60)
{hours++, min = 0;
if (hours == 24) hours = 0;
}
}
}
как сделать так чтобы это прерывание срабатывало один раз в секунду?
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Часы реального времени на кварце 16 мГц

Сообщение Аlex »

Давайте начнём не через @опу, ага ? :)
blackx писал(а):Выложите часть кода где у вас таймер настраивается.
Реклама
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Часы реального времени на кварце 16 мГц

Сообщение Amstron »

TCCR1B=0b100; // делитель на 256
TIMSK=0b1000101; // Разрешение прерывания по переполнению таймера/счетчика 0 , 1, 2

Подскажите как настроить, что бы счет начинался каждый раз с TCNT1 = 3035 /
тогда после 256 раз сложений 62500 получится 16 000 000 тиканей???
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Часы реального времени на кварце 16 мГц

Сообщение Аlex »

Ну смотрите, Вы тактовую частоту таймера поделили на 256 предделителем, теперь таймер тикает с частотой 62500 Гц. Устанавливайте компаратор на это значение, и у Вас получатся прерывания каждые 1 Гц.
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Часы реального времени на кварце 16 мГц

Сообщение Amstron »

Аlex писал(а):Ну смотрите, Вы тактовую частоту таймера поделили на 256 предделителем, теперь таймер тикает с частотой 62500 Гц. Устанавливайте компаратор на это значение, и у Вас получатся прерывания каждые 1 Гц.
Спасибо огромное.
Вот в этом и загвоздка.
как правильно называется этот компаратор - как выставить в нем число.
Таймер у меня TCCR1B
КОНТРОЛЛЕР - MEGA8
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: Часы реального времени на кварце 16 мГц

Сообщение zero648 »

Устанавливаешь режим СТС таймера1:
; Включаем режим СТС Timer1, запускаем Timer1 делитель частоты 1:256 (001=1:1;010=1:8;011=1:64;100=1:256;101=1:1024)
TCCR1B = (0b01<<WGM12)|(0b100<<CS10);
и компаратор:
OCR1A=62500-1
Последний раз редактировалось zero648 Пн фев 18, 2013 19:52:36, всего редактировалось 1 раз.
dm211
Прорезались зубы
Сообщения: 208
Зарегистрирован: Вс дек 10, 2006 19:26:13

Re: Часы реального времени на кварце 16 мГц

Сообщение dm211 »

Amstron писал(а): Вопщем в инете люди пишут, что в регистре TCNTn надо выставить 62500 и поставить счетчик на 1/256 . Делаю - не получается.
Не получается потомучто каждый раз начинает считать с 65535 (кроме первого раза).
Если я правильно понял.., чтоб каждый раз не начинал считать с 65536, а с 62500, TCNT надо прописывать внутри обработчика прерывания таймера.
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Часы реального времени на кварце 16 мГц

Сообщение Amstron »

dm211 писал(а):
Amstron писал(а): Вопщем в инете люди пишут, что в регистре TCNTn надо выставить 62500 и поставить счетчик на 1/256 . Делаю - не получается.
Не получается потомучто каждый раз начинает считать с 65535 (кроме первого раза).
Если я правильно понял.., чтоб каждый раз не начинал считать с 65536, а с 62500, TCNT надо прописывать внутри обработчика прерывания таймера.
у меня делитель 256.
от сюда следует, что обработчика и не будет.
256 * 62500 = 16 000 000 Гц. 8)
dm211
Прорезались зубы
Сообщения: 208
Зарегистрирован: Вс дек 10, 2006 19:26:13

Re: Часы реального времени на кварце 16 мГц

Сообщение dm211 »

Amstron писал(а): от сюда следует, что обработчика и не будет.
Ну как не будет, если он есть :))
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Часы реального времени на кварце 16 мГц

Сообщение Amstron »

dm211 писал(а):
Amstron писал(а): от сюда следует, что обработчика и не будет.
Ну как не будет, если он есть :))
да, вы правы.

это моя мечта... спасибо всем кто участвовал в решении моей маленькой проблемы ! :kiss:
dm211
Прорезались зубы
Сообщения: 208
Зарегистрирован: Вс дек 10, 2006 19:26:13

Re: Часы реального времени на кварце 16 мГц

Сообщение dm211 »

Amstron писал(а):Подскажите как настроить, что бы счет начинался каждый раз с TCNT1 = 3035 ]
Я только хотел обьяснить это- вот так--

Код: Выделить всё

interrupt [TIM1_OVF] void timer1_ovf_isr(void){
TCNT1 = 3035; // и дальше тикай,если не хочешь как на примере выше
}
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Часы реального времени на кварце 16 мГц

Сообщение Amstron »

dm211 писал(а):
Amstron писал(а):Подскажите как настроить, что бы счет начинался каждый раз с TCNT1 = 3035 ]
Я только хотел обьяснить это- вот так--

Код: Выделить всё

interrupt [TIM1_OVF] void timer1_ovf_isr(void){
TCNT1 = 3035; // и дальше тикай,если не хочешь как на примере выше
}
я знал, что так можно сделать.
Хотел, что бы у меня прерывание было один раз в секунду.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Часы реального времени на кварце 16 мГц

Сообщение ibiza11 »

так оно и будет 1 раз в секунду)))
Ставим плюсы: )
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Часы реального времени на кварце 16 мГц

Сообщение Amstron »

ibiza11 писал(а):так оно и будет 1 раз в секунду)))
не будет! 256 раз как переполнится, так и будет секунда.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Часы реального времени на кварце 16 мГц

Сообщение ibiza11 »

так у вас же делитель стоит на 256.
16 МГц - тактирование микроконтроллера. делитель таймера = 256
16 МГц/256 = 62500 Гц. - тактирование таймера.
через 62500 тактов таймера пройдет ровно секунда и за это время произойдет единственное прерывание. :beer:
Ставим плюсы: )
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Re: Часы реального времени на кварце 16 мГц

Сообщение Amstron »

ibiza11 писал(а):так у вас же делитель стоит на 256.
16 МГц - тактирование микроконтроллера. делитель таймера = 256
16 МГц/256 = 62500 Гц. - тактирование таймера.
через 62500 тактов таймера пройдет ровно секунда и за это время произойдет единственное прерывание. :beer:
таймер начинает считать с 3035. далее , за 1 секунду таймер переполнется 256.
каждое переполнение будет иметь прерывание!!!

КТО ТУТ ПРАВ????????
Ответить

Вернуться в «Разные вопросы по МК»