реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Настройка TCNT1 и регистр сравнения OCR1A, такт на сброс?
Alt.F4
сообщение Dec 27 2015, 19:17
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Здравствуйте.

Задача считать 5мс (кварц 1152кГц).
Настраиваю таймер в режим СТС (сброс при совпадении TCNT1 и OCR1A), т.е. надо насчитать 1152*5=5760 тактов.

Но никак не могу понять, всегда считал, что на сброс уходит один такт и по идее надо писать OCR1A=5759, однако ровно 5мс получаю только при OCR1A=5760.
Уже голову сломал, как такое получается?
Спасибо.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 28 2015, 11:00
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Каким образом измерялся интервал ? Может быть, проблема в измерении ? Или так неудачно выбраны нагрузочные конденсаторы опорного кварца, что отклонение столь велико (170E-6, если конденсаторы не поставить, вполне возможно, IMHO).
Go to the top of the page
 
+Quote Post
gerber
сообщение Dec 28 2015, 11:26
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(Alt.F4 @ Dec 27 2015, 22:17) *
Здравствуйте.

Задача считать 5мс (кварц 1152кГц).
Настраиваю таймер в режим СТС (сброс при совпадении TCNT1 и OCR1A), т.е. надо насчитать 1152*5=5760 тактов.

Но никак не могу понять, всегда считал, что на сброс уходит один такт и по идее надо писать OCR1A=5759, однако ровно 5мс получаю только при OCR1A=5760.
Уже голову сломал, как такое получается?
Спасибо.

Всё правильно. Сброс счётчика в 0 происходит при совпадении TCNT1 и OCR1A, изначально счётчик в нуле, считаем интервалы:
0->1->2->3 ... ->5759->(5760/0)->1->2 ...
Когда счётчик должен быть равен 5760 (а он в этот момент сбрасывается в 0) - отсчитано ровно 5760 периодов (интервалов), и всё сначала от нуля.

Сообщение отредактировал gerber - Dec 28 2015, 11:27


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 28 2015, 14:30
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



И вот тот самый дополнительный цикл и появляется. Поэтому надо настраивать OCR на одну единицу меньше (т.е. на 5759 в данном случае). И в даташите этот момент тоже есть (см. формулу расчета частоты генерации в режиме CTC).
Go to the top of the page
 
+Quote Post
zombi
сообщение Dec 28 2015, 14:43
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(Alt.F4 @ Dec 27 2015, 23:17) *
по идее надо писать OCR1A=5759, однако ровно 5мс получаю только при OCR1A=5760.

Цитата(rx3apf @ Dec 28 2015, 18:30) *
Поэтому надо настраивать OCR на одну единицу меньше (т.е. на 5759 в данном случае).

wacko.gif
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 28 2015, 14:58
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(zombi @ Dec 28 2015, 17:43) *
wacko.gif

Потому и вопрос - как измерялся интервал времени. И нужно знать _точное_ значение опорной частоты (а не то, что написано на корпусе кварца). В самом тяжелом случае выявить проблемы можно, измеряя интервалы по тактам (формируя внешний клок и контролируя изменение состояния OCx на ноге), благо что архитектура статическая и нет ограничений на нижнюю границу тактовой. Зато вопрос снимается сразу и совершенно однозначно.
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Dec 28 2015, 20:59
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Замерял осциллографом системную частоту с ножки CKOUT, в итоге период 867.8ns, что является частотой ~1152,339кГц.
Когда я щелкал по 5мс, то один шаг получался около ~200кГц, вот в итоге и вся магия.

Интересно только, почему такой большой ppm=294, вместо заявленных производителем +-20ppm?

з.ы. в камне настроен CKDIV8, может этот делитель так влияет? Надо попробовать посмотреть без него.


Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 28 2015, 21:38
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Этого, в общем-то, и следовало ожидать. Хотя да, отклонение от номинала устрашающее. Нагрузочные-то конденсаторы у кварца какого номинала ?
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Dec 29 2015, 16:13
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Нагрузочная емкость по даташиту кварца 20pF.
На плате стоит по 18pF из расчета, что паразитная примерно 10pF.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 29 2015, 17:37
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Тогда просто неприлично большое отклонение. Или кварц исключительно паршивый, или, возможно, врет скоп...
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Dec 29 2015, 17:52
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



rx3apf, вручную по скопу особо не определить по рискам, сколько там тиков, но в авто режиме видно, что иногда проскакивает нормальная длительность, а иногда меньше, ну и в общей сумме частота все-таки съезжает в большую сторону.
Заводил эти тики на часовой таймер, за пару часов набегала разница, поэтому все-таки кварц такой, может уронили где, хотя перепаял на другой, картина особо не изменилась.
Я вот никогда измерял частоту кварцев, как и большинство скорее всего, может это нормальная вообще практика у дешевых кварцев иметь разбежку в 100-200ppm?
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 29 2015, 18:59
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Я бы начал с контроля опорника по частотомеру (естественно, поверенному или откалиброванному любым доступным способом ну хотя бы до 1E-6). Только, конечно, не напрямую с ноги генератора, а включив буфер на отдельную ногу - во многих AVR такой есть. Как вариант - через другой таймер генерить удобный для измерения сигнал и проконтролировать. 100...200 ppm - такое допустимо для пьезорезонатора, но вот чтобы столь отвратительная точность именно кварца - это даже специально найти трудновато, это какое-то особо мерзкое подвальное творчество. При правильном выборе нагрузочных конденсаторов сразу должно бы попасть ну хоть в 50 ppm.

Удостовериться в правильности растактовки - тоже уже описывал метод, но это уже на совсем крайний случай.

Сообщение отредактировал rx3apf - Dec 29 2015, 19:00
Go to the top of the page
 
+Quote Post
Onkel
сообщение Dec 30 2015, 08:58
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 708
Регистрация: 8-05-11
Из: Чг
Пользователь №: 64 861



Цитата(Alt.F4 @ Dec 29 2015, 20:52) *
rx3apf, вручную по скопу особо не определить по рискам, сколько там тиков, но в авто режиме видно, что иногда проскакивает нормальная длительность, а иногда меньше, ну и в общей сумме частота все-таки съезжает в большую сторону.
Заводил эти тики на часовой таймер, за пару часов набегала разница, поэтому все-таки кварц такой, может уронили где, хотя перепаял на другой, картина особо не изменилась.
Я вот никогда измерял частоту кварцев, как и большинство скорее всего, может это нормальная вообще практика у дешевых кварцев иметь разбежку в 100-200ppm?

если "иногда проскакивает нормальная длительность" - предделитель сбрасываете? может какой другой фрагмент кода играется с предделителем?
У меня часы на кварце 14.ххх на атмеге 8а имеют нестабильность 2-3 с в месяц, подгоночный параметр примерно 10^-5.
Go to the top of the page
 
+Quote Post
akl
сообщение Dec 30 2015, 12:47
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773



Рядовым кварцам производитель, как правило, дает гарантированную нестабильность частоты; про точность установки оной скромно умалчивается. Вот здесь на кварце написано 8.000к на самом деле 8'006'760Гц(конденсаторов нет, корпус кварца соединен с лапой GND контроллера).
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 30 2015, 19:14
Сообщение #15


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Так и должно быть - если резонатор не в расчетном включении (без нагрузочных конденсаторов), то результат далек от написанного на корпусе. Приличные производители регламентируют как температурную стабильность, так и начальную точность. У топикстартера конденсаторы есть (даже если не вполне точно выбран номинал), поэтому отклонение больше 50 ppm совершенно неприлично.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 01:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01456 секунд с 7
ELECTRONIX ©2004-2016