МК без внешнего генератора, не работает, как быть?
- Войдите на сайт для отправки комментариев
Добрый вечер, всем на форуме, я новичок, столкнулся с проблемой там, где никак ее не ждал.
Проблема возникла откуда не ждали...
Давно был написан скечь и отлажен в плате уно, все работало.
Но как только МК вылез из уны и был поставлен на пчатную плату "устройства", скеч работать не захотел.
Тогдаа давно оказалось, что проблема в том, что функции типа millis() - плохо работают на встроенном в МК генераторе. Решением было вместо millis() использовать просто счетчик (++), и о чудо МК ожил, все заработало. Страшные слова про фьюзы и прочее остались только в кошмарных снах.
Но, после заказа новой печатной платы, проблема появилась снова, и вот уже на грани истерики....
Добавил в скеч печать в последовательный порт, в отладочной плате все работает в порт пишется отладочная информация, но отогнув ноги 9 и 10 (те что подключены к внешнему генератору) на МК, в порт ничего не приходит.
МК - атмега 328P-U
Информацию в порту смотрю встроенным "монитором порта"
Вопрос такой: как узнать работает ли внутренний генератор МК? Будет ли работать передача данных в последовательный порт на встроенном генераторе?
Просто отогнуть ноги от внешнего резонатора недостаточно, нужно обязательно перенастроить фьюзы на внутренний осциллятор. Переключение между внешним резонатором/внутренним осциллятором делается только через фьюзы с помощью программатора.
МК - атмега 328P-U Информацию в порту смотрю встроенным "монитором порта" Вопрос такой: как узнать работает ли внутренний генератор МК? Будет ли работать передача данных в последовательный порт на встроенном генераторе?
Внутренний осциллятор не может не работать, если МК исправен и были правильно прошиты фьюзы. Обычно точности внутреннего осциллятора достаточно для работы UART.
А добавить кварц никак? Там же вроде сам кварц и два конденсатора - или совсем места нет на плате?
А может тогда всё же фьюз прошить и ну её нахрен, эту проблему?
Это же совсем не сложно. Можно в IDE добавить "новую плату" и указать там правильный фьюз и правильную частоту (у внутреннего осциллятора частоты другие (не умеет он на 16МГц), так что при компиляции, позаботьтесь. что константа F_CPU была 8000000, а не 16000000 как на UNO).
А может тогда всё же фьюз прошить и ну её нахрен, эту проблему?
Дык это вообще обязательное условие для AVR - переключение источников тактирования только с помощью прошивки фьюзов программатором. Это в STM32, например, гибкая система тактирования: при подаче питания МК сначала работает от внутреннего осциллятора, потом происходит запуск внешнего резонатора. При успешном запуске кварца переходит на него. А при сбое кварца в процессе работы, МК автоматически переключается на внутренний осциллятор.
Это же совсем не сложно. Можно в IDE добавить "новую плату" и указать там правильный фьюз
так фьюзы не прошьются
Смутило то, что раньше МК сам без внешнего работал, а тут вдруг не работает, одно но, старый скетч вместе с ноутом канул в Лету... Тоесть в прошлый раз до фьющов дело не дошло, запомнил бы)
Спасибо всем за советы!
Это же совсем не сложно. Можно в IDE добавить "новую плату" и указать там правильный фьюз
так фьюзы не прошьются
Командой "записать загрузчик"? Ещё как прошьются.
Места на плате уже нет, можно чуть чуть по подробнее, как насильно установить частоту работы МК? Правда у меня виндовос 7 ОС, и кроме скачаная с сайта ардуино среды, нет более инструментов для работы с мк( вопрос в том куда и как написать все эти настройки?
Программатора нет?
А вторая ардуино есть?
Если нет ни того, ни другого, купите то-нибудь. Или программатор, или вторую Ардуину.
Простой программатор стоит недорого. Подойдёт, например, вот такой, только к нему ещё нужен вот такой переходник.
Если уже купили (или когда купите), скажите.
алё! гараж, ты ответы на свои вопросы читаешь?
Вторая ардуина есть, вот полдня пытался хоть что с фьбзами сделать, но увы бестолку. Только загрузчик перезаписал, нашел текстовик с описанием плат, там эти фьюзы есть, но калькуляторы все страшными кажутся, ничего не менял.
Вот нестрашные калькуляторы: раз, два. Там есть готовое шестнадцатеричное значение фьюзов для текстовика с настройками плат.
P.S. Если ничего не менял, значит после записи загрузчкиа прошьются фьюзы на внешний кварц. Обязательно нужно менять. Либо воспользоваться консольной утилитой Avrdude (или любой из многочисленных графических оболочек для неё, например SinaProg).
P.P.S А, загрузчик же наверно не будет работать с другой частотой МК? Тогда вручную через Avrdude.
То есть, в тот самый текстовик надо добавить описание платы, с нужными фьюзами? Тогда вопрос, если поставить внутренний генератор 1мгц, то отладочная плата уно с МК будет работать? Как туда потом залить скетч?
Вот Конструктор загрузчика, там можно настроить и скомпилить себе загрузчик на другую частоту. Тема на этом форуме - http://arduino.ru/forum/obshchii/konstruktor-bootloadera-dlya-arduino
А можно вообще загрузчик не использовать. Скетч загружать через программатор или другую ардуину (как и фьюзы).
Вот Конструктор загрузчика, там можно настроить и скомпилить себе загрузчик на другую частоту. Тема на этом форуме - http://arduino.ru/forum/obshchii/konstruktor-bootloadera-dlya-arduino
А можно вообще загрузчик не использовать. Скетч загружать через программатор или другую ардуину (как и фьюзы).
Спасибо, действительно калькуляторы не страшный, конструктор загрузчика с хорошим описанием, огромное спасибо! Попробую, отпишусь.
Доброе утро!
Закрываю тему.
Заключение:
Путь №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
Всем спасибо за помощь)!
Мда.. 10 месяцев безрезультатно убить на то, что делается максимум за полчаса -это нужно постараться :)
А получить первый в жизни МК со странной настройкой фьюзов? Написать для него код и убедиться, что всё работает. Сделать печатную плату, заказать ещё "голых" МК))) А потом оказаться здесь, тоже надо было постараться.
Главное, что проблема решена.
Дождался его через 3 месяца, но Atmel Studio работать с ним не захотела, даже драйвера и те не подошли.
В Atmel Studio есть возможность вызывать стороннюю программу для прошивки МК. Например ту же консольную avrdude, которая используется и в Arduino IDE. Таким образом, можно использовать любой программатор, который поддерживается avrdude. Настроить Atmel Studio - дело 5 минут.
http://radiokot.ru/forum/viewtopic.php?p=2891150#p2891150