Подготовка 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 файла через "стороннюю софт-оболочку" - но то уж совсем садомазохизьмо будет...
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения