Diaskop 0 25 февраля, 2008 Опубликовано 25 февраля, 2008 (изменено) · Жалоба 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 кГц. Спасибо Изменено 25 февраля, 2008 пользователем Diaskop Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 25 февраля, 2008 Опубликовано 25 февраля, 2008 · Жалоба Как мне увидеть осциллографом или измерить тактовую частоту микроконтроллера? Посмотреть период или длительность импульса программно-реализованного генератора импульсов. Т.е. включить бит в portx, выключить его, перейти. Итого период шесть циклов (sbi, cbi, rjmp). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 25 февраля, 2008 Опубликовано 25 февраля, 2008 · Жалоба Как мне увидеть осциллографом или измерить тактовую частоту микроконтроллера? На выводах XTAL1 XTAL2 осциллографом с делителем или через емкость 10-20 пФ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 25 февраля, 2008 Опубликовано 25 февраля, 2008 · Жалоба 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_gregul 0 26 февраля, 2008 Опубликовано 26 февраля, 2008 · Жалоба На выводах XTAL1 XTAL2 осциллографом с делителем или через емкость 10-20 пФ Это при cksel=10? Т.е. на внутреннем генераторе? НЕ ВЕРЮ! Да и где Вы нашли у этого кристала XTAL1 XTAL2 ? Здается мне, это дезинформация! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Diaskop 0 26 февраля, 2008 Опубликовано 26 февраля, 2008 · Жалоба Вопрос решен, все чудесно работает. Естественно XTAL отсутствует, а измерят частоту надо все же через ШИМ и вести подсчет определенного числа импульсов в T0. Всем спасибо, тема закрыта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 26 февраля, 2008 Опубликовано 26 февраля, 2008 · Жалоба Вопрос решен, все чудесно работает. Естественно XTAL отсутствует, а измерят частоту надо все же через ШИМ и вести подсчет определенного числа импульсов в T0. Всем спасибо, тема закрыта Надо бы объяснить общественности, где ошибка, чтобы будущие читатели могли понять, где была собака зарыта, в смысле, где была ошибка, а уж потом закрывать тему. Кстати, какой подсчёт импульсов в T0, о чём вы говорите? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aleksey_gregul 0 26 февраля, 2008 Опубликовано 26 февраля, 2008 · Жалоба Надо бы объяснить общественности, где ошибка, чтобы будущие читатели могли понять, где была собака зарыта, в смысле, где была ошибка, а уж потом закрывать тему. Кстати, какой подсчёт импульсов в T0, о чём вы говорите? rx3apf дело говорит! Нужно еще не забывать об таком регистре, как OSCCAL! Он тоже влияет на частоту, но не в такой, естественно степени, как CKDIV8 или CKSEL1..0! Мне лично проще написать цыкл - включить бит порта пауза выключить бит порта пауза перейти на начало И если это на С, то дебажу в аврстудии. Ставлю брейкпоинт на (например) включить бит порта, зарускаю программу. По остановке на брейкпоинте обнуляю счетчик циклов и опять зарускаю программу. На следующей остановке на том же брейкпоинте, смотрю счетчик цыклов. (Даже подсчитывать, что там наоптимизировал компилятор в асм-листинге не нужно) Ту же программу шью в кристал. Смотрю осциллографом период сигнала. Делаю вывод об частоте тактирования. Если нужна точность, корректирую OSCCAL и по-новой, до достижения нужного результата. Теперь, зная нужный OSCCAL, вставляю его в рабочую программу. Теперь уверен в том, что именно этот кристалл тактируется нужной мне частотой. Немножко геморно, зато надежно. Кстати, не знаю, как со стабильностью у Т13, но эксперименты с Т15 меня сильно огорчили. (видимо слишком старый кристалл) Очень сильная зависимость частоты от напряжения питания! Т45 показала себя гораздо большей стабильностью! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Diaskop 0 27 февраля, 2008 Опубликовано 27 февраля, 2008 · Жалоба Надо бы объяснить общественности, где ошибка, чтобы будущие читатели могли понять, где была собака зарыта, в смысле, где была ошибка, а уж потом закрывать тему. Кстати, какой подсчёт импульсов в T0, о чём вы говорите? Таймер T0 обладает тремя режимами ШИМ (Normal, CTC, Fast PWM ). В режиме СТС тактовые импульсы подаются напрямую на таймер и значение регистра таймера непрерывно сравнивается с значением записанным программно в регистр OCR0A. При достижении счетчика таймера значения регистра OCR0A изменяется значение на выходе, таймер сбрасывается и все начинается сначала. Программно надо разрешить выход таймера на PB0 ( OC0A-это и есть прямой выход таймера). Практически получается делитель тактовой частоты на значение записанное в OCR0A. У меня была проблема в том, что я видел и мог программно менять выходную частоту, но она была очень низкой. ОШИБКА сидела в программаторе. Я использую ELNEC и в рабочих опциях не стояла птица в клеточке "Device configuration (Lock & Fuses)", т.е. контроллер работал на низкой частоте, которая еще и делилась. Некоторые предлагали простой на первый взгляд вариант: вкл. и выкл. в цикле выход (дергать выход). Напишите эту прогу на С и затем посмотрите её вид в ассемблере, там компилятор встраивает ещё кучу переходов, т.е. частоту не измерить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aleksey_gregul 0 27 февраля, 2008 Опубликовано 27 февраля, 2008 · Жалоба Некоторые предлагали простой на первый взгляд вариант: вкл. и выкл. в цикле выход (дергать выход). Напишите эту прогу на С и затем посмотрите её вид в ассемблере, там компилятор встраивает ещё кучу переходов, т.е. частоту не измерить. Да пусть он хоть миллион переходов вставляет, аврстудия точно покажет кол-во тактов от любого до любого места в программе, если не хотите сами посчитать по асм-листингу. А зная кол-во тактов и время их выполнения по осциллографу или частотомеру - простой арифметикой узнаете частоту тактирования. Неужели это так сложно для понимания? Естественно, если эта программа без ветвлений, зависящих от внешних воздействий или прерываний... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
domowoj 0 15 марта, 2008 Опубликовано 15 марта, 2008 · Жалоба Делал 100Гц ШИМ на Тини15 синхронизированый с сетью 50Гц . Долго игрался с OSCCAL. Дело в том, что значение OSCCAL не дает однозначного результата тактовой частоты от образца к образцу. Когда надоело подбирать вручную- написал кусочек программы- методом последовательного приближения меняя OSCCAL сравнивал ШИМ со 100Гц сети. А частоту проц. можно определить и косвенно , сформировав сигнал на OC0A, к примеру, померив период (частоту) ШИМ и зная все коэф. деления найти частоту процессора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akl 0 15 марта, 2008 Опубликовано 15 марта, 2008 · Жалоба "Посмотреть период или длительность импульса программно-реализованного генератора импульсов..." можно с помощью прикрепленной программы, позволяющей определять частоту генерации системы - конкретный экземпляр контроллера+конкретный экземпляр кварца. Например: На корпусе кварца написано 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться