Подготовка Arduino (в моем случае: UNO) как программатор: запись ArduinoISP: --- Тестовой прогр. код за ATmega8A (Internal 8 MHz): blink на 0 (PD0), скомпилирован с помощью Arduino IDE и MiniCore:
Код:
void setup() { pinMode(0, OUTPUT); // 0, PD0 }
void loop() { digitalWrite(0, HIGH); delay(100);
digitalWrite(0, LOW); delay(100); }
В папке появляются два файла: blink.ino.with_bootloader_atmega8_8000000L.hex и blink.ino_atmega8_8000000L.hex --- Запись ATmega8A с использованием Arduino как программатора и avrdudess_2.14_portable: Соответствующий МК (ATmega8A) обнаруживается и устанавливается для дальнейшего управления.
Читаем фюзы, (при необходимости меняем), загружаем файл записи, записываем: --- Схема подключения:
veso74, В целом все понятно. Но хотелось бы уточнить: 1) подтягивающий резистор R2 обязателен? 2) У Вас на картинке справа в выпадающем окне установлено "Программатор: ISP MKII" - это важно, или можно любое здесь выбирать? Я думал, что это же как раз и надо выбирать в AVRDUDESS в меню программатор (вместо arduino). Или нет? 3) Что выставлять в меню "тип"?, например при чтении. Без этого выставления (то есть на авто) - чтение не происходит, вернее оно происходит, но никуда не сохраняется. От того, что я здесь выбираю зависит какая будет прошивка на выходе. Вс еони отличаются между собой. Какую надо выбрать, чтобы в будущем можно было ее снова записать в целевой МК? Или там без разницы, и в любом виде код будет корректно исполняться?
Цитата:
Далее ее прошивка (при наличии бутлоадера) выполняется из IDE уже непосредственно (через соответствующий СОМ порт/USB-COM адаптер).
BOB51, То есть бутлодер это такое согласующее связующее звено между микроконтроллером и средой IDE. Без бутлодера программный код из IDE не зашьется в микроконтроллер? Все верно?
Последний раз редактировалось Олегыч1 Чт ноя 30, 2023 13:27:34, всего редактировалось 1 раз.
Бутлоадер это загрузчик по интерфейсу RS232 (СОМ или USB-COM), который принят в качестве основного для ардуинок. Использует линии RxD, TxD и reset МК. Применяется для удобства перезагрузки из IDE без аппаратного специализированного программатора. В то же время IDE поддерживает и непосредственную загрузку по ISP аналогичную стандартной перепрошивке АВРок (это как раз наш ардуиноISP). Большой плюсик veso74 за сообщения о софтинке (avrdudess). Добавлю только что с тем же железом (arduinoISP на основе ардуино нано) и тех же настроек (программатор - "arduino" , скорость - 19200) работает и софт-оболочка SinaProg 2.1.1.
BOB51, до конце немного не допонимаю... Получается бутлодер это что-то вроде драйвера, с помощью которого среда IDE понимает, что к ней подключили не просто какой-то одиночный МК, а целую плату (конкретную, специальную, в нашем случае ардуино нано), в которой уже для нашего удобства настроены и подписаны пины. Верно понимаю? Это своего рода маленький прогрммный код, который вписан в микроконтроллер помимо основной прошивки, и который считывается в самую первую очередь при подключении девайса к ПК. Все так?
Не совсем так... бутлоадер - специальная прожка в ПЗУ МК, которая использует возможности аппаратно - программного самопрограммирования через произвольно выбранный протокол обмена. Естественно софт-оболочка в ПК должна знать данный протокол. О том, что там на платке помимо самого МК протокол обмена софт-оболочки не ведает. Его задача только корректно переслать данные из ПК в МК (скормить бутлоадеру), а уже бутлоадер произведет перезапись программы МК в его ПЗУ.
... Или там без разницы, и в любом виде код будет корректно исполняться? .. это важно, или можно любое здесь выбирать?... Все верно? ...
Попробуйте прочитать день-два ..., раз-10 ... хотя бы основные функции и действия с используемыми программами (в частности: Arduino IDE, работа с ней и т.д). Затем вопросов будет немного или по конкретной проблеме.
Работа с ардуиноIDE предусматривает огромное число вариантов. Каждый вариант требует более конкретного обсуждения соответственно с задачами и целями проекта. Посему и предлагал ранее перейти к конкретике или в отдельной ветке , которая тому конкретному проекту посвящена будет или к моему "миксу" в котуинке. Предложение сохраняется. Пока посмотрю распиновку платформ на базе атмеги8/8А, дабы уточнить нет ли разночтений/платформозависимых вариантов раскладок в отличии от базовой NG.
без подключения конденсатора между RESET ардуино (которая в роли программатора ISP) и GND - не определяется. 10 мкФ - всегда стабильно определяется. А резистор - так и не понимаю за чем нужен.
Добавлено after 7 minutes 27 seconds:
Цитата:
Посему и предлагал ранее перейти к конкретике или в отдельной ветке , которая тому конкретному проекту посвящена будет или к моему "миксу" в котуинке. Предложение сохраняется.
BOB51, Спасибо У меня пока что нет конкретики. На данном этапе пытаюсь расставить все точки над "И", разобраться с функционалом IDE и ардуино. Ну и на конкретных примерах все проверить.
Конденсатор (или перерезание дорожки после записи в нанку программы, превращающей ее в ардуино ISPпрограмматор) требуется для блокировки запуска бутлоадера на платке из которой тот программатор сделан. У нас ведь один канал связи используется как для бутлоадера так и для программатора. Но теперь нанка должна выполнять уже роль программатора (промежуточное звено между IDE и целевой платкой), а не перезаписываться посылаемым из IDE кодом.
BOB51, С конденсатором разобрался. Непонятно, для чего резистор в схемеveso74. И еще очень интересный момент возникает. Допустим мне нужно записать прошивку в целевой микроконтроллер (Атмега8) с помощью программатора USBasp. Могу ли я через среду IDE такое осуществить? Дело в том, что там в меню "инструменты" - "программатор" есть выбор для USBasp. Но при прошивке возникат вот такая ошибка в логе: Спойлер: Version 7.2-arduino.1 Copyright the AVRDUDE authors; see https://github.com/avrdudes/avrdude/blob/main/AUTHORS
System wide configuration file is C:\Users\Oleg\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\3.0.0\avrdude.conf
Using Port : usb Using Programmer : usbasp AVR Part : ATmega8 Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : possible i/o RETRY pulse : SCK Serial program mode : yes Parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 PollIndex : 3 PollValue : 0x53 Memory Detail :
Programmer Type : usbasp Description : USBasp ISP and TPI programmer avrdude: auto set sck period (because given equals null) avrdude usbasp_spi_program_enable() error: program enable: target does not answer (0x01) avrdude main() error: initialization failed, rc=-1 - double check the connections and try again - use -B to set lower the bit clock frequency, e.g. -B 125kHz - use -F to override this check
avrdude done. Thank you.
Failed programming: uploading error: exit status 1 Что делаю не так? ---------- Или надо сначала записать загрузчик? Он запишется в целевой МК (атмега8), или в программатор USBasp?
Я с дополнительными программаторами (по тому выпадающему списку) не занимался - смысла нету. Однако есть одна особенность IDE - сначала к ПК подсоединяем платку (программатор или саму ардуинку для проекта), а уж затем запускаем IDE. Иначе может быть сбой в обнаружении платки(программатора). При работе через программатор ISP запись загрузчика требуется только для установки фузов или в случае, если в дальнейшем предусматривается его использование. Зависит от типа МК и задач. В аттини2313 или аттини13 и так места мало - вот в таких случаях и работаем без бутлоадера. В "более жирных" АВРках удобнее с бутлоадером - все по обстоятельствам и проекту.
Последний раз редактировалось BOB51 Чт ноя 30, 2023 15:48:54, всего редактировалось 1 раз.
При желании добавьте внешний pull-up резистор к RESET. У некоторых МК и типы МК они есть, у некоторых нет. Иногда по привычке, иногда по инерции, устанавливаю на всех 1k..4,7k..10k. А внутренние резисторы имеют относительно высокое сопротивление (30..80k), с недостатками этого для работа в грязной среде, пыли, высокие EMI и т.д. --- Некоторые версии Arduino IDE имеют несовместимость, в том числе между версиями ОС winXP, win7, win10. Так что попробуйте. Tоже была проблема с записью через USBasp чрез Arduino IDE. С USBasp мне проще использовать внешняя программа записи, а hex файл генерируется из Arduino IDE одним нажатием кнопки и для ATmega8, и для ATtiny13A ... и для напр. АТmega1609.
Последний раз редактировалось veso74 Чт ноя 30, 2023 15:55:23, всего редактировалось 2 раз(а).
Из самой ардуино IDE Через ардуиноISP программатор практически все на вкладке "инструменты" опции выставляются согласно применяемой платформы (для штатной платформы arduino nano достаточно выбрать "процессор atmea328p old bootloader") Устанавливаем порт ПК, к которому подключен программатор Устанавливаем программатор "arduino as ISP" и далее жмем "записать загрузчик" Можно также использовать железо других программаторов, указанных в соответствующем списке на вкладке IDE.
Проверяем настройку BOD фузов на "внешнем программаторе" и выставляем соответственно либо ниже минимума питающего напряжения, либо отключаем BOD (на усмотрение автора проекта). Если настройки платформы позволяют сделать коррекцию BOD фузов (DIY atmega8_48_88_168_328 версия 2022.3.12, GyverCore версия 2.0.4, MCUdude MiniCore версия 3.0.0) - то делаем коррекцию там и затем "записать загрузчик" через ардуиноISP программатор для корректной смены настроек фузов.
Уважаемые радиокоты, снова назрел небольшой вопросик. Для того, чтобы прошить внешний МК (Атмега 8 ) через среду IDE, подключаю программатор USBasp. За тем в среде IDE выбираю Атмега8, жму "записать загрузчик". После этого я могу заливать во внешний МК скетч через среду IDE с помощью стороннего программатора. Вопрос: опцией "монитор порта" я уже значит не могу пользоваться, верно? Или как-то можно все-таки? Для понимания, моя цель попробовать вывести текст на внешний дисплейчик (SSD1306 128х64), и зашить эту прошивку на внешний МК Атмега8. Когда я вливал скетч с текстом на плату Ардуино, то дисплей исправно все отображал. Но перед заливкой этого скетча я сначала заливал скетч - "сканер I2C", для того, чтобы через монитор порта увидеть адрес шины дисплея (не знаю зачем правда, но делал все по образцу). И потом уже в основной скетч (отображение текста на дисплее) прописывал этот адрес. А вот в случае с внешним МК (я же ведь через программатор пытаюсь влить) монитор порта программатора не определяется, потому что он не COM, а USB в диспетчере устройств. Подскажите пожалуйста, как правильно реализовать мою задачу?
Если выбран режим работы с бутлоадером то "записать загрузчик" запишет и фузы и бутлоадер - далее снимаем программатор,подключаем самоделку через СОМ, перезагружаем IDE и работаем с IDE через СОМ порт (переходник COM-TTL). Одновременно становится доступным и монитор порта и плоттер IDE. Это самый простой случай. В Вашем случае (если самоделка правильно выполнена и оснащена аппаратным СОМ-TTL переходником как положено самоделкам) подсоединяем к ПК программатор подсоединяем к программатору по iSP самоделку запускаем IDE загружаем фузы и бутлоадер (записать загрузчик) закрываем IDE отсоединяем программатор и самоделку подсоединяем самоделку к ПК через СОМ порт (или переходник USB-COM) запускаем IDE и работаем с самоделкой как с ардуинкой. Вариант жестче - ПЗУ мало, бутлоадера нету. подсоединить программатор к ПК, самоделку по ISP к программатору запустить IDE загрузить фузы (записать загрузчик) загрузить нужный для работы скотч в IDE и нажать "скетч -> загрузить через программатор" в данном случае бутлоадер (даже ежли он и был в МК) будет затерт!!. далее закрываем IDE, подсоединяем самоделку к СОМ порту (если было заложено в скотче его использование) и работаем. Есть третий вариант - загрузка *.hex файла через "стороннюю софт-оболочку" - но то уж совсем садомазохизьмо будет...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения