Часы реального времени на кварце 16 мГц
Re: Часы реального времени на кварце 16 мГц
Я считаю так- таймер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 сек
(1/16 мгц) х 65535 = 0,004 сек. Прерывание будет каждые 0,004 сек. это если TCNT=0, надо высчитать с какой цифры начинать считать, чтобы прерывание происходило например за 0,001 сек, потом внутри прерывания тикай и считай, почему обязательно за 1 сек. прерывание нужно..
Ну у тебя еще на 256 делить.. забыл..
Тогда, да, каждые 1,04 сек. будет прерывание.
Тогда такие вычисления-
16 мгц/ 256= 62500 Гц
1/62500 х 65535=1,04856 сек
- Реклама
Re: Часы реального времени на кварце 16 мГц
Здравствуйте!
Так вот, я думаю он нифига не переполнится за 1 секунду 256 раз.
Таймер считает импульсы с частотой 62500 Гц (это уже ПОСЛЕ деления 16 мегациклов на 256!).
И далее таймер умеет сравнить число, которое он насчитал со значением специального регистра.
И вот если сравнение прошло успешно, то возникает прерывание. Кроме того, если установлен режим таймера CTC - сброс при совпадении, счетные регистры таймера обнулятся автоматом.
Имеем: при наличии на входе таймера 62500 Гц, и значениях:
OCR1AH=0xF4;
OCR1AL=0x23;
прерывание возникнет 1 раз в секунду.
В полном соответствии с рекомендациями
Вы полагаете, что таймер знает что-либо о значении прескалера, т.е. о числе 256?Amstron писал(а):таймер начинает считать с 3035. далее , за 1 секунду таймер переполнется 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
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 сек
Я был не прав, я не знал, что делитель делит частоту!
я думал, что таймер работает именно так как написанно в первом посту в этой теме.
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Часы реального времени на кварце 16 мГц
читайте даташиты, а не "первые посты на форуме"!Amstron писал(а):Я был не прав, я не знал, что делитель делит частоту!
Ставим плюсы: )
- zero648
- Вымогатель припоя
- Сообщения: 650
- Зарегистрирован: Пн июн 18, 2012 12:01:04
- Откуда: Челябинская область, Копейск
Re: Часы реального времени на кварце 16 мГц
dm211 писал(а):16 мгц/ 256= 62500 Гц
1/62500 х 65535=1,04856 сек
Сами же писали, что нужно, мол, значение TCNT расчитать:
и сами себе теперь противоречите.dm211 писал(а):надо высчитать с какой цифры начинать считать, чтобы прерывание происходило например за 0,001 сек, потом внутри прерывания тикай и считай
- Реклама
Re: Часы реального времени на кварце 16 мГц
Делитель таймера 256, значит тикает с частотой 62500 раз в секунду, перевожу это в секунды- 1/62500 , 65535(6)- это столько раз пройдет время 1/62500 и будет прерывание. Где тут бред ?
Re: Часы реального времени на кварце 16 мГц
это моя тема.ibiza11 писал(а):Amstron писал(а):Я был не прав, я не знал, что делитель делит частоту!![]()
клиника!!!
читайте даташиты, а не "первые посты на форуме"!
- zero648
- Вымогатель припоя
- Сообщения: 650
- Зарегистрирован: Пн июн 18, 2012 12:01:04
- Откуда: Челябинская область, Копейск
Re: Часы реального времени на кварце 16 мГц
Чтобы прерывание по переполнению таймера1 сработало ровно через секунду нужно в TCNT1 записать разницу вот этих чисел 62500 и 65536, а потом в прерывании снова обновлять TCNT1 таким же образом, т.е. TCNT1=65536-62500 и тогда прерывания будут происходить каждую секунду.dm211 писал(а):Делитель таймера 256, значит тикает с частотой 62500 раз в секунду, перевожу это в секунды- 1/62500 , 65535(6)- это столько раз пройдет время 1/62500 и будет прерывание. Где тут бред ?
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Часы реального времени на кварце 16 мГц
смысл был заложен не совосочетании "не читать первых постов в форуме", а в словосочетании "читайте даташиты". Там все написано!!!
Ставим плюсы: )
Re: Часы реального времени на кварце 16 мГц
Я так и сделал - работает!zero648 писал(а):Чтобы прерывание по переполнению таймера1 сработало ровно через секунду нужно в TCNT1 записать разницу вот этих чисел 62500 и 65536, а потом в прерывании снова обновлять TCNT1 таким же образом, т.е. TCNT1=65536-62500 и тогда прерывания будут происходить каждую секунду.dm211 писал(а):Делитель таймера 256, значит тикает с частотой 62500 раз в секунду, перевожу это в секунды- 1/62500 , 65535(6)- это столько раз пройдет время 1/62500 и будет прерывание. Где тут бред ?
Re: Часы реального времени на кварце 16 мГц
Ну так.,ясно дело, я сразу же написал,что TCNT надо прописать внутри обработчика, просто лень было думать, сколько этот TCNT должен быть, а принцип то правильно написал.zero648 писал(а): в TCNT1 записать разницу вот этих чисел 62500 и 65536, а потом в прерывании снова обновлять TCNT1 таким же образом
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Часы реального времени на кварце 16 мГц
В даташитах все написано, в описаниях иногда написано даже по-русски. Какая религия мешает прочитать про работу таймеров (Normal, CTC, PWM, FastPWM и прочие режимы, предделители) и уже потом, если что-то не получается, спрашивать на форуме. В гугле первой же ссылкой отличная книга в которой описаны практически все режимы и особенности ядра и переферии.
Re: Часы реального времени на кварце 16 мГц
Эта религия называется-лень, а иногда не совсем доходит.COKPOWEHEU писал(а):Какая религия мешает прочитать про работу таймер
-
JeysonRou
- Открыл глаза
- Сообщения: 46
- Зарегистрирован: Ср янв 16, 2013 06:51:09
- Откуда: Сам не знаю...
Re: Часы реального времени на кварце 16 мГц
Народ я вам за асемблер под 8 мегу реально скоро руки оторву... В даташитах он указан под юникод чтобы не парить мозг с разными синтаксисами... В каждой среде разработке присутствует таблица перевода асм команд в си или бейсик как в баскоме, да и асм библеотеки никто не отменял. каково черта вы все пхаете в флеш память контролерра она предназначина только для выполнения основных функций.
И часы можно активировать в 8 меге одной командой, а не городить ваш гавнокод

В баскоме Config clock=Soft
В СИ такимже образом...
И часы можно активировать в 8 меге одной командой, а не городить ваш гавнокод
В баскоме Config clock=Soft
В СИ такимже образом...
Re: Часы реального времени на кварце 16 мГц
Какие часы?,тут не про часовой кварц разговор, в си каким таким же образом?JeysonRou писал(а):
В баскоме Config clock=Soft
В СИ такимже образом...
-
JeysonRou
- Открыл глаза
- Сообщения: 46
- Зарегистрирован: Ср янв 16, 2013 06:51:09
- Откуда: Сам не знаю...
Re: Часы реального времени на кварце 16 мГц
Твоюж нафиг что у тебя нет 8 центов на нормальный кварц??? Нахрена лепить часы на 16 кварце если можно взять 32768 и не гадить себе в мозг разбором таймеровdm211 писал(а):Какие часы?,тут не про часовой кварц разговор, в си каким таким же образом?JeysonRou писал(а):
В баскоме Config clock=Soft
В СИ такимже образом...
Вот вам бляха не подходит как можно и нужно и описано в даташите вам надо через жопу и в левое ухо приетом повесив 16 кварц...
Нафига спрашивается!!!!????
Хочешь знать как на си сформировать часы сначала скажи какой компилятор яж тебе не экстрасенс....
Re: Часы реального времени на кварце 16 мГц
Вопрос был как таймер прерывать раз в секунду. И с часовым кварцом в си точно также-делитель ставишь на таймере на 128 и раз в секунду будет прерывание таймера . И это не профессиональный форум программистов, а радиолюбителей,как я понял, Вам нужно идти поорать так на форум разработчиков электроники на профессионалов 
Re: Часы реального времени на кварце 16 мГц
А что за этой строчкой скрыто знаеш? Во что БасКом это превратит? Похоже что нет. А именно оно тут и обсуждается. Так что не надо тут "пальцы веером, сопли пузырями".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 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Часы реального времени на кварце 16 мГц
Ну я типа начинающий или нечасто этим занимающийся, а когда нужно только, так что не знал, щас буду знать этот способ, спасибо.dm211 писал(а): А достаточно прерывания по совпадению и режима CTC. Тогда "потолок" у таймера можно установить в 62500 и прерывание будет ровно через 1 секунду.


