Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Измерение рабочей частоты микроконтроллера
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Diaskop
ATtiny13 при программировании установлены "Divide clock by 8", "Clock option CKSEL=10, SUT=10", и CLKPS0=1,CLKPS2=1. Т.е. частота 9,6 мГц : на 8 =1,2мГц и 1,2мГц : на 36=37,5 кГц. Как мне увидеть осциллографом или измерить тактовую частоту микроконтроллера? При программировании в режиме ШИМ (PWM - CTC) и установке OCR0A=0x0, т.е. срабатывание без задержки, выходная частота =~7 кГц.
Спасибо
rx3apf
Цитата(Diaskop @ Feb 25 2008, 17:59) *
Как мне увидеть осциллографом или измерить тактовую частоту микроконтроллера?

Посмотреть период или длительность импульса программно-реализованного генератора импульсов. Т.е. включить бит в portx, выключить его, перейти. Итого период шесть циклов (sbi, cbi, rjmp).
Dog Pawlowa
Цитата(Diaskop @ Feb 25 2008, 18:59) *
Как мне увидеть осциллографом или измерить тактовую частоту микроконтроллера?

На выводах XTAL1 XTAL2 осциллографом с делителем или через емкость 10-20 пФ
=GM=
Цитата(Diaskop @ Feb 25 2008, 14:59) *
ATtiny13 при программировании установлены "Divide clock by 8", "Clock option CKSEL=10, SUT=10", и CLKPS0=1,CLKPS2=1. Т.е. частота 9,6 мГц : на 8 =1,2мГц и 1,2мГц : на 36=37,5 кГц. Как мне увидеть осциллографом или измерить тактовую частоту микроконтроллера? При программировании в режиме ШИМ (PWM - CTC) и установке OCR0A=0x0, т.е. срабатывание без задержки, выходная частота =~7 кГц

Немного не так, вернее, совсем не так. Запись CLKPS0=1,CLKPS2=1 в регистр CLKPR обеспечивает деление тактовой частоты на 32, следовательно, Fclk=9600/32=300 кГц. В СТС режиме без прескалера выходная частота должна быть равна 300/2/2=75кГц.
aleksey_g
Цитата(Dog Pawlowa @ Feb 25 2008, 19:09) *
На выводах XTAL1 XTAL2 осциллографом с делителем или через емкость 10-20 пФ

Это при cksel=10? Т.е. на внутреннем генераторе?
НЕ ВЕРЮ! Да и где Вы нашли у этого кристала XTAL1 XTAL2 ?
Здается мне, это дезинформация!
Diaskop
Вопрос решен, все чудесно работает. Естественно XTAL отсутствует, а измерят частоту надо все же через ШИМ и вести подсчет определенного числа импульсов в T0. Всем спасибо, тема закрыта.
=GM=
Цитата(Diaskop @ Feb 26 2008, 15:00) *
Вопрос решен, все чудесно работает. Естественно XTAL отсутствует, а измерят частоту надо все же через ШИМ и вести подсчет определенного числа импульсов в T0. Всем спасибо, тема закрыта

Надо бы объяснить общественности, где ошибка, чтобы будущие читатели могли понять, где была собака зарыта, в смысле, где была ошибка, а уж потом закрывать тему. Кстати, какой подсчёт импульсов в T0, о чём вы говорите?
aleksey_g
Цитата(=GM= @ Feb 26 2008, 17:09) *
Надо бы объяснить общественности, где ошибка, чтобы будущие читатели могли понять, где была собака зарыта, в смысле, где была ошибка, а уж потом закрывать тему. Кстати, какой подсчёт импульсов в T0, о чём вы говорите?


rx3apf дело говорит!
Нужно еще не забывать об таком регистре, как OSCCAL!
Он тоже влияет на частоту, но не в такой, естественно степени, как CKDIV8 или CKSEL1..0!
Мне лично проще написать цыкл -

включить бит порта
пауза
выключить бит порта
пауза
перейти на начало

И если это на С, то дебажу в аврстудии. Ставлю брейкпоинт на (например) включить бит порта, зарускаю программу. По остановке на брейкпоинте обнуляю счетчик циклов и опять зарускаю программу.
На следующей остановке на том же брейкпоинте, смотрю счетчик цыклов. (Даже подсчитывать, что там наоптимизировал компилятор в асм-листинге не нужно)
Ту же программу шью в кристал. Смотрю осциллографом период сигнала.
Делаю вывод об частоте тактирования. Если нужна точность, корректирую OSCCAL и по-новой, до достижения нужного результата.
Теперь, зная нужный OSCCAL, вставляю его в рабочую программу. Теперь уверен в том, что именно этот кристалл тактируется нужной мне частотой.
Немножко геморно, зато надежно.
Кстати, не знаю, как со стабильностью у Т13, но эксперименты с Т15 меня сильно огорчили. (видимо слишком старый кристалл) Очень сильная зависимость частоты от напряжения питания!
Т45 показала себя гораздо большей стабильностью!
Diaskop
Цитата(=GM= @ Feb 26 2008, 18:09) *
Надо бы объяснить общественности, где ошибка, чтобы будущие читатели могли понять, где была собака зарыта, в смысле, где была ошибка, а уж потом закрывать тему. Кстати, какой подсчёт импульсов в T0, о чём вы говорите?


Таймер T0 обладает тремя режимами ШИМ (Normal, CTC, Fast PWM ). В режиме СТС тактовые импульсы подаются напрямую на таймер и значение регистра таймера непрерывно сравнивается с значением записанным программно в регистр OCR0A. При достижении счетчика таймера значения регистра OCR0A изменяется значение на выходе, таймер сбрасывается и все начинается сначала. Программно надо разрешить выход таймера на PB0 ( OC0A-это и есть прямой выход таймера). Практически получается делитель тактовой частоты на значение записанное в OCR0A.

У меня была проблема в том, что я видел и мог программно менять выходную частоту, но она была очень низкой. ОШИБКА сидела в программаторе. Я использую ELNEC и в рабочих опциях не стояла птица в клеточке "Device configuration (Lock & Fuses)", т.е. контроллер работал на низкой частоте, которая еще и делилась.

Некоторые предлагали простой на первый взгляд вариант: вкл. и выкл. в цикле выход (дергать выход). Напишите эту прогу на С и затем посмотрите её вид в ассемблере, там компилятор встраивает ещё кучу переходов, т.е. частоту не измерить.
aleksey_g
Цитата(Diaskop @ Feb 27 2008, 09:46) *
Некоторые предлагали простой на первый взгляд вариант: вкл. и выкл. в цикле выход (дергать выход). Напишите эту прогу на С и затем посмотрите её вид в ассемблере, там компилятор встраивает ещё кучу переходов, т.е. частоту не измерить.


Да пусть он хоть миллион переходов вставляет, аврстудия точно покажет кол-во тактов от любого до любого места в программе, если не хотите сами посчитать по асм-листингу. А зная кол-во тактов и время их выполнения по осциллографу или частотомеру - простой арифметикой узнаете частоту тактирования.
Неужели это так сложно для понимания?

Естественно, если эта программа без ветвлений, зависящих от внешних воздействий или прерываний...
domowoj
Делал 100Гц ШИМ на Тини15 синхронизированый с сетью 50Гц . Долго игрался с OSCCAL. Дело в том, что
значение OSCCAL не дает однозначного результата тактовой частоты от образца к образцу.
Когда надоело подбирать вручную- написал кусочек программы- методом последовательного
приближения меняя OSCCAL сравнивал ШИМ со 100Гц сети.
А частоту проц. можно определить и косвенно , сформировав сигнал на OC0A, к примеру, померив период (частоту) ШИМ и зная все коэф. деления найти частоту процессора.
akl
"Посмотреть период или длительность импульса программно-реализованного генератора импульсов..." можно с помощью прикрепленной программы, позволяющей определять частоту генерации системы - конкретный экземпляр контроллера+конкретный экземпляр кварца.

Например:
На корпусе кварца написано 4608кГц(Fclk).
В программе устанавливаем значение 46'080'000.
1. Проверяем на AVRSTUDIO.
Измеряем период. Показания измерителя периода 9'993'985.8 мксек.
Далее 46'080'000/0.99939858=46'107'730.
Вводим в программу полученное значение и переходим к п.1.
После получения периода 10'000'000.х принимается решение, что найдено значение 10*Fclk.

Приведенный пример содержит реально полученные значения.
Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.