МК без внешнего генератора, не работает, как быть?

Squb
Offline
Зарегистрирован: 12.09.2016

Добрый вечер, всем на форуме, я новичок, столкнулся с проблемой там, где никак ее не ждал.
Проблема возникла откуда не ждали...
Давно был написан скечь и отлажен в плате уно, все работало.
Но как только МК вылез из уны и был поставлен на пчатную плату "устройства", скеч работать не захотел.
Тогдаа давно оказалось, что проблема в том, что функции типа millis() - плохо работают на встроенном в МК генераторе. Решением было вместо millis() использовать просто счетчик (++), и о чудо МК ожил, все заработало. Страшные слова про фьюзы и прочее остались только в кошмарных снах.

Но, после заказа новой печатной платы, проблема появилась снова, и вот уже на грани истерики....

Добавил в скеч печать в последовательный порт, в отладочной плате все работает в порт пишется отладочная информация, но отогнув ноги 9 и 10 (те что подключены к внешнему генератору) на МК, в порт ничего не приходит.
МК - атмега 328P-U
Информацию в порту смотрю встроенным "монитором порта"

Вопрос такой: как узнать работает ли внутренний генератор МК? Будет ли работать передача данных в последовательный порт на встроенном генераторе?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Squb пишет:
Добавил в скеч печать в последовательный порт, в отладочной плате все работает в порт пишется отладочная информация, но отогнув ноги 9 и 10 (те что подключены к внешнему генератору) на МК, в порт ничего не приходит.

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

Squb пишет:

МК - атмега 328P-U Информацию в порту смотрю встроенным "монитором порта" Вопрос такой: как узнать работает ли внутренний генератор МК? Будет ли работать передача данных в последовательный порт на встроенном генераторе?

Внутренний осциллятор не может не работать, если МК исправен и были правильно прошиты фьюзы. Обычно точности внутреннего осциллятора достаточно для работы UART.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А добавить кварц никак? Там же вроде сам кварц и два конденсатора - или совсем места нет на плате?

А может тогда всё же фьюз прошить и ну её нахрен, эту проблему?

Это же совсем не сложно. Можно в IDE добавить "новую плату" и указать там правильный фьюз и правильную частоту (у внутреннего осциллятора частоты другие (не умеет он на 16МГц), так что при компиляции, позаботьтесь. что константа F_CPU была 8000000, а не 16000000 как на UNO).

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

ЕвгенийП пишет:

А может тогда всё же фьюз прошить и ну её нахрен, эту проблему?

Дык это вообще обязательное условие для AVR - переключение источников тактирования только с помощью прошивки фьюзов программатором. Это в STM32, например, гибкая система тактирования: при подаче питания МК сначала работает от внутреннего осциллятора, потом происходит запуск внешнего резонатора. При успешном запуске кварца переходит на него. А при сбое кварца в процессе работы, МК автоматически переключается на внутренний осциллятор.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

ЕвгенийП пишет:

Это же совсем не сложно. Можно в IDE добавить "новую плату" и указать там правильный фьюз

так фьюзы не прошьются

Squb
Offline
Зарегистрирован: 12.09.2016

Смутило то, что раньше МК сам без внешнего работал, а тут вдруг не работает, одно но, старый скетч вместе с ноутом канул в Лету... Тоесть в прошлый раз до фьющов дело не дошло, запомнил бы)
Спасибо всем за советы!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Клапауций 232 пишет:

ЕвгенийП пишет:

Это же совсем не сложно. Можно в IDE добавить "новую плату" и указать там правильный фьюз

так фьюзы не прошьются

Командой "записать загрузчик"? Ещё как прошьются.

Squb
Offline
Зарегистрирован: 12.09.2016

Места на плате уже нет, можно чуть чуть по подробнее, как насильно установить частоту работы МК? Правда у меня виндовос 7 ОС, и кроме скачаная с сайта ардуино среды, нет более инструментов для работы с мк( вопрос в том куда и как написать все эти настройки?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Программатора нет?

А вторая ардуино есть?

Если нет ни того, ни другого, купите то-нибудь. Или программатор, или вторую Ардуину.

Простой программатор стоит недорого. Подойдёт, например, вот такой, только к нему ещё нужен вот такой переходник.

Если уже купили (или когда купите), скажите.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Squb пишет:
Места на плате уже нет, можно чуть чуть по подробнее, как насильно установить частоту работы МК? Правда у меня виндовос 7 ОС, и кроме скачаная с сайта ардуино среды, нет более инструментов для работы с мк( вопрос в том куда и как написать все эти настройки?

алё! гараж, ты ответы на свои вопросы читаешь?

Squb
Offline
Зарегистрирован: 12.09.2016

Вторая ардуина есть, вот полдня пытался хоть что с фьбзами сделать, но увы бестолку. Только загрузчик перезаписал, нашел текстовик с описанием плат, там эти фьюзы есть, но калькуляторы все страшными кажутся, ничего не менял.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Squb пишет:
нашел текстовик с описанием плат, там эти фьюзы есть, но калькуляторы все страшными кажутся, ничего не менял.

Вот нестрашные калькуляторы: раз, два. Там есть готовое шестнадцатеричное значение фьюзов для текстовика с настройками плат.

P.S. Если ничего не менял, значит после записи загрузчкиа прошьются фьюзы на внешний кварц. Обязательно нужно менять. Либо воспользоваться консольной утилитой Avrdude (или любой из многочисленных графических оболочек для неё, например SinaProg).

P.P.S А, загрузчик же наверно не будет работать с другой частотой МК? Тогда вручную через  Avrdude.

Squb
Offline
Зарегистрирован: 12.09.2016

То есть, в тот самый текстовик надо добавить описание платы, с нужными фьюзами? Тогда вопрос, если поставить внутренний генератор 1мгц, то отладочная плата уно с МК будет работать? Как туда потом залить скетч?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Вот Конструктор загрузчика, там можно настроить и скомпилить себе загрузчик на другую частоту. Тема на этом форуме - http://arduino.ru/forum/obshchii/konstruktor-bootloadera-dlya-arduino

А можно вообще загрузчик не использовать. Скетч загружать через программатор или другую ардуину (как и фьюзы).

Squb
Offline
Зарегистрирован: 12.09.2016

Jeka_M пишет:

Вот Конструктор загрузчика, там можно настроить и скомпилить себе загрузчик на другую частоту. Тема на этом форуме - http://arduino.ru/forum/obshchii/konstruktor-bootloadera-dlya-arduino

А можно вообще загрузчик не использовать. Скетч загружать через программатор или другую ардуину (как и фьюзы).

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

Squb
Offline
Зарегистрирован: 12.09.2016

Доброе утро!

Закрываю тему. 

Заключение:

Путь №1

Попытки добавить плату имели переменный успех, на одном ПК "своя" плата появлялась в списке, на другом нет. Но нужного мне результата достигнуть так и не вышло. Руки наверное слишком кривые)

Результат = 0

Путь №2

Программатор и Atmel Studio. Заказал на али программатор AVRISP MKII.

https://ru.aliexpress.com/item/Free-Shipping-USB-programmer-AVRISP-mkII-mk2-clone-ATMEL-AVR-Fit-51-Series-ATmega-PWM-ATtiny/674530121.html?spm=2114.13010608.0.0.TJCd2z

Дождался его через 3 месяца, но Atmel Studio работать с ним не захотела, даже драйвера и те не подошли. 

Разобрал его, там так сидит Atmega8 и как у USBASP.

Попытка перепрошить этот "AVRISP MKII" в USBASP по COM порту программатором Громова в UniProf, привела к неправильной настройке "фьюзов" и кирпичу. Три месяца ожидания коту под хвост.

Результат <0

Путь №3

«Прошивка hex файлов при помощи другой Arduino и SinaProg»

http://arduino.ru/forum/programmirovanie/proshivka-hex-failov-pri-pomoshchi-arduino-i-sinaprog

Что-то типа пути №2, но ничего не надо было ни покупать, ни ждать. (если есть ещё одна Arduino)

Результат такой, в Arduino IDE компилируется прошивка через меню «Скетч/Экспорт бинарного файла».

И по указанной в ссылке выше инструкции программируются фьюз биты (мои под внутренний генератор), а потом и заливается сама прошивка.

Результат >0

Всем спасибо за помощь)!

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Мда.. 10 месяцев безрезультатно убить на то, что делается максимум за полчаса -это нужно постараться :)

Squb
Offline
Зарегистрирован: 12.09.2016

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

Главное, что проблема решена.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Squb пишет:

Дождался его через 3 месяца, но Atmel Studio работать с ним не захотела, даже драйвера и те не подошли. 

В Atmel Studio есть возможность вызывать стороннюю программу для прошивки МК. Например ту же консольную avrdude, которая используется и в Arduino IDE. Таким образом, можно использовать любой программатор, который поддерживается avrdude. Настроить Atmel Studio - дело 5 минут.

http://radiokot.ru/forum/viewtopic.php?p=2891150#p2891150