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

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

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

Сообщение dm211 »

Я считаю так- таймер1=16 разрядный, тикает 65535 раз,
(1/16 мгц) х 65535 = 0,004 сек. Прерывание будет каждые 0,004 сек. это если TCNT=0, надо высчитать с какой цифры начинать считать, чтобы прерывание происходило например за 0,001 сек, потом внутри прерывания тикай и считай, почему обязательно за 1 сек. прерывание нужно..
Ну у тебя еще на 256 делить.. забыл..
Тогда, да, каждые 1,04 сек. будет прерывание.
Тогда такие вычисления-
16 мгц/ 256= 62500 Гц
1/62500 х 65535=1,04856 сек
Реклама
metan
Вымогатель припоя
Сообщения: 593
Зарегистрирован: Ср янв 06, 2010 10:01:46

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

Сообщение metan »

Здравствуйте!
Amstron писал(а):таймер начинает считать с 3035. далее , за 1 секунду таймер переполнется 256.
Вы полагаете, что таймер знает что-либо о значении прескалера, т.е. о числе 256?
Так вот, я думаю он нифига не переполнится за 1 секунду 256 раз.
Таймер считает импульсы с частотой 62500 Гц (это уже ПОСЛЕ деления 16 мегациклов на 256!).
И далее таймер умеет сравнить число, которое он насчитал со значением специального регистра.
И вот если сравнение прошло успешно, то возникает прерывание. Кроме того, если установлен режим таймера CTC - сброс при совпадении, счетные регистры таймера обнулятся автоматом.
Имеем: при наличии на входе таймера 62500 Гц, и значениях:
OCR1AH=0xF4;
OCR1AL=0x23;
прерывание возникнет 1 раз в секунду.

В полном соответствии с рекомендациями
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
Как то так.
Реклама
Amstron
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

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

Сообщение Amstron »

dm211 писал(а):Я считаю так- таймер1=16 разрядный, тикает 65535 раз,
(1/16 мгц) х 65535 = 0,004 сек. Прерывание будет каждые 0,004 сек. это если TCNT=0, надо высчитать с какой цифры начинать считать, чтобы прерывание происходило например за 0,001 сек, потом внутри прерывания тикай и считай, почему обязательно за 1 сек. прерывание нужно..
Ну у тебя еще на 256 делить.. забыл..
Тогда, да, каждые 1,04 сек. будет прерывание.
Тогда такие вычисления-
16 мгц/ 256= 62500 Гц
1/62500 х 65535=1,04856 сек
Вы правы, именно так оно и работает!

Я был не прав, я не знал, что делитель делит частоту!
я думал, что таймер работает именно так как написанно в первом посту в этой теме.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

Amstron писал(а):Я был не прав, я не знал, что делитель делит частоту!
читайте даташиты, а не "первые посты на форуме"!
Ставим плюсы: )
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

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

Сообщение zero648 »

dm211 писал(а):16 мгц/ 256= 62500 Гц
1/62500 х 65535=1,04856 сек
:facepalm: :facepalm: :facepalm: Это что за формула? бред какой-то, мы тут коэффициент расчитываем чтоли? зачем умножать на 65535, че за хрень то?
Сами же писали, что нужно, мол, значение TCNT расчитать:
dm211 писал(а):надо высчитать с какой цифры начинать считать, чтобы прерывание происходило например за 0,001 сек, потом внутри прерывания тикай и считай
и сами себе теперь противоречите.
Реклама
dm211
Прорезались зубы
Сообщения: 208
Зарегистрирован: Вс дек 10, 2006 19:26:13

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

Сообщение dm211 »

Делитель таймера 256, значит тикает с частотой 62500 раз в секунду, перевожу это в секунды- 1/62500 , 65535(6)- это столько раз пройдет время 1/62500 и будет прерывание. Где тут бред ?
Реклама
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

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

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

Сообщение Amstron »

ibiza11 писал(а):
Amstron писал(а):Я был не прав, я не знал, что делитель делит частоту!
:))) :))) клиника!!!
читайте даташиты, а не "первые посты на форуме"!
это моя тема.
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

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

Сообщение zero648 »

dm211 писал(а):Делитель таймера 256, значит тикает с частотой 62500 раз в секунду, перевожу это в секунды- 1/62500 , 65535(6)- это столько раз пройдет время 1/62500 и будет прерывание. Где тут бред ?
Чтобы прерывание по переполнению таймера1 сработало ровно через секунду нужно в TCNT1 записать разницу вот этих чисел 62500 и 65536, а потом в прерывании снова обновлять TCNT1 таким же образом, т.е. TCNT1=65536-62500 и тогда прерывания будут происходить каждую секунду.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

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

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

Сообщение Amstron »

zero648 писал(а):
dm211 писал(а):Делитель таймера 256, значит тикает с частотой 62500 раз в секунду, перевожу это в секунды- 1/62500 , 65535(6)- это столько раз пройдет время 1/62500 и будет прерывание. Где тут бред ?
Чтобы прерывание по переполнению таймера1 сработало ровно через секунду нужно в TCNT1 записать разницу вот этих чисел 62500 и 65536, а потом в прерывании снова обновлять TCNT1 таким же образом, т.е. TCNT1=65536-62500 и тогда прерывания будут происходить каждую секунду.
Я так и сделал - работает!
dm211
Прорезались зубы
Сообщения: 208
Зарегистрирован: Вс дек 10, 2006 19:26:13

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

Сообщение dm211 »

zero648 писал(а): в TCNT1 записать разницу вот этих чисел 62500 и 65536, а потом в прерывании снова обновлять TCNT1 таким же образом
Ну так.,ясно дело, я сразу же написал,что TCNT надо прописать внутри обработчика, просто лень было думать, сколько этот TCNT должен быть, а принцип то правильно написал.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

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

Сообщение COKPOWEHEU »

В даташитах все написано, в описаниях иногда написано даже по-русски. Какая религия мешает прочитать про работу таймеров (Normal, CTC, PWM, FastPWM и прочие режимы, предделители) и уже потом, если что-то не получается, спрашивать на форуме. В гугле первой же ссылкой отличная книга в которой описаны практически все режимы и особенности ядра и переферии.
dm211
Прорезались зубы
Сообщения: 208
Зарегистрирован: Вс дек 10, 2006 19:26:13

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

Сообщение dm211 »

COKPOWEHEU писал(а):Какая религия мешает прочитать про работу таймер
Эта религия называется-лень, а иногда не совсем доходит.
JeysonRou
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 16, 2013 06:51:09
Откуда: Сам не знаю...

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

Сообщение JeysonRou »

Народ я вам за асемблер под 8 мегу реально скоро руки оторву... В даташитах он указан под юникод чтобы не парить мозг с разными синтаксисами... В каждой среде разработке присутствует таблица перевода асм команд в си или бейсик как в баскоме, да и асм библеотеки никто не отменял. каково черта вы все пхаете в флеш память контролерра она предназначина только для выполнения основных функций.
И часы можно активировать в 8 меге одной командой, а не городить ваш гавнокод :evil: :evil: :evil:

В баскоме Config clock=Soft
В СИ такимже образом...
dm211
Прорезались зубы
Сообщения: 208
Зарегистрирован: Вс дек 10, 2006 19:26:13

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

Сообщение dm211 »

JeysonRou писал(а):
В баскоме Config clock=Soft
В СИ такимже образом...
Какие часы?,тут не про часовой кварц разговор, в си каким таким же образом?
JeysonRou
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 16, 2013 06:51:09
Откуда: Сам не знаю...

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

Сообщение JeysonRou »

dm211 писал(а):
JeysonRou писал(а):
В баскоме Config clock=Soft
В СИ такимже образом...
Какие часы?,тут не про часовой кварц разговор, в си каким таким же образом?
Твоюж нафиг что у тебя нет 8 центов на нормальный кварц??? Нахрена лепить часы на 16 кварце если можно взять 32768 и не гадить себе в мозг разбором таймеров :facepalm: . Кстати даташиты читаем и не тормозим для меги 8 рекомендуются кварцы определенных кратных чисел а тоесть 1,4,8,12... На 16 уже указано что работа не стабильная будет ибо осцилятор расчитан на определеный такт счета. Ну и дальше 32,768 сугубо часовой и 1 Кгц честно не знаю точно зачем сам не разу не применял.
Вот вам бляха не подходит как можно и нужно и описано в даташите вам надо через жопу и в левое ухо приетом повесив 16 кварц...
Нафига спрашивается!!!!????
Хочешь знать как на си сформировать часы сначала скажи какой компилятор яж тебе не экстрасенс....
dm211
Прорезались зубы
Сообщения: 208
Зарегистрирован: Вс дек 10, 2006 19:26:13

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

Сообщение dm211 »

Вопрос был как таймер прерывать раз в секунду. И с часовым кварцом в си точно также-делитель ставишь на таймере на 128 и раз в секунду будет прерывание таймера . И это не профессиональный форум программистов, а радиолюбителей,как я понял, Вам нужно идти поорать так на форум разработчиков электроники на профессионалов :twisted:
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

JeysonRou писал(а):В баскоме Config clock=Soft
А что за этой строчкой скрыто знаеш? Во что БасКом это превратит? Похоже что нет. А именно оно тут и обсуждается. Так что не надо тут "пальцы веером, сопли пузырями". :) По делу давай, а не выпендривайся.
dm211 писал(а):16 мгц/ 256= 62500 Гц
1/62500 х 65535=1,04856 сек
Делитель таймера 256, значит тикает с частотой 62500 раз в секунду, перевожу это в секунды- 1/62500 , 65535(6)- это столько раз пройдет время 1/62500 и будет прерывание. Где тут бред ?
С терминами как то не ладиться. Ну да ладно.
dm211, вы с считаете время для прерывания по переполнению (1/62500 х 65535). А достаточно прерывания по совпадению и режима CTC. Тогда "потолок" у таймера можно установить в 62500 и прерывание будет ровно через 1 секунду.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
dm211
Прорезались зубы
Сообщения: 208
Зарегистрирован: Вс дек 10, 2006 19:26:13

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

Сообщение dm211 »

dm211 писал(а): А достаточно прерывания по совпадению и режима CTC. Тогда "потолок" у таймера можно установить в 62500 и прерывание будет ровно через 1 секунду.
Ну я типа начинающий или нечасто этим занимающийся, а когда нужно только, так что не знал, щас буду знать этот способ, спасибо. :))
Ответить

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