|
|
  |
Измерение рабочей частоты микроконтроллера, Как увидеть осциллографом или измерить тактовую частоту микроконтрол |
|
|
|
Feb 25 2008, 14:59
|
Группа: Новичок
Сообщений: 3
Регистрация: 15-11-07
Из: Винница, Украина
Пользователь №: 32 361

|
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 кГц. Спасибо
Сообщение отредактировал Diaskop - Feb 25 2008, 15:02
|
|
|
|
|
Feb 25 2008, 17:17
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(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кГц.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Feb 26 2008, 09:26
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066

|
Цитата(Dog Pawlowa @ Feb 25 2008, 19:09)  На выводах XTAL1 XTAL2 осциллографом с делителем или через емкость 10-20 пФ Это при cksel=10? Т.е. на внутреннем генераторе? НЕ ВЕРЮ! Да и где Вы нашли у этого кристала XTAL1 XTAL2 ? Здается мне, это дезинформация!
|
|
|
|
|
Feb 26 2008, 15:00
|
Группа: Новичок
Сообщений: 3
Регистрация: 15-11-07
Из: Винница, Украина
Пользователь №: 32 361

|
Вопрос решен, все чудесно работает. Естественно XTAL отсутствует, а измерят частоту надо все же через ШИМ и вести подсчет определенного числа импульсов в T0. Всем спасибо, тема закрыта.
|
|
|
|
|
Feb 26 2008, 15:09
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(Diaskop @ Feb 26 2008, 15:00)  Вопрос решен, все чудесно работает. Естественно XTAL отсутствует, а измерят частоту надо все же через ШИМ и вести подсчет определенного числа импульсов в T0. Всем спасибо, тема закрыта Надо бы объяснить общественности, где ошибка, чтобы будущие читатели могли понять, где была собака зарыта, в смысле, где была ошибка, а уж потом закрывать тему. Кстати, какой подсчёт импульсов в T0, о чём вы говорите?
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Feb 26 2008, 16:09
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066

|
Цитата(=GM= @ Feb 26 2008, 17:09)  Надо бы объяснить общественности, где ошибка, чтобы будущие читатели могли понять, где была собака зарыта, в смысле, где была ошибка, а уж потом закрывать тему. Кстати, какой подсчёт импульсов в T0, о чём вы говорите? rx3apf дело говорит! Нужно еще не забывать об таком регистре, как OSCCAL! Он тоже влияет на частоту, но не в такой, естественно степени, как CKDIV8 или CKSEL1..0! Мне лично проще написать цыкл - включить бит порта пауза выключить бит порта пауза перейти на начало И если это на С, то дебажу в аврстудии. Ставлю брейкпоинт на (например) включить бит порта, зарускаю программу. По остановке на брейкпоинте обнуляю счетчик циклов и опять зарускаю программу. На следующей остановке на том же брейкпоинте, смотрю счетчик цыклов. (Даже подсчитывать, что там наоптимизировал компилятор в асм-листинге не нужно) Ту же программу шью в кристал. Смотрю осциллографом период сигнала. Делаю вывод об частоте тактирования. Если нужна точность, корректирую OSCCAL и по-новой, до достижения нужного результата. Теперь, зная нужный OSCCAL, вставляю его в рабочую программу. Теперь уверен в том, что именно этот кристалл тактируется нужной мне частотой. Немножко геморно, зато надежно. Кстати, не знаю, как со стабильностью у Т13, но эксперименты с Т15 меня сильно огорчили. (видимо слишком старый кристалл) Очень сильная зависимость частоты от напряжения питания! Т45 показала себя гораздо большей стабильностью!
|
|
|
|
|
Feb 27 2008, 07:46
|
Группа: Новичок
Сообщений: 3
Регистрация: 15-11-07
Из: Винница, Украина
Пользователь №: 32 361

|
Цитата(=GM= @ Feb 26 2008, 18:09)  Надо бы объяснить общественности, где ошибка, чтобы будущие читатели могли понять, где была собака зарыта, в смысле, где была ошибка, а уж потом закрывать тему. Кстати, какой подсчёт импульсов в T0, о чём вы говорите? Таймер T0 обладает тремя режимами ШИМ (Normal, CTC, Fast PWM ). В режиме СТС тактовые импульсы подаются напрямую на таймер и значение регистра таймера непрерывно сравнивается с значением записанным программно в регистр OCR0A. При достижении счетчика таймера значения регистра OCR0A изменяется значение на выходе, таймер сбрасывается и все начинается сначала. Программно надо разрешить выход таймера на PB0 ( OC0A-это и есть прямой выход таймера). Практически получается делитель тактовой частоты на значение записанное в OCR0A. У меня была проблема в том, что я видел и мог программно менять выходную частоту, но она была очень низкой. ОШИБКА сидела в программаторе. Я использую ELNEC и в рабочих опциях не стояла птица в клеточке "Device configuration (Lock & Fuses)", т.е. контроллер работал на низкой частоте, которая еще и делилась. Некоторые предлагали простой на первый взгляд вариант: вкл. и выкл. в цикле выход (дергать выход). Напишите эту прогу на С и затем посмотрите её вид в ассемблере, там компилятор встраивает ещё кучу переходов, т.е. частоту не измерить.
|
|
|
|
|
Feb 27 2008, 08:16
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066

|
Цитата(Diaskop @ Feb 27 2008, 09:46)  Некоторые предлагали простой на первый взгляд вариант: вкл. и выкл. в цикле выход (дергать выход). Напишите эту прогу на С и затем посмотрите её вид в ассемблере, там компилятор встраивает ещё кучу переходов, т.е. частоту не измерить. Да пусть он хоть миллион переходов вставляет, аврстудия точно покажет кол-во тактов от любого до любого места в программе, если не хотите сами посчитать по асм-листингу. А зная кол-во тактов и время их выполнения по осциллографу или частотомеру - простой арифметикой узнаете частоту тактирования. Неужели это так сложно для понимания? Естественно, если эта программа без ветвлений, зависящих от внешних воздействий или прерываний...
|
|
|
|
|
Mar 15 2008, 07:10
|
Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773

|
"Посмотреть период или длительность импульса программно-реализованного генератора импульсов..." можно с помощью прикрепленной программы, позволяющей определять частоту генерации системы - конкретный экземпляр контроллера+конкретный экземпляр кварца. Например: На корпусе кварца написано 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. Приведенный пример содержит реально полученные значения.
FRC.zip ( 880 байт )
Кол-во скачиваний: 159
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|