AT328P от 8 МГц и от 16 МГц работает медленнее, чем от 1 МГц
- Войдите на сайт для отправки комментариев
Вцелях экономии и миниатюризации решил модули заменять на чипы AT328P. Для этого установил на Arduino IDE поддержку AVR: https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package...
После настройки в меню "Инструменты" появились поддерживаемые микросхемы и скорость процессора:
8MHz Internal Oscillator
20MHz Crystal/Resonator
16MHz Crystal/Resonator
1MHz Internal Oscillator
Проверяю скорость - от 1 МГц(4-й вариант) всё соответствует, а от 8 МГц всё работает раз в 10 медленней, а от 16-ти - ещё раза в 2 медленнее.
Прошиваю всё через USBASP, на скриншоте было бы всё видно, но вставить его не получается. Но вообще это всё странно, получается что ссылка с гитхаба кривая?
Думаю, мастер такой.
Брысь...
В общем, скриншот такой:
После настройки в меню "Инструменты" появились поддерживаемые микросхемы и скорость процессора:
8MHz Internal Oscillator
20MHz Crystal/Resonator
16MHz Crystal/Resonator
1MHz Internal Oscillator
Проверяю скорость - от 1 МГц(4-й вариант) всё соответствует, а от 8 МГц всё работает раз в 10 медленней, а от 16-ти - ещё раза в 2 медленнее.
эти настройки не меняют скорость контроллера, а только компилируют код под соответствующую частоту. Если у вас при настройке 1 МГц код исполняется нормально - значит у вас МК работает на частоте 1 МГц. Потом вы компилируете код для 8 МГц - а заливаете то в контроллер, который по-прежнему работает под 1 МГц - не удивительно, что код "работает раз в 10 медленней" чем должен - на самом деле не в 10, а в 8 раз. Ну а при выборе в меню 16 МГц - "ещё раза в 2 медленнее" :)
Чтобы поменять частоту тактирования МК, его нужно перешить с правильными фьюзами.
А почему тогда в родных платах фьюзы конфигурируются правильно при выборе платы в меню?
По сути, тогда от Arduino IDE никакого толку, раз фьюзы всё равно нужно будет прошивать отдельно.
Вроде раньше видел где-то, что для добавочных платформ также формируется файл boards.txt, только не в папке "Arduino", а где-то в другом месте, и там точно так же прописываются все настройки, в т.ч. фьюзы. Если это так, то непонятно, почему это не срабатывает.
А почему тогда в родных платах фьюзы конфигурируются правильно при выборе платы в меню?
По сути, тогда от Arduino IDE никакого толку, раз фьюзы всё равно нужно будет прошивать отдельно.
Вроде раньше видел где-то, что для добавочных платформ также формируется файл boards.txt, только не в папке "Arduino", а где-то в другом месте, и там точно так же прописываются все настройки, в т.ч. фьюзы. Если это так, то непонятно, почему это не срабатывает.
потому, что правильные фьюзы устанавливаются при заливке бутлоадера
Из Ардуино ИДЕ можно и фьюзы перешить в соответствии с этими настройками - только вы же этого не делали, верно? - а просто выбора пункта из меню недостаточно.
Я сознательно не пишу, как перешить фьюзы, чтобы вы не дернулись сразу это делать. Дело в том, что если вы перешьете камень, работающий под 1 МГц - на 16 МГц и не добавите в схему внешний кварц - вы больше ничего с МК сделать уже не сможете и опять начнутся жалобы в конфе. что "ничего не работает". Работа с фьюзами - довольно опасная вещь, сначала изучите тему.
Не делал потому что хотел точно выяснить, обязательно ли делать лишнюю процедуру - запись загрузчика, или фьюзы и так должны прошиться.

А камень испортить - не сильно пугает. Для того и перешел на чипы, чтобы ущерб минимизировать, всё устройство то - с кулачок:
По avrdude то фьюзы прошиваются без проблем:
Вроде его можно просто в самом скетче прописывать.
Если это AVR Atmega328 -то нельзя, у АВР-ок только через перешивку фьюзов.
Вот, например, у СТМ8 - там тактирование можно менять на ходу, прямо из программы.
А что же тогда делает команда CLKPR?
Молодец, cofessor.) Только это не команда - это регистр. С помощью которого можно как понижать, так и повышать частоту контроллера. Не зависимо от установленного CKDIV8.
Молодец, cofessor.) Только это не команда - это регистр. С помощью которого можно как понижать, так и повышать частоту контроллера. Не зависимо от установленного CKDIV8.
молодец-то то он может и да - только я очень бы советовал ему почитать, например, вот эту ветку:
https://www.avrfreaks.net/forum/atmega328p-clkpr-problem
если ОЧЕНЬ ЧЕТКО не понимать. что делаешь - вероятность окирпичить чип - 90%
А у ТС с пониманием туго - он даже не допер, почему унего скорость программы снижается при выборе разных конфигураций в Ардуино ИДЕ
Тем более, если ТС не понимает, не надо его вводить в заблуждение. Потому что реально с CLKPR проблем нет.
Тем более, если ТС не понимает, не надо его вводить в заблуждение. Потому что реально с CLKPR проблем нет.
я не путаюсь ввести его в заблуждение - я вместе с ним эту тему изучаю. И что-то пока кажется - нафик-нафик этот CLKPR - с фьюзами как-то надежнее
Там больше проблема в программаторе. Фьюзы - это железно.
В программаторе - что бы имел возможность понижать скорость программирования в случае понижения частоты тактирования при помощи CLKPR.