Понизилась частота работы atmega328P

Westwood
Offline
Зарегистрирован: 17.03.2020

Добрый день! Прошу не кидать тапками. Вопрос такой:

На UNO написал и отладил код для четырехразрядного семисегментного индикатора - секундомер с разрешением до сотых. Переменная времени каждую сотую долю секунды увеличивается на 0.01 и все выводится через этот индикатор. Специально проверял точность отсчета - сравнивал с другим секундомером. Конечно, это на глаз, но в данном проекте этот результат вполне удовлетворяет потребности, и более того никаких расхождений замечено не было. 

Перенес проект на голый atmega328P. Код остался прежним, прошивал с помощью Arduino as ISP. Контроллер в стандартной минимальной обвязке (кварц и тд). Все работает - но произошло следующее: появилось отставание: приблизительно 5 секунд после первой минуты, ну а далее линейная зависимость. Вопрос: из-за чего это могло произойти? Не хочется просто брать и уменьшать время между прибавлением 0.01 секунды (на UNO было ровно 10 мс), чтобы подстроиться теперь под другую частоту. Спасибо!  

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Открывайте даташит и читайте раздел про фьюзы. Раз переносите на голый процессор, значит подтягивайте знания до нужного уровня.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

А фьюзы то в голом камне знают про кварц ?

Westwood
Offline
Зарегистрирован: 17.03.2020

Почитав немалое количество статей по поводу перехода к голым контроллерам, был уверен, что фьюзы у данного avr изначально выставлены на внешний кварц. Значит, в этом я накосячил..

Westwood
Offline
Зарегистрирован: 17.03.2020

Да, вот уже, судя по всему, понял проблему. Спасибо

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

По умолчанию внутренний RC на 8 МГц делённый на 8 из-за CLKDIV8

Westwood
Offline
Зарегистрирован: 17.03.2020

А если изначально через ISP был загружен в атмегу непосредственно загрузчик для Arduino Uno, разве в этом случае не должны были быть выставлены фьюзы для работы с внешним кварцом?

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

А чего гадать то ? Считайте программатором фьюзы и все станет ясно. Мы же не знаем кто, как и на какую частоту рассчитанный заливал загрузчик и менялись ли при этом фьюзы.

Westwood
Offline
Зарегистрирован: 17.03.2020

Нету программатора пока что, если вы про отдельный говорите. Проблема в том, что сейчас пока новая информация хорошенько в голове не осела, все перемешалось. Уважаемый Komandir, дайте пожалуйста комментарий, если не трудно. Правильно ли я описываю весь процесс?

1. Есть голый atmega328P, про его изначальную конфигурацию битов (фьюзов) нам ничего не известно.

2. Добавил к нему обвязку (кварц 16Мгц, конденсаторы). Использую Ардуино Нано как программатор. Последовательность следующая: Загружаю на нано скетч ArduinoISP, подключаем к нано атмегу; в настройках IDE выставляю плату "Arduino UNO" (расчет на то, что там тоже используется atmega328p и, как мне казалось, он по стандарту тактируется внешними 16МГц), соответствующий программатор и записываем загрузчик. Вот именно в этом действии, как я предполагал, будут прописаны фьюзы. А далее радуемся и загружаем скетчи. Но, как оказалось, этот способ, видимо, не работает именно так. 

3. В чем может быть проблема? Что стандартные контроллеры для ардуино тактируются тоже внутренним генератором на 8 МГц?  

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

А чем Arduino ISP плох ? Просто надо научиться с ним общаться напрямую через avrdude. То что прошивает Arduino IDE при записи загрузчика можно увидеть в логах. Мене не понятно почему отставание не в разы ! Может у вас кварц не на основной гармонике возбуждается.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

думаю ключевая фразу тут "Переменная времени каждую сотую долю секунды увеличивается на 0.01", кода то никто не видел

Westwood
Offline
Зарегистрирован: 17.03.2020

Так а причем тут это может быть? Если есть два контроллера: голый и в ардуино. Один и тот же код. И в ардуино нет отставания, а в этом контроллере есть, причем не в 2 раза, чтобы можно было с уверенностью сказать, что дело в частоте.. 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

ну например вот так "Конечно, это на глаз"

и где то на форуме всплывало фото кварца,  а внутри конденсатор.

я б начал с нормальных комплектующих

Westwood
Offline
Зарегистрирован: 17.03.2020

Ну это уже совсем экзотика) Комплектующие новые, а по поводу "на глаз" - то такой точности измерения вполне хватает, чтобы зафиксировать отставание на 7 секунд. Ладно, продолжу разбираться. Спасибо в любом случае за ответ