Alt.F4 0 27 декабря, 2015 Опубликовано 27 декабря, 2015 · Жалоба Здравствуйте. Задача считать 5мс (кварц 1152кГц). Настраиваю таймер в режим СТС (сброс при совпадении TCNT1 и OCR1A), т.е. надо насчитать 1152*5=5760 тактов. Но никак не могу понять, всегда считал, что на сброс уходит один такт и по идее надо писать OCR1A=5759, однако ровно 5мс получаю только при OCR1A=5760. Уже голову сломал, как такое получается? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 28 декабря, 2015 Опубликовано 28 декабря, 2015 · Жалоба Каким образом измерялся интервал ? Может быть, проблема в измерении ? Или так неудачно выбраны нагрузочные конденсаторы опорного кварца, что отклонение столь велико (170E-6, если конденсаторы не поставить, вполне возможно, IMHO). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 8 28 декабря, 2015 Опубликовано 28 декабря, 2015 (изменено) · Жалоба Здравствуйте. Задача считать 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 периодов (интервалов), и всё сначала от нуля. Изменено 28 декабря, 2015 пользователем gerber Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 28 декабря, 2015 Опубликовано 28 декабря, 2015 · Жалоба И вот тот самый дополнительный цикл и появляется. Поэтому надо настраивать OCR на одну единицу меньше (т.е. на 5759 в данном случае). И в даташите этот момент тоже есть (см. формулу расчета частоты генерации в режиме CTC). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 28 декабря, 2015 Опубликовано 28 декабря, 2015 · Жалоба по идее надо писать OCR1A=5759, однако ровно 5мс получаю только при OCR1A=5760. Поэтому надо настраивать OCR на одну единицу меньше (т.е. на 5759 в данном случае). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 28 декабря, 2015 Опубликовано 28 декабря, 2015 · Жалоба Потому и вопрос - как измерялся интервал времени. И нужно знать _точное_ значение опорной частоты (а не то, что написано на корпусе кварца). В самом тяжелом случае выявить проблемы можно, измеряя интервалы по тактам (формируя внешний клок и контролируя изменение состояния OCx на ноге), благо что архитектура статическая и нет ограничений на нижнюю границу тактовой. Зато вопрос снимается сразу и совершенно однозначно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 0 28 декабря, 2015 Опубликовано 28 декабря, 2015 · Жалоба Замерял осциллографом системную частоту с ножки CKOUT, в итоге период 867.8ns, что является частотой ~1152,339кГц. Когда я щелкал по 5мс, то один шаг получался около ~200кГц, вот в итоге и вся магия. Интересно только, почему такой большой ppm=294, вместо заявленных производителем +-20ppm? з.ы. в камне настроен CKDIV8, может этот делитель так влияет? Надо попробовать посмотреть без него. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 28 декабря, 2015 Опубликовано 28 декабря, 2015 · Жалоба Этого, в общем-то, и следовало ожидать. Хотя да, отклонение от номинала устрашающее. Нагрузочные-то конденсаторы у кварца какого номинала ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 0 29 декабря, 2015 Опубликовано 29 декабря, 2015 · Жалоба Нагрузочная емкость по даташиту кварца 20pF. На плате стоит по 18pF из расчета, что паразитная примерно 10pF. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 29 декабря, 2015 Опубликовано 29 декабря, 2015 · Жалоба Тогда просто неприлично большое отклонение. Или кварц исключительно паршивый, или, возможно, врет скоп... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 0 29 декабря, 2015 Опубликовано 29 декабря, 2015 · Жалоба rx3apf, вручную по скопу особо не определить по рискам, сколько там тиков, но в авто режиме видно, что иногда проскакивает нормальная длительность, а иногда меньше, ну и в общей сумме частота все-таки съезжает в большую сторону. Заводил эти тики на часовой таймер, за пару часов набегала разница, поэтому все-таки кварц такой, может уронили где, хотя перепаял на другой, картина особо не изменилась. Я вот никогда измерял частоту кварцев, как и большинство скорее всего, может это нормальная вообще практика у дешевых кварцев иметь разбежку в 100-200ppm? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 29 декабря, 2015 Опубликовано 29 декабря, 2015 (изменено) · Жалоба Я бы начал с контроля опорника по частотомеру (естественно, поверенному или откалиброванному любым доступным способом ну хотя бы до 1E-6). Только, конечно, не напрямую с ноги генератора, а включив буфер на отдельную ногу - во многих AVR такой есть. Как вариант - через другой таймер генерить удобный для измерения сигнал и проконтролировать. 100...200 ppm - такое допустимо для пьезорезонатора, но вот чтобы столь отвратительная точность именно кварца - это даже специально найти трудновато, это какое-то особо мерзкое подвальное творчество. При правильном выборе нагрузочных конденсаторов сразу должно бы попасть ну хоть в 50 ppm. Удостовериться в правильности растактовки - тоже уже описывал метод, но это уже на совсем крайний случай. Изменено 29 декабря, 2015 пользователем rx3apf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Onkel 1 30 декабря, 2015 Опубликовано 30 декабря, 2015 · Жалоба rx3apf, вручную по скопу особо не определить по рискам, сколько там тиков, но в авто режиме видно, что иногда проскакивает нормальная длительность, а иногда меньше, ну и в общей сумме частота все-таки съезжает в большую сторону. Заводил эти тики на часовой таймер, за пару часов набегала разница, поэтому все-таки кварц такой, может уронили где, хотя перепаял на другой, картина особо не изменилась. Я вот никогда измерял частоту кварцев, как и большинство скорее всего, может это нормальная вообще практика у дешевых кварцев иметь разбежку в 100-200ppm? если "иногда проскакивает нормальная длительность" - предделитель сбрасываете? может какой другой фрагмент кода играется с предделителем? У меня часы на кварце 14.ххх на атмеге 8а имеют нестабильность 2-3 с в месяц, подгоночный параметр примерно 10^-5. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akl 0 30 декабря, 2015 Опубликовано 30 декабря, 2015 · Жалоба Рядовым кварцам производитель, как правило, дает гарантированную нестабильность частоты; про точность установки оной скромно умалчивается. Вот здесь на кварце написано 8.000к на самом деле 8'006'760Гц(конденсаторов нет, корпус кварца соединен с лапой GND контроллера). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 30 декабря, 2015 Опубликовано 30 декабря, 2015 · Жалоба Так и должно быть - если резонатор не в расчетном включении (без нагрузочных конденсаторов), то результат далек от написанного на корпусе. Приличные производители регламентируют как температурную стабильность, так и начальную точность. У топикстартера конденсаторы есть (даже если не вполне точно выбран номинал), поэтому отклонение больше 50 ppm совершенно неприлично. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться