Непонятки с частотой ATtiny13

Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить
Родился
Сообщения: 7
Зарегистрирован: Ср июн 19, 2024 22:51:21

Сообщение Igoryan4ik »

Всем привет! Подскажите такой вопрос. Начал изучать Tiny13, купил пару штук в Чип и Дипе в корпусе Soic-8. Закинул код с ШИМ программатором XGecu T48. По заводу шли фъюзы 0xFF 0x6A, выставил 0x7A -(CKDIV8=1) что должно было выставить частоту на 9.6мГц. Подключившись осциллографом, по шиму понял что частота не верная. Для проверки основной частоты закинул код с циклом PORTB |= (1<<PB4); PORTB &= ~(1<<PB4). По итогу если выстaвить CKDIV8=0 Тини работает на частоте 150кГц. Если перейти на частоту 4,8мГц. при CKDIV8=1 частота 600кГц, а при CKDIV8=0 частота 75кГц. В общем что я упускаю, где еще один делитель на 8 ? но его не должно быть. Пробовал на другой тиньке из той же партии. Что я делаю не так ?
Реклама
Вымогатель припоя
Сообщения: 599
Зарегистрирован: Ср янв 06, 2010 10:01:46

Сообщение metan »

Как же так?
Вы дали море нахрен никому не нужной информации, типа модели программатора, где покупали, типа корпуса и т.д.
Но ни кода, ни методики измерения частоты вы не привели. На какую помощь вы вообще рассчитывали?
Что может быть:
1. Неверно измерена частота
2. Частота меняется в коде (CKDIV8, настройки таймеров ШИМА и т.д.)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15712
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Надо для начала хотя бы хорошо с документацией на МК ознакомиться...
Да задать верную начальную конфигурацию аппаратных ресурсов.
А потом уж "контейнер гнать" на результат.
:twisted:
Родился
Сообщения: 7
Зарегистрирован: Ср июн 19, 2024 22:51:21

Сообщение Igoryan4ik »

Код: Фъюзы: Осциллограмма общий и вывод PB4:
Как правильно измерять частоту МК ?
Вложения
осц.jpg
(194.08 КБ) 82 скачивания
фъюзы.png
(23.68 КБ) 83 скачивания
код.png
(23.98 КБ) 97 скачиваний
Последний раз редактировалось Igoryan4ik Чт июн 20, 2024 19:47:11, всего редактировалось 3 раза.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

код в картинке с кривой ссылкой... там перфоленты изображение? :)))
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15712
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Это розыгрыш? (Насчёт кода на Си)
:music:
Ни настроек ни начальной инициализации МК.
Ткнулось "по умолчанию и фузам" и желаем точные характеристики получить (не прочитав, что при заданных фузах и прочем... в результате на выходах будет)...
:facepalm:
Реклама
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

[uquote="Igoryan4ik",url="/forum/viewtopic.php?p=4593019#p4593019"]Что я делаю не так ?[/uquote] Не изучив теорию, схватились за паяльник... Ну, решим ща этот вопрос. Завтра будет другой. В итоге, здесь будет в очередной раз криво перепечатана книжка "Микроконтроллеры AVR. Вводный курс" (Д. Мортон, 2006)
Контактная информация:
Родился
Сообщения: 7
Зарегистрирован: Ср июн 19, 2024 22:51:21

Сообщение Igoryan4ik »

Этого кода достаточно для проверки на кокой частоте работает МК. Какая инициализация еще нужна. везде в примерах работы этого хватает. Я не запускаю шим или други функции.
Друг Кота
Аватара пользователя
Сообщения: 15712
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

В сундуке кота есть по тинькам книга на русском.
:hunger:
По умолчанию у 13й частота RC генератора 9,6мегагерца.
Внутреннее тактирование (если ничего не трогать в фузах) будет 9,6/8=1, 2МГц далее считаем такты команд (хотя бы примерно) согласно соответствующей документации по системе команд МК семейства АВР... (Явно не под Си, а в распечатке листинга ассемблера)
Или используем аппаратный таймер с соответствующими настройками - более точный интервал получить можно.
8)
Про "переключение от 4,8 мегагерц" вообще бред - ибо там калибровочная константа автоматически не загружается (читаем хоть иногда документацию!) так что примитив без соответствующих настроек инициализации железа не гарантирует стабильно-устойчивой работы RC генератора.
Последний раз редактировалось BOB51 Чт июн 20, 2024 21:44:06, всего редактировалось 1 раз.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Потому и надо книгу... код написал, а что код, где код, как мк работает - этого понимания нет :cry:
Контактная информация:
Родился
Сообщения: 7
Зарегистрирован: Ср июн 19, 2024 22:51:21

Сообщение Igoryan4ik »

[uquote="BOB51",url="/forum/viewtopic.php?p=4593380#p4593380"]В сундуке кота есть по тинькам книга на русском.
:hunger:
По умолчанию у 13й частота RC генератора 9,6мегагерца.
Внутреннее тактирование (если ничего не трогать в фузах) будет 9,6/8=1, 2МГц далее считаем такты команд (хотя бы примерно) согласно соответствующей документации по системе команд МК семейства АВР... (Явно не под Си, а в распечатке листинга ассемблера)
Или используем аппаратный таймер с соответствующими настройками - более точный интервал получить можно.
8)[/uquote]
Да согласен но я отключил делитель на 8. По осциллограмме видно что длительность высокого уровня 320нс это период такта МК на выполнение команды ORI и это 3,125мГц но не 9,6
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

На картинке Вашего кода эта команда не нарисована
Контактная информация:
Родился
Сообщения: 7
Зарегистрирован: Ср июн 19, 2024 22:51:21

Сообщение Igoryan4ik »

[uquote="Martian",url="/forum/viewtopic.php?p=4593384#p4593384"]На картинке Вашего кода эта команда не нарисована[/uquote]
А это не оно разве PORTB |= (1<<PB4)
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Нет. Это - Си.
Нарисуйте картинку ассемблерного листинга после компиляции.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15712
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Точно рассчитать время выполнения команд программы можно только при работе под чистым ассемблером.
Или применяя аппаратные средства таймеров.
Так что... Изучите для начала матчасть (хотя бы поверхностно)
8)
Родился
Сообщения: 7
Зарегистрирован: Ср июн 19, 2024 22:51:21

Сообщение Igoryan4ik »

Ок спасибо буду смотреть ассемблер

Добавлено after 40 minutes 16 seconds:
[uquote="Martian",url="/forum/viewtopic.php?p=4593386#p4593386"]Нет. Это - Си.
Нарисуйте картинку ассемблерного листинга после компиляции.[/uquote]

После компиляции в Microchip Studio файл LSS. Это получается что на команду PORTB |= (1<<PB4) уходит 3 команды ассемблера и каждая длится по такту: IN чтение порта , ORI лог или, OUT запись в порт. итого 3 такта. Тогда получается длительность высокого уровня 320нс это 3 такта МК по 106нс. итого примерно 9.4 мГц Так ?
Вложения
LSS.txt
(3.02 КБ) 122 скачивания
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Почти. Дело в том, что на выполнение команды может уйти и более одного такта, это зависит от архитектуры микроконтроллера, частного случая выполнения команды, и, возможно, иных условий.
https://microsin.net/programming/avr/command-timing.html писал(а):Таблицу соответствия между командами микроконтроллера и количеством тактов можно найти в даташите на микроконтроллер, см. раздел Instructions Set Summary в конце даташита. В последнем столбце таблицы #Clocks указано число тактов, за которое выполняется команда. Если там стоит одна цифра - например 2, тогда все понятно, команда выполняется 2 такта. Но иногда там стоит 1/2 или 1/2/3. Это означает для примера 1/2, что команда может выполнится за 1 или 2 такта, что зависит от условия выполнения команды.
Контактная информация:
Родился
Сообщения: 7
Зарегистрирован: Ср июн 19, 2024 22:51:21

Сообщение Igoryan4ik »

Понятно, разобрался. Спасибо всем за помощь, буду поглядывать на ассемблер. но кодить все же на С проще.
Друг Кота
Аватара пользователя
Сообщения: 16868
Зарегистрирован: Пт мар 30, 2012 05:17:29
Откуда: Екатеринбург

Сообщение mickbell »

Данунафиг. Ассемблер - для крайних случаев, коих на самом деле мало. Писать программный кот НАДО на Си. А считать временные интервалы по тактам - это позапрошлый век. Для счёта времени есть таймеры.
И хрюкотали зелюки,
Как мюмзики в мове.

На каждый РКН
Найдётся VPN.
Открыл глаза
Аватара пользователя
Сообщения: 47
Зарегистрирован: Чт дек 22, 2011 22:22:46
Откуда: Тольятти

Сообщение iev91 »

Дано: симисторный регулятор Овен для вентилятора. Он обнаруживает переход сети через 0, отмеряет время для регулировки мощности, включает импульс управления симистором, а в момент перехода через 0 отключает. Проблема в том, что отключать надо бы чуть раньше. В итоге регулятор работает неустойчиво.

Было решено добавить tiny13, чтобы укорачивать импульсы. И нарисовалась проблема с tiny13 на ровном месте. Устройство из палки и верёвки почему-то не работает. Часть импульсов пропущено. Понимаю, что можно сделать по-другому, но мне надо понять, в чём дело.

Красный луч - это входные импульсы частотой 100 Гц на порту PB3, жёлтый луч - выходные импульсы с порта PB0.

Добавлено after 22 minutes 21 second:
Всё, разобрался сам. Не срабатывает, когда фронт попадает после первого if, но до следующего while. Сделал ожидание обоих уровней, заработало.
Вложения
20230511_203205.gif
(19.6 КБ) 64 скачивания
scratch.c
(965 байт) 81 скачивание
Контактная информация:
Ответить

Вернуться в «Практика»