Платформа Arduino стала нынче практически мейнстримом.
В этой статье напишу о том, как собрать минимальную платформу на контроллере Amega 328P-PU, чтобы ее можно было программировать на платформе Arduino IDE.
Контроллер Atmega 328 от компании ATMEL является сердцем платформ Arduino UNO , Arduino Nano, Arduino Pro Mini и ряда других. Данные платы вместе с многочисленными «шилдами» и модулями удобны для создания прототипов, но довольно громоздки и избыточны для готовых устройств.
Конечное устройство можно собрать на макетной или печатной плате. Для этого приобретаем контроллеры Atmega. Я покупал наплощадке aliexpress.com.
Цена на момент покупки была $20 за 10 контроллеров, 10 панелек и 10 кварцевых резонаторов на 16МГц. (Сейчас цена стала немного дороже)
Ссылка на товар на сайте aliexpress.com
Буковка «P» в названии микросхемы означает низкое энергопотребление, а PU-корпус DIP28, который удобно паять обычным паяльником.
Контроллеры пришли, как их теперь готовить?
Yеобходимо установить загрузчик в наши контроллеры. Для этого используем плату Arduino Uno и купленный заранее очень дешевый программатор USBasp. Чтобы не мудрить с проводками, лучше сразу взять еще и такой переходник на 6-ти пиновый разъем ICSP.
Качаем и ставим драйвер программатора.
Описываем параметры микроконтроллера в файле c:Program Files (x86)Arduinohardwarearduinoboards.txt
Для себя я сделал две конфигурации — внутренний кварц 8МГц с загрузчиком optiboot и отключенной проверкой на напряжение питания (чтобы можно было запитать микросхему вольт так от трех)
atmega328_8_33.name=Atmega328 (3.3V, 8 MHz internal)
atmega328_8_33.upload.protocol=arduino
atmega328_8_33.upload.maximum_size=30720
#atmega328_8_33.upload.speed=19200
atmega328_8_33.upload.speed=57600atmega328_8_33.bootloader.low_fuses=0xC2
atmega328_8_33.bootloader.low_fuses=0xE2
atmega328_8_33.bootloader.high_fuses=0xDE
atmega328_8_33.bootloader.extended_fuses=0x07
atmega328_8_33.bootloader.path=optiboot
atmega328_8_33.bootloader.file=optiboot_atmega328.hex
atmega328_8_33.bootloader.unlock_bits=0x3F
atmega328_8_33.bootloader.lock_bits=0x0Fatmega328_8_33.build.mcu=atmega328p
atmega328_8_33.build.f_cpu=8000000L
atmega328_8_33.build.core=arduino
atmega328_8_33.build.variant=standard
и точная такая же с внешним кварцевым резонатором на 16МГц.
atmega328_16.name=Atmega328_16 (3.3V, 16 MHz external)
atmega328_16.upload.protocol=arduino
atmega328_16.upload.maximum_size=32256
atmega328_16.upload.speed=115200
atmega328_16.bootloader.low_fuses=0xff
atmega328_16.bootloader.high_fuses=0xde
atmega328_16.bootloader.extended_fuses=0x07
atmega328_16.bootloader.path=optiboot
atmega328_16.bootloader.file=optiboot_atmega328.hex
atmega328_16.bootloader.unlock_bits=0x3F
atmega328_16.bootloader.lock_bits=0x0F
atmega328_16.build.mcu=atmega328p
atmega328_16.build.f_cpu=16000000L
atmega328_16.build.core=arduino
atmega328_16.build.variant=standard
Аккуратно вынимаем из панельки Arduino контроллер и ставим туда наш.
Запускам стандартную ArduinoIDE, выбираем в меню «Сервис->Программатор->USBasp», плату Atmega328 (3.3V, 8 MHz internal) или Atmega328_16 (3.3V, 16 MHz external) и нажимаем «Записать загрузчик». После окончания процесса загрузки мы получаем контроллер, в который можно уже в дальнейшем заливать программы через стандартный USB Ардуины.
В принципе, если вам не требуется низковольтное питание, можно не править фал board.txt, а пошить контроллер как Arduino Uno.
Дальнейшая работа с контроллером такая — либо шить его вставляя на плату Arduino Uno через стандартный USB порт этой платы. Прошив контроллер на работу с внутренним кварцем, можно сразу использовать его практически без всякой обвязки. Например, мигать светодиодом на 13-м порту, как на этой картинке.
Если же нужно постоянно использовать контроллер в своей плате, не переставляя его — то нужно собрать такую схему
и прошивать его через конвертер USB-RS232.
Контроллер с внешним кварцем работает быстрее и гораздо стабильнее.
Где это уже работает?
Контроллер управления вентилятором в ванной комнате
Контроллер управления светодиодной люстрой
А как же мозг не вскипел все это реализовывать?
Ну конечно же был помощник
Полезные ссылки к данной статье:
- Конфигурация FUSE-бит для AVR контроллеров
- Калькулятор FUSE-бит для AVR
- Описание Atmega 328P-PU на сайте производителя
- Даташит Atmega 328
Форум РадиоКот • Просмотр темы — помоните заменить сигнатуры для прошивки
Сообщения без ответов | Активные темы
ПРЯМО СЕЙЧАС: |
Автор | Сообщение |
---|---|
|
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота Карма: 12 Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57 Рейтинг сообщения: 0 |
Если не получится, чтобы не шить из консоли вручную, качните вот эту оболочку для программатора: https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/ Programmer выбираете — STK500v1, Baud rate — 19200, MCU — ATmega168 (без P!), Flash — файлик с бутлоадером, EEPROM — пусто, Options — ничего не отмечено, Fuses lock bits: L — 0xFF, H — 0xDE, E — 0x04, Set fuses отмечаете галкой, Set lock НЕ ОТМЧАЕТЕ. После этого нажимаете кнопку Program!. Добавлено after 1 minute 3 seconds: Di123 писал(а): Вы немного не ту командную строку запустили, там подсказывает что нужно сделать. Перед avrdude во 2ой команде добавить .: Код: cd D:загрузкиPortableFLProg_7-3-1_Win64ideV6hardwaretoolsavr/bin .avrdude -CD:загрузкиPortableFLProg_7-3-1_Win64ideV6hardwaretoolsavr/etc/avrdude.conf -v -patmega168 -cstk500v1 -PCOM3 -b19200 -e -Uefuse:w:0x4:m -Uhfuse:w:0xde:m -Ulfuse:w:0xff:m -Uflash:w:a168_16MHz_ff_de_4.hex:a |
Вернуться наверх |
Профиль |
Реклама | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0 |
в командной строке не меняется путь а здесь так тоесть записалось ? Добавлено after 9 minutes 50 seconds: |
||
Вернуться наверх | |||
Реклама | |
|
|
parovoZZ |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Карма: 11 Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45 Рейтинг сообщения: 0 |
Ну он же пишет т.е. дважды проверьте чип! |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0 |
|||
Вернуться наверх | |||
Реклама | |
|
Как выбрать батарейки для IoT-устройств – обзор эксперта Как выбрать химические источники тока (ХИТ, батарейки) для устройств промышленного и бытового интернета вещей? В чем различие критериев выбора и ключевых параметров? Какие изделия популярных брендов FANSO и POWER FLASH удовлетворяют этим критериям? Подробнее>> |
parovoZZ |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Карма: 11 Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45 Рейтинг сообщения: 0 |
|
Вернуться наверх | |
Реклама | |
Реклама | |
|
Выгодные LED-драйверы MOSO для индустриальных приложений Компэл представляет выгодные светодиодные драйверы MOSO для промышленных решений с высоким классом защиты от внешних воздействующих факторов, хорошей устойчивостью к импульсным помехам и высокой надежностью. В ряде серий реализована возможность дистанционного контроля, кроме того, отдельные версии драйверов могут программироваться на работу в автономном режиме по заранее заданному сценарию. Рассмотрим подробнее их характеристики. Подробнее>> |
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота Карма: 12 Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57 Рейтинг сообщения: 0 |
Или вы меняете МК, или что-то с коннектом у вас. Раньше была такая надпись: Di123, Программатор видит то ATmega168, то 168P. Ну попробуйте в проге AvrDudess MCU выбрать тогда всё-таки ATmega168P (теперь всё-таки с буквой P), для этого МК. Добавлено after 1 minute 6 seconds: Сигнатуре 1E9406 соответствует AtMega168A. Или просто 168. Только на фото ТС на чипе маркировка ATmega168PA, где сигнатура должна быть 1E940B. |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0 |
parovoZZ, в ардудес нет такого типа микросхемы а вот замена микросхемы сделала движения
|
||
Вернуться наверх | |||
parovoZZ |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Карма: 11 Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45 Рейтинг сообщения: 0 |
parovoZZ, в ардудес нет такого типа микросхемы а вот замена микросхемы сделала движения Процедура верификации закончилась ошибкой. Я ж уже писал на родственном форуме, что необходимо делать. |
Вернуться наверх | |
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота Карма: 12 Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57 Рейтинг сообщения: 0 |
Di123, да не дрочите вы хексы! Сколько можно объяснять — дело НЕ В ХЕКСАХ. Дело в том, что вы пихаете один МК, а в настройках программы выставляете другой. В хексе тип мк нигде не записан. Хоть что туда прошивайте, только работать не будет. Проблема была именно в другом, сто раз написал же уже. 168 и 168PA — разные МК! Хотя хекс для них подойдет один! Но выбрать в настройках программатора нужно правильный тип мк. А вы вечно наоборот пытались. Но теперь-то наконец-таки прошилось. Но с вотчдогом… уже сто раз в других темах объясняли.. но видимо бесполезно. Добавлено after 1 minute 21 second: Процедура верификации закончилась ошибкой. Я ж уже писал на родственном форуме, что необходимо делать. Не надо ничего делать. Это нормально. Будьте внимательны. Это верификация extended fuse’а. Там пишется одно, а читается чуть другое, потому что часть битов не пишется. Это нормально. Что 0x04, что 0xFC — пофиг. Добавлено after 2 minutes 6 seconds: |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0 |
parovoZZ, я там походу замучил всех NStorm, хорошо с хексами понял (я думал что ни разные ибо на гитхабе там подкаждую микруху с буквой они были) Добавлено after 2 minutes 33 seconds: |
||
Вернуться наверх | |||
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота Карма: 12 Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57 Рейтинг сообщения: 0 |
Di123, за время этой дискуссии могли бы уже разобраться. У вас же явно пишет что шьете как atmega168, а по факту находится atmega168P. Но там проблема в том, что оно будет пытаться лок биты шить, а они не верифицируются как надо. Забейте. Зачем вам шить из IDE, если отдельно уже прошили? Это ничего не поменяет. Шейте из AVRDUdess тот хекс, что нужен и всё. IDE сделает всё тоже самое, не больше, ни меньше, если заставите её шить даже. |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0 |
да я разобрался что нето выбрал потомучто он мне даже размер памяти показывает стандартный хотя там на 1,5кб больше должно быть я имел ввиду как скеч залить теперь в него в ИДЕ нет упоминания о моём загрузчике Добавлено after 1 minute 40 seconds: Добавлено after 1 minute 15 seconds: |
||
Вернуться наверх | |||
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота Карма: 12 Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57 Рейтинг сообщения: 0 |
Как это нет? Должна была atmega168 (16 MHz) появиться. |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0 |
вы всё правильно говорите она никуда не делась Код: Arduino: 1.8.13 (Windows 10), Плата:»Arduino Pro or Pro Mini, ATmega168 (5V, 16 MHz)» Скетч использует 1152 байт (8%) памяти устройства. Всего доступно 14336 байт. Глобальные переменные используют 27 байт (2%) динамической памяти, оставляя 997 байт для локальных переменных. Максимум: 1024 байт. Произошла ошибка при загрузке скетча avrdude: Expected signature for ATmega168 is 1E 94 06 Double check chip, or use -F to override this check. там по памяти видно чт оона её воспринимает как со старым загрузчиком Добавлено after 56 seconds: |
||
Вернуться наверх | |||
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота Карма: 12 Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57 Рейтинг сообщения: 0 |
Di123, ну не то же выбираете! Сравните что написал я и что выбрали вы! Добавлено after 53 seconds: Добавлено after 4 minutes 5 seconds: Цитата: там по памяти видно чт оона её воспринимает как со старым загрузчиком Я вам уже в 3ей вашей теме говорю — загрузчик тут не причем. Количество (показываемой и расчетной) свободной памяти жестко задается в boards.txt и всё. Вы добавили туда свою секцию с правильным свободным размером флэша, но продолжаете упорно выбирать встроенную в IDE изначально плату, а не ваш вариант. |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0 |
я его тоже пробовал хотя мы там удалили биты и переименовали 168 Добавлено after 1 minute 14 seconds: Код: a168_16MHz.bootloader.tool=avrdude |
||
Вернуться наверх | |||
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота Карма: 12 Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57 Рейтинг сообщения: 0 |
Добавьте строку Код: a168_16MHz.upload.tool=avrdude a168_16MHz.build.mcu=atmega168 верните на 168P, раз у вас P сейчас. |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0 |
ещё больше оранжевого стало Код: Arduino: 1.8.13 (Windows 10), Плата:»atmega168 (16 MHz)» Warning: Board arduino:avr:a168_16MHz doesn’t define a ‘build.board’ preference. Auto-set to: AVR_A168_16MHZ avr-g++: error: strange device name ‘atmega16xd0’ after ‘-mmcu=’: bad character ‘xd0’ exit status 1 Ошибка компиляции для платы atmega168 (16 MHz). Этот отчёт будет иметь больше информации с Код: a168_16MHz.upload.tool=avrdude Добавлено after 51 second: |
||
Вернуться наверх | |||
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота Карма: 12 Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57 Рейтинг сообщения: 0 |
Какой еще нахрен приоритет?! Вы зачем вместо латинской P написали русскую букву «Р»? Исправьте. Нет кирриллической буквы «эр» в названии мк. |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0 |
затупил маленько поправил я пробовал залить хотя бы блинк Добавлено after 31 second: Код: Произошла ошибка при загрузке скетча |
||
Вернуться наверх | |||
Кто сейчас на форуме |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |
Тема: ARDUINO- проблема с версией
Прочитано 2296 раз
0 Пользователи и 1 Гость просматривают эту тему.
15 Фев 2016 в 17:05
Прочитано 2296 раз
Installer PRO
Москва
Сообщений: 1061
У меня появилась проблема – есть старая версия программы- Arduino 1.0.5-r2.
При компилировании скетча с применением библиотек OneWire и DallaceTemperature появляется сообщение, что недостаточно памяти для обработки программы.
Я скачал и установил новую версию с сайта ссылка — Arduino 1.6.7
Но в ней не увидел своей платы. В сети нашел описание, как изменить файл boards.txt. Изменил. Плату как бы видно, но при загрузке появляется сообщение — ошибка при загрузке — пропущен параметр конфигурации upload.tool
Вопрос к знатокам- как из старой версии ПО вынуть данные по примененной плате и закачать в новую версию, чтобы все работало?
15 Фев 2016 в 21:28
Ответ #1
zanuda
Россия, Санкт-Петербург
Сообщений: 118
А какая доска используется? И почему думаете что в новой версии вам памяти хватит?
16 Фев 2016 в 01:05
Ответ #2
Installer PRO
Москва
Сообщений: 1061
А какая доска используется? И почему думаете что в новой версии вам памяти хватит?
Arduino Uno 3.0. На плате стоит ATMEGA8A-PU Что не так?
-
#1
Arduino IDE для ESP8266
Новый метод установки на стандартную версию Arduino IDE 1.6.4, через Board Manager
1. Установить Arduino IDE 1.6.4 с официального сайта Arduino
2. Запустить IDE, далее Файл — Настройки — в поле «Additional Boards Manager URLs» вставить ссылку на стабильную версию [inline]http://arduino.esp8266.com/package_esp8266com_index.json[/inline], или для nightly build [inline]http://arduino.esp8266.com/staging/package_esp8266com_index.json[/inline], нажать OK
3. Инструменты — Плата — Boards Manager
4. В Boards Manager в поле фильтра введите esp8266 или вручную пролистайте список и кликните на ESP8266 by ESP8266 Community Forum
5. Кликните Install
6. Дождитесь окончания загрузки (около 130 Мегабайт)
7. Закройте Boards Manager и в меню Инструменты — Плата — Generic ESP8266
8. Установите частоту вашего модуля 80/160Mhz, размер флеш памяти и выберите порт
9. Profit!
Скачать с github (Windows, Linux, Mac OS X)
Скачать исходный код
Скачать x64 Alpha с appveyor build-сервера
Инструкция по сборке Arduino IDE из исходников на разных платформах
Альтернативный метод установки на 1.6.4, предложенный Adafruit
1. Установить Arduino IDE 1.6.4 с официального сайта Arduino
2. Запустить IDE, далее Файл — Настройки — в поле «Additional Boards Manager URLs» вставить [inline]https://adafruit.github.io/arduino-board-index/package_adafruit_index.json[/inline], нажать OK
3. Инструменты — Плата — Boards Manager
4. В Boards Manager в поле фильтра введите esp8266 или вручную пролистайте список и кликните на ESP8266 by ESP8266 Community Forum
5. В появившемся поле выберите версию 1.6.2 и кликните Install
6. Дождитесь окончания загрузки (около 130 Мегабайт)
7. Закройте Boards Manager и в меню Инструменты — Плата — Generic ESP8266
8. Установите частоту вашего модуля 80/160Mhz и выберите порт
9. Profit!
Внимание!!!! Актуальная ссылка для Менеджера плат на github!!
[inline]http://arduino.esp8266.com/stable/package_esp8266com_index.json[/inline]
Последнее редактирование модератором: 14 Май 2018
-
#2
День добрый, в скачанном c Вашего гитхаба Arduino 1.6.1 пытаюсь скомпилировать что-либо (WebServer) — ошибка (в Win8.1/64 не указана, какая). Пытаюсь залить бутлоадер — ошибка.
В первом случае — посмотрел, какой экзешник крешится, это xtensa-lx106-elf-g++.exe
Пытаюсь запустить его отдельно — наконец-то выяснилось, чего ему нужно: libiconv-2.dll Он есть по пути arduino-1.6.1hardwaretoolsavrlibexecgccavr4.8.1, но не подтягивается.
При попытке залить бутлоадер вываливается такая ошибка: «Ошибка при загрузке бутлоадера: пропущен ‘bootloader.tool’ параметр конфигурации»
И еще, в гитхабе не работает кнопка «Clone in Desktop» — это что-то не включено, либо пока github борется с DDOS-ом, они что-то там отключили?
-
#4
Да, проблема с dll-кой, на билд сервере она почему-то перестала перекладываться в каталог с arduino.exe.
К вечеру выложу исправленный билд, пока можете скопировать вручную.
-
#5
Да, проблема с dll-кой, на билд сервере она почему-то перестала перекладываться в каталог с arduino.exe.
К вечеру выложу исправленный билд, пока можете скопировать вручную.
Да, скомпилировалось, сервер запустился. С бутлоадером ошибка осталась.
Подскажите, в этом проекте можно будет использовать область флеши, выше 512кБ? (сейчас 16МБ впаяна).
-
#6
Да, скомпилировалось, сервер запустился. С бутлоадером ошибка осталась.
Подскажите, в этом проекте можно будет использовать область флеши, выше 512кБ? (сейчас 16МБ впаяна).
А что за бутлоадер вы хотите прошить? в esp бутлоадер находится в ROM, поэтому на функцию прошивки бутлоадера я не вообще не смотрел.
в принципе можно использовать и 16mb flash. добавлю поддержку в список тасков.
-
#7
А что за бутлоадер вы хотите прошить? в esp бутлоадер находится в ROM, поэтому на функцию прошивки бутлоадера я не вообще не смотрел.
В программаторах засветился esptool, предположил по аналогии с соседним Arduino IDE ESP8266, что он может отдельно загрузчик записать. (1.2, 1.3b). По большому счету не критично, гораздо нужней там была бы функция «стереть fullflash» (забить весь объем FF-ками) очень практично, особенно в периоды испытаний.
в принципе можно использовать и 16mb flash. добавлю поддержку в список тасков.
Отлично! Думаю вполне логичным смотрится вариант, предложенный pvvx (все програмное пространство ограничить стандартными 512кБ, а остаток — отдать под файловую систему, ту же обсуждаемую spifFS, или еще какую-либо). Хотя Вам видней, как правильней организовать работу с повышенным объемом, но поддержка нужна. На 15MB можно вполне себе рюшечный интерфейс соорудить, либо данные с датчиков месяц хранить…
upd. Скетч тестового Web-сервера. В консоль до начала отработки текущей программы сыпется мусор (наверное бутлоадер согласовывается). Получается не совсем корректная отработка. Как этот мусор можно отключить?
upd2. Если в хроме зажать F5, то сервер валится, оставляя за собой в консоли:
Код:
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
wdt reset
load 0x40100000, len 30000, room 16
tail 0
chksum 0x99
load 0x3ffe8000, len 2556, room 8
tail 4
chksum 0x5e
load 0x3ffe8a00, len 2340, room 4
tail 0
chksum 0x70
csum 0x70
r”0
Последнее редактирование: 28 Мар 2015
-
#8
он может отдельно загрузчик записать. (1.2, 1.3b)
Сейчас приложение собирается без загрузчика второй стадии, то есть по адресу 0x00000 идет само приложение. Вероятно, в будущем это изменится для поддержки функции заливки прошивки по воздуху, тогда понадобится запись загрузчика.
Отлично! Думаю вполне логичным смотрится вариант, предложенный pvvx (все програмное пространство ограничить стандартными 512кБ, а остаток — отдать под файловую систему, ту же обсуждаемую spifFS, или еще какую-либо). Хотя Вам видней, как правильней организовать работу с повышенным объемом, но поддержка нужна. На 15MB можно вполне себе рюшечный интерфейс соорудить, либо данные с датчиков месяц хранить…
Да, для начала нужно сделать поддержку spiffs и прицепить C-шный stdio к этой файловой системе (как это сделано в mbed, например).
upd. Скетч тестового Web-сервера. В консоль до начала отработки текущей программы сыпется мусор (наверное бутлоадер согласовывается). Получается не совсем корректная отработка. Как этот мусор можно отключить?
Вроде бы после перезагрузки бутлоадер всегда выдает лог загрузки на скорости 74800. А что именно некорректно отрабатывает из-за этого.
upd2. Если в хроме зажать F5, то сервер валится, оставляя за собой в консоли:
Принято, посмотрю.
-
#9
А что именно некорректно отрабатывает из-за этого.
Если пропадает питание и модуль висит на uart-е роутера:
В начальный момент загрузки большинство коммутаторов/роутеров с консольным входом делают таймаут в 1-2 сек, для возможности перехвата управления.
Если в консоль в этот момент пульнуть хоть что-нибудь — он остановится в ожидании дальнейших указаний.
Аналогично себя ведут многие устройства (спутниковые тюнера, планшеты, …), правда в некоторых сделано чуть лучше — они ожидают определенную последовательность.
-
#10
Если пропадает питание и модуль висит на uart-е роутера
посмотрите это
-
#11
Немного запутался с переносом веток, поэтому отпишусь здесь.
Очень инетерсный проект. то что касается переключения контекста — это просто восхитительно. Я хотел добиться решения задачи выполнения фоновых задач в Sming, и именно поэтому изначально долго присматривался к FreeRTOS. Но с нм не задалось (хотя, вполне вероятно зря, потихоньку продолжаю смотреть в ту сторону). У Вас же простое красивое и элегантное решение для главной проблемы — как заставить фоновые задачи работать корректно (и без привлечения многопоточной ОС). Я изучил код, но пока все равно, как мне кажется, еще не полностью понимаю эту ассемблерно-стековую магию, igrr, могли бы Вы рассказать поподробнее?
По возможностям здесь есть несколько плюсов и несколько минусов в сравнении с моими текущими наработками:
Плюсы
- Просто шикарное решение по переключению котекста и выполнению фоновых задач
- mDNS — раньше не задумывался о подобной возможности, маленький но очень приятный штрих к теме виртуальных веб серверов
Минусы/чего не хватает
- Файловая система
- Полноценный веб-сервер с Views и Templates (а вообще, если честно, мне кажется не совсем правильно делать всю обработку в веб сервере на String’ах, хотя бы просто по памяти)
- HTTP клиент
- FTP
- SPI
- Протестированная работа с различной периферией и готовые примеры
- AnalogWrite (но, в Sming сейчас тоже только софтверный)
- Обертки под системные API
Так что тут правда хорошо бы как-нибудь кооперировать наши усилия, но как? Мы зашли к решению схожих проблем с немного разных сторон, более того, изначально Sming рождался именно как идея перенести Arduino под ESP (и даже назывался NetWiring) но позже я пересмотрел концепцию, т.к. с одной стороны, понял что совместимость никогда не будет полной, а с другой, что ESP8266 намного мощнее любых Ардуино поэтому не надо пытаться загнать разработку в эти старые рамки. Поэтому например появилась полноценная файловая система а не эмулятор EEPROM (который планировался изначально), весьма мощные классы для веб сервера и т.п.
igrr, буду рад пообщаться по любым вопросам!
-
#12
Я хотел добиться решения задачи выполнения фоновых задач в Sming, и именно поэтому изначально долго присматривался к FreeRTOS. Но с нм не задалось (хотя, вполне вероятно зря, потихоньку продолжаю смотреть в ту сторону).
Я начал писать этот код до выхода версии sdk с FreeRTOS, поэтому это был единственный способ, который просматривался.
Общая идея такая. Есть функция loop_wrapper в core_esp8266_main.cpp, весь пользовательский код (т.е. setup и loop) запускается оттуда. Функция loop_task (в том же файле) — это обработчик таска, которому назначен приоритет 0. Функция loop_wrapper, а вместе с ней и пользовательский код, запускаются из этого обработчика таска. При запуске функции loop_wrapper мы смотрем, есть ли у нас сохраненный стек (т.е. было ли прервано выполнение функции loop_wrapper на предыдущем вызове таска). Если нет — сохраняем регистры, указатель на верхушку стека (SP) и указатель на инструкцию (PC) — это даст нам возможность «выпрыгнуть» из функции loop_wrapper, когда потребуется, после этого начинаем выполнять loop_wrapper. Если сохраненное состояние есть — восстанавливаем записанные SP, PC, и другие регистры, и продолжаем выполнение loop_wrapper из того места, где оно было приостановлено. Для переключения контекста есть две функции: esp_yield и esp_schedule. Первая сохраняет PC, SP, и другие регистры и «выпрыгивает» из loop_wrapper, тем самым возвращая управление системе, вторая — просто вызывает system_os_post для запуска таска при следующей возможности.
Ограничение такого подхода — можно сделать только один дополнительный контекст.
По возможностям здесь есть несколько плюсов и несколько минусов в сравнении с моими текущими наработками:
В целом согласен, я бы отнес к фичам своего проекта еще и библиотеку ESP8266WiFi, которая реализует знакомый многим API библиотеки WiFi Shield.
- Файловая система
- Полноценный веб-сервер с Views и Templates (а вообще, если честно, мне кажется не совсем правильно делать всю обработку в веб сервере на String’ах, хотя бы просто по памяти)
- HTTP клиент
- FTP
- SPI
- Протестированная работа с различной периферией и готовые примеры
- AnalogWrite (но, в Sming сейчас тоже только софтверный)
- Обертки под системные API
Да, это очень мощный функционал. Насколько я понимаю, всё это можно обернуть в библиотеки. При этом останется базовая совместимость с Arduino и совместимые API для работы с WiFi и TCP/IP, но также появится куча мощных функций. Внутри библиотек при этом можно делать все что угодно — использовать lwip напрямую, не использовать String и т.п.
Если мы сможем адаптировать ваши библиотеки (веб-сервер, http, ftp, spi, sleep modes и т.д.) для компиляции в составе Arduino, мне кажется, будет очень крутое решение.
-
#13
Мысли по поводу обновления прошивки по воздуху.
Рассматриваемый Иваном вариант
Wifi upload works as follows:
— esp modules send multicast UDP packets over wifi network.
— some tool running on the users PC receives these packets and builds a list of esp modules that are ready to receive the sketch
— the list of modules is added to the list of ports, allowing the user to select which esp module he would like to upload to
— when the user presses upload, some tool sends the sketch over TCP to the selected module
Отлично подходит для прошивки по WiFi, но не очень подходит для передачи файлов по WiFi (а когда будет реализована файловая система — этот вопрос точно возникнет). Может быть решать задачу в комплексе?
Если использовать программатор не esptool, а другую универсальную консольную утилиту, то вопрос может быть частично снят. (Выбираем в меню esptool — прошиваем через serial, выбираем другую — шьем по WiFi)
Однако я вижу еще и необходимость в утилите с интерфейсом, похожим на файловый менеджер для легкого выполнения операций на файловой системе. Это позволит быстро разрабатывать и отлаживать HTML,CSS и Javascript файлы.
Именно по этому пути я развиваю ESPlorer для NodeMCU (если помните, сначала была консольная luatool. И да, в ESPlorer по WiFi тоже планируется передача файлов). Сейчас люди используют и luatool и ESPlorer только для решения разных задач.
-
#15
Как насчёт использования FTP для заливки файлов? И не придётся писать собственные GUI тулы…
-
#16
Как насчёт использования FTP для заливки файлов? И не придётся писать собственные GUI тулы…
Вполне рабочий вариант. Желательно еще на всех модулях mDNS поднимать. Хотя с mDNS вроде в любом случае удобнее.
-
#17
igrr, получается что не нужно
the list of modules is added to the list of ports
а просто выбираем другой прошивальщик вместо esplool, который ищет доступные esp8266, выводит их где-то списком, юзер выбирает нужную и прошивка полетела по воздуху.
Как такая идея?
Если третий — это тот, который с http://arduinesp.com, то он сегодня оставил следующий комментарий (правда почему-то в багтрекере другого моего проекта, ну да ладно).
на его странице загрузки http://www.arduinesp.com/download/
Код:
Change list
0.20 – 29 March 2015 – Core replaced with esp8266.com/arduino created by Ivan Grokhotkov
-
#18
выводит их где-то списком, юзер выбирает нужную
Вообще не хотелось бы городить какие-то внешние окна выбора, когда есть уже встроенное в среду меню, для этого предназначенное.
Но возможно это разумный компромисс, пока device discovery в самой среде не будет отрефакторен для поддержки чего-то кроме Yun.
Только тогда писать этот gui нужно на чем-то кросс-платформенном, не требующем еще одного рантайма (Java, или С++wxWidgets).
-
#19
на чем-то кросс-платформенном
получается мне надо еще младшего брата ESPlorer-у запилить
-
#20
igrr, народ тут спрашивает когда можно будет GPIO0 руками не дергать — хотят точь в точь как на ардуине или UDK.
Я, честно говоря, вообще не понимаю, почему это сразу не реализовано. С этим какие-то подводные камни есть?
Arduino: 1.8.10 (Windows 7), Плата:»Generic ESP8266 Module, 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), dtr (aka nodemcu), 26 MHz, 40MHz, DOUT (compatible), 1MB (FS:64KB OTA:~470KB), 2, nonos-sdk 2.2.1+100 (190703), v2 Lower Memory, Disabled, None, Only Sketch, 115200″
Executable segment sizes:
IROM : 227612 — code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 26776 / 32768 — code in IRAM (ICACHE_RAM_ATTR, ISRs…)
DATA : 1252 ) — initialized variables (global, static) in RAM/HEAP
RODATA : 672 ) / 81920 — constants (global, static) in RAM/HEAP
BSS : 24880 ) — zeroed variables (global, static) in RAM/HEAP
Скетч использует 256312 байт (26%) памяти устройства. Всего доступно 958448 байт.
Глобальные переменные используют 26804 байт (32%) динамической памяти, оставляя 55116 байт для локальных переменных. Максимум: 81920 байт.
esptool.py v2.8
Serial port COM3
Connecting…….._____….._____….._____….._____….._____….._____…..____Traceback (most recent call last):
File «C:UsersadminAppDataLocalArduino15packagesesp8266hardwareesp82662.6.3/tools/upload.py», line 65, in <module>
esptool.main(cmdline)
File «C:/Users/admin/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/tools/esptoolesptool.py», line 2890, in main
esp.connect(args.before)
File «C:/Users/admin/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/tools/esptoolesptool.py», line 483, in connect
raise FatalError(‘Failed to connect to %s: %s’ % (self.CHIP_NAME, last_error))
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
_
выбранный последовательный порт _
не существует или плата не подключена к нему
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»
I am getting an error while Uploading the Bootloader to Atmega8A
I am selecting..
Board -> Arduino NG and Older
Processor -> Atmega8A
Programmer -> USBasp
and sketch code is ArduinoISP, After selecting port then I do «Burn Bootloader»
But getting an error of…
"efuse" memory type not defined for part "ATmega8"
Error while burning bootloader.
Please tell me what to do. Any help will be appreciated.
Thank you
asked Nov 25, 2015 at 12:39
Google is your friend!!!
Apparently this is a known regression bug not yet corrected. The possible solution is also suggested there by user rigelinorion and here is the quote:
Hello, I solved it this way...
Open for edit the file C:Program FilesArduinohardwarearduinoavrplatforms.txt
this is standard section uploader/programmers tools
#==============================================================================
tools.avrdude.cmd.path={runtime.ide.path}/hardware/tools/avr/bin/avrdude
tools.avrdude.config.path={runtime.ide.path}/hardware/tools/avr/etc/avrdude.conf
tools.avrdude.cmd.path.linux={runtime.ide.path}/hardware/tools/avrdude
tools.avrdude.config.path.linux={runtime.ide.path}/hardware/tools/avrdude.conf
tools.avrdude.upload.params.verbose=-v -v -v -v
tools.avrdude.upload.params.quiet=-q -q
tools.avrdude.upload.pattern="{cmd.path}" "-C{config.path}" {upload.verbose} -p{build.mcu} -c{upload.protocol} -P{serial.port} -b{upload.speed} -D "-Uflash:w:{build.path}/{build.project_name}.hex:i"
tools.avrdude.program.params.verbose=-v -v -v -v
tools.avrdude.program.params.quiet=-q -q
tools.avrdude.program.pattern="{cmd.path}" "-C{config.path}" {program.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{build.path}/{build.project_name}.hex:i"
tools.avrdude.erase.params.verbose=-v -v -v -v
tools.avrdude.erase.params.quiet=-q -q
tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Uefuse:w:{bootloader.extended_fuses}:m -Ulock:w:{bootloader.unlock_bits}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m
tools.avrdude.bootloader.params.verbose=-v -v -v -v
tools.avrdude.bootloader.params.quiet=-q -q
tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.ide.path}/hardware/arduino/avr/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m
#==============================================================================
create a new tool called, for example, avrdude1
simply copy section tools.avrdude and name it tools.avrdude1
the trick is that we remove switch "-Uefuse:w:{bootloader.extended_fuses}:m" from "tools.avrdude1.erase.pattern="
#=============================================================================
tools.avrdude1.cmd.path={runtime.ide.path}/hardware/tools/avr/bin/avrdude
tools.avrdude1.config.path={runtime.ide.path}/hardware/tools/avr/etc/avrdude.conf
tools.avrdude1.cmd.path.linux={runtime.ide.path}/hardware/tools/avrdude
tools.avrdude1.config.path.linux={runtime.ide.path}/hardware/tools/avrdude.conf
tools.avrdude1.upload.params.verbose=-v -v -v -v
tools.avrdude1.upload.params.quiet=-q -q
tools.avrdude1.upload.pattern="{cmd.path}" "-C{config.path}" {upload.verbose} -p{build.mcu} -c{upload.protocol} -P{serial.port} -b{upload.speed} -D "-Uflash:w:{build.path}/{build.project_name}.hex:i"
tools.avrdude1.program.params.verbose=-v -v -v -v
tools.avrdude1.program.params.quiet=-q -q
tools.avrdude1.program.pattern="{cmd.path}" "-C{config.path}" {program.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{build.path}/{build.project_name}.hex:i"
tools.avrdude1.erase.params.verbose=-v -v -v -v
tools.avrdude1.erase.params.quiet=-q -q
#this line was edited
tools.avrdude1.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m
tools.avrdude1.bootloader.params.verbose=-v -v -v -v
tools.avrdude1.bootloader.params.quiet=-q -q
tools.avrdude1.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.ide.path}/hardware/arduino/avr/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m
#==============================================================================
Here is an example of the use of the tool avrdude1 in boards.txt file
atmega8.name=ATmega8 OPTIBOOT
atmega8.upload.protocol=arduino
atmega8.upload.maximum_size=7168
atmega8.upload.speed=115200
atmega8.upload.tool=avrdude1
atmega8.bootloader.low_fuses=0xbf
atmega8.bootloader.high_fuses=0xCC
atmega8.bootloader.path=atmega8
atmega8.bootloader.file=optiboot/optiboot_atmega8.hex
atmega8.bootloader.unlock_bits=0x3F
atmega8.bootloader.lock_bits=0x0F
atmega8.bootloader.tool=avrdude1
atmega8.build.mcu=atmega8
atmega8.build.f_cpu=16000000L
atmega8.build.core=arduino
atmega8.build.variant=standard
answered Nov 25, 2015 at 13:10
brtiberiobrtiberio
9265 silver badges15 bronze badges
4
I used Programmer «AVRUPro+» for Uploading Program. I downloaded its Software «Progisp» Then I did some few steps….
1) After downloading it, Run the Progisp.exe file.
2) Then went to Command tab, and clicked “Program Fuse”, It just did my fuse set.
3)Then I just did the simple process of burning the bootloader to my Atmega Controller.
4)After this I was able to upload my program to my new Atmega Controller.
Thank you
answered Nov 27, 2015 at 12:10
I am getting an error while Uploading the Bootloader to Atmega8A
I am selecting..
Board -> Arduino NG and Older
Processor -> Atmega8A
Programmer -> USBasp
and sketch code is ArduinoISP, After selecting port then I do «Burn Bootloader»
But getting an error of…
"efuse" memory type not defined for part "ATmega8"
Error while burning bootloader.
Please tell me what to do. Any help will be appreciated.
Thank you
asked Nov 25, 2015 at 12:39
Google is your friend!!!
Apparently this is a known regression bug not yet corrected. The possible solution is also suggested there by user rigelinorion and here is the quote:
Hello, I solved it this way...
Open for edit the file C:Program FilesArduinohardwarearduinoavrplatforms.txt
this is standard section uploader/programmers tools
#==============================================================================
tools.avrdude.cmd.path={runtime.ide.path}/hardware/tools/avr/bin/avrdude
tools.avrdude.config.path={runtime.ide.path}/hardware/tools/avr/etc/avrdude.conf
tools.avrdude.cmd.path.linux={runtime.ide.path}/hardware/tools/avrdude
tools.avrdude.config.path.linux={runtime.ide.path}/hardware/tools/avrdude.conf
tools.avrdude.upload.params.verbose=-v -v -v -v
tools.avrdude.upload.params.quiet=-q -q
tools.avrdude.upload.pattern="{cmd.path}" "-C{config.path}" {upload.verbose} -p{build.mcu} -c{upload.protocol} -P{serial.port} -b{upload.speed} -D "-Uflash:w:{build.path}/{build.project_name}.hex:i"
tools.avrdude.program.params.verbose=-v -v -v -v
tools.avrdude.program.params.quiet=-q -q
tools.avrdude.program.pattern="{cmd.path}" "-C{config.path}" {program.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{build.path}/{build.project_name}.hex:i"
tools.avrdude.erase.params.verbose=-v -v -v -v
tools.avrdude.erase.params.quiet=-q -q
tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Uefuse:w:{bootloader.extended_fuses}:m -Ulock:w:{bootloader.unlock_bits}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m
tools.avrdude.bootloader.params.verbose=-v -v -v -v
tools.avrdude.bootloader.params.quiet=-q -q
tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.ide.path}/hardware/arduino/avr/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m
#==============================================================================
create a new tool called, for example, avrdude1
simply copy section tools.avrdude and name it tools.avrdude1
the trick is that we remove switch "-Uefuse:w:{bootloader.extended_fuses}:m" from "tools.avrdude1.erase.pattern="
#=============================================================================
tools.avrdude1.cmd.path={runtime.ide.path}/hardware/tools/avr/bin/avrdude
tools.avrdude1.config.path={runtime.ide.path}/hardware/tools/avr/etc/avrdude.conf
tools.avrdude1.cmd.path.linux={runtime.ide.path}/hardware/tools/avrdude
tools.avrdude1.config.path.linux={runtime.ide.path}/hardware/tools/avrdude.conf
tools.avrdude1.upload.params.verbose=-v -v -v -v
tools.avrdude1.upload.params.quiet=-q -q
tools.avrdude1.upload.pattern="{cmd.path}" "-C{config.path}" {upload.verbose} -p{build.mcu} -c{upload.protocol} -P{serial.port} -b{upload.speed} -D "-Uflash:w:{build.path}/{build.project_name}.hex:i"
tools.avrdude1.program.params.verbose=-v -v -v -v
tools.avrdude1.program.params.quiet=-q -q
tools.avrdude1.program.pattern="{cmd.path}" "-C{config.path}" {program.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{build.path}/{build.project_name}.hex:i"
tools.avrdude1.erase.params.verbose=-v -v -v -v
tools.avrdude1.erase.params.quiet=-q -q
#this line was edited
tools.avrdude1.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m
tools.avrdude1.bootloader.params.verbose=-v -v -v -v
tools.avrdude1.bootloader.params.quiet=-q -q
tools.avrdude1.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.ide.path}/hardware/arduino/avr/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m
#==============================================================================
Here is an example of the use of the tool avrdude1 in boards.txt file
atmega8.name=ATmega8 OPTIBOOT
atmega8.upload.protocol=arduino
atmega8.upload.maximum_size=7168
atmega8.upload.speed=115200
atmega8.upload.tool=avrdude1
atmega8.bootloader.low_fuses=0xbf
atmega8.bootloader.high_fuses=0xCC
atmega8.bootloader.path=atmega8
atmega8.bootloader.file=optiboot/optiboot_atmega8.hex
atmega8.bootloader.unlock_bits=0x3F
atmega8.bootloader.lock_bits=0x0F
atmega8.bootloader.tool=avrdude1
atmega8.build.mcu=atmega8
atmega8.build.f_cpu=16000000L
atmega8.build.core=arduino
atmega8.build.variant=standard
answered Nov 25, 2015 at 13:10
brtiberiobrtiberio
9265 silver badges15 bronze badges
4
I used Programmer «AVRUPro+» for Uploading Program. I downloaded its Software «Progisp» Then I did some few steps….
1) After downloading it, Run the Progisp.exe file.
2) Then went to Command tab, and clicked “Program Fuse”, It just did my fuse set.
3)Then I just did the simple process of burning the bootloader to my Atmega Controller.
4)After this I was able to upload my program to my new Atmega Controller.
Thank you
answered Nov 27, 2015 at 12:10
Ошибка: отсутствует параметр конфигурации
Offline
Зарегистрирован: 02.07.2015
Запускаю компиляцию, независимо от того какой скетч загружаю: собственный или из встроенной библиотеки примеров, и вылетает сообщение об отсутсвии параметра конфигурации. Что это за параметр и где его прописывать? Как не странно, но я этого нигде найти не сумел, будто этой проблемы ни у кого не было При этом, в файле board.txt дополнил текст как указано в инструкции на сайте для запуска програмной среды.
https://yadi.sk/i/C0sD1OCnhdFyT — скрин экрана
Ошибка при загрузке бутлоадера
Тема в разделе «Микроконтроллеры AVR», создана пользователем ZelGer, 13 авг 2015.
-
ZelGer
НердВсем здравствуйте, пытаюсь прошить ATMega8-16PU но при загрузке бутлоадера пишет: «Ошибка при загрузке бутлоадера: пропущен ‘bootloader.tool’ параметр конфигурации»
ZelGer,
13 авг 2015
#1 -
Airbus
Радиохулиган
МодераторКак и чем шьём?Так? http://zelectro.cc/arduino_programming?page=2
Airbus,
16 авг 2015
#2 -
Airbus
Радиохулиган
МодераторИ так http://tinyurl.com/ovjxh9a
Airbus,
19 авг 2015
#3
(Вы должны войти или зарегистрироваться, чтобы ответить.)
- Ваше имя или e-mail:
- У Вас уже есть учётная запись?
-
- Нет, зарегистрироваться сейчас.
- Да, мой пароль:
-
Забыли пароль?
-
Запомнить меня
- Вики
- Видео
- Форум
Платформа Arduino стала нынче практически мейнстримом.
В этой статье напишу о том, как собрать минимальную платформу на контроллере Amega 328P-PU, чтобы ее можно было программировать на платформе Arduino IDE.
Контроллер Atmega 328 от компании ATMEL является сердцем платформ Arduino UNO , Arduino Nano, Arduino Pro Mini и ряда других. Данные платы вместе с многочисленными «шилдами» и модулями удобны для создания прототипов, но довольно громоздки и избыточны для готовых устройств.
Конечное устройство можно собрать на макетной или печатной плате. Для этого приобретаем контроллеры Atmega. Я покупал наплощадке aliexpress.com.
Цена на момент покупки была $20 за 10 контроллеров, 10 панелек и 10 кварцевых резонаторов на 16МГц. (Сейчас цена стала немного дороже)
Ссылка на товар на сайте aliexpress.com
Буковка «P» в названии микросхемы означает низкое энергопотребление, а PU-корпус DIP28, который удобно паять обычным паяльником.
Контроллеры пришли, как их теперь готовить?
Yеобходимо установить загрузчик в наши контроллеры. Для этого используем плату Arduino Uno и купленный заранее очень дешевый программатор USBasp. Чтобы не мудрить с проводками, лучше сразу взять еще и такой переходник на 6-ти пиновый разъем ICSP.
Качаем и ставим драйвер программатора.
Описываем параметры микроконтроллера в файле c:Program Files (x86)Arduinohardwarearduinoboards.txt
Для себя я сделал две конфигурации — внутренний кварц 8МГц с загрузчиком optiboot и отключенной проверкой на напряжение питания (чтобы можно было запитать микросхему вольт так от трех)
atmega328_8_33.name=Atmega328 (3.3V, 8 MHz internal)
atmega328_8_33.upload.protocol=arduino
atmega328_8_33.upload.maximum_size=30720
#atmega328_8_33.upload.speed=19200
atmega328_8_33.upload.speed=57600atmega328_8_33.bootloader.low_fuses=0xC2
atmega328_8_33.bootloader.low_fuses=0xE2
atmega328_8_33.bootloader.high_fuses=0xDE
atmega328_8_33.bootloader.extended_fuses=0x07
atmega328_8_33.bootloader.path=optiboot
atmega328_8_33.bootloader.file=optiboot_atmega328.hex
atmega328_8_33.bootloader.unlock_bits=0x3F
atmega328_8_33.bootloader.lock_bits=0x0Fatmega328_8_33.build.mcu=atmega328p
atmega328_8_33.build.f_cpu=8000000L
atmega328_8_33.build.core=arduino
atmega328_8_33.build.variant=standard
и точная такая же с внешним кварцевым резонатором на 16МГц.
atmega328_16.name=Atmega328_16 (3.3V, 16 MHz external)
atmega328_16.upload.protocol=arduino
atmega328_16.upload.maximum_size=32256
atmega328_16.upload.speed=115200
atmega328_16.bootloader.low_fuses=0xff
atmega328_16.bootloader.high_fuses=0xde
atmega328_16.bootloader.extended_fuses=0x07
atmega328_16.bootloader.path=optiboot
atmega328_16.bootloader.file=optiboot_atmega328.hex
atmega328_16.bootloader.unlock_bits=0x3F
atmega328_16.bootloader.lock_bits=0x0F
atmega328_16.build.mcu=atmega328p
atmega328_16.build.f_cpu=16000000L
atmega328_16.build.core=arduino
atmega328_16.build.variant=standard
Аккуратно вынимаем из панельки Arduino контроллер и ставим туда наш.
Запускам стандартную ArduinoIDE, выбираем в меню «Сервис->Программатор->USBasp», плату Atmega328 (3.3V, 8 MHz internal) или Atmega328_16 (3.3V, 16 MHz external) и нажимаем «Записать загрузчик». После окончания процесса загрузки мы получаем контроллер, в который можно уже в дальнейшем заливать программы через стандартный USB Ардуины.
В принципе, если вам не требуется низковольтное питание, можно не править фал board.txt, а пошить контроллер как Arduino Uno.
Дальнейшая работа с контроллером такая — либо шить его вставляя на плату Arduino Uno через стандартный USB порт этой платы. Прошив контроллер на работу с внутренним кварцем, можно сразу использовать его практически без всякой обвязки. Например, мигать светодиодом на 13-м порту, как на этой картинке.
Если же нужно постоянно использовать контроллер в своей плате, не переставляя его — то нужно собрать такую схему
и прошивать его через конвертер USB-RS232.
Контроллер с внешним кварцем работает быстрее и гораздо стабильнее.
Где это уже работает?
Контроллер управления вентилятором в ванной комнате
Контроллер управления светодиодной люстрой
А как же мозг не вскипел все это реализовывать?
Ну конечно же был помощник
Полезные ссылки к данной статье:
- Конфигурация FUSE-бит для AVR контроллеров
- Калькулятор FUSE-бит для AVR
- Описание Atmega 328P-PU на сайте производителя
- Даташит Atmega 328
Форум РадиоКот • Просмотр темы — помоните заменить сигнатуры для прошивки
Сообщения без ответов | Активные темы
ПРЯМО СЕЙЧАС: |
Автор | Сообщение |
---|---|
|
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота
Карма: 12 Рейтинг сообщения: 0
|
Если не получится, чтобы не шить из консоли вручную, качните вот эту оболочку для программатора: https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/ Programmer выбираете — STK500v1, Baud rate — 19200, MCU — ATmega168 (без P!), Flash — файлик с бутлоадером, EEPROM — пусто, Options — ничего не отмечено, Fuses lock bits: L — 0xFF, H — 0xDE, E — 0x04, Set fuses отмечаете галкой, Set lock НЕ ОТМЧАЕТЕ. После этого нажимаете кнопку Program!. Добавлено after 1 minute 3 seconds: Di123 писал(а): Вы немного не ту командную строку запустили, там подсказывает что нужно сделать. Перед avrdude во 2ой команде добавить .: Код: cd D:загрузкиPortableFLProg_7-3-1_Win64ideV6hardwaretoolsavr/bin .avrdude -CD:загрузкиPortableFLProg_7-3-1_Win64ideV6hardwaretoolsavr/etc/avrdude.conf -v -patmega168 -cstk500v1 -PCOM3 -b19200 -e -Uefuse:w:0x4:m -Uhfuse:w:0xde:m -Ulfuse:w:0xff:m -Uflash:w:a168_16MHz_ff_de_4.hex:a |
Вернуться наверх |
Профиль
|
Реклама | |
|
|
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0
|
в командной строке не меняется путь а здесь так тоесть записалось ? Добавлено after 9 minutes 50 seconds: |
||
Вернуться наверх | |||
Реклама | |
|
|
parovoZZ |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Карма: 11 Рейтинг сообщения: 0
|
Ну он же пишет т.е. дважды проверьте чип! |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0
|
|||
Вернуться наверх | |||
Реклама | |
|
Вебинар «Мощные модульные системы питания MEAN WELL 3+N. Новинки и хиты» (22.06.2023)
Приглашаем 22 июня на вебинар, посвященный подходу компании MEAN WELL к созданию мощных управляемых систем низковольтного и высоковольтного питания и зарядных установок для промышленного, технологического, телекоммуникационного, медицинского, радиопередающего и другого оборудования, а также для систем альтернативной энергетики. Подробнее>> |
parovoZZ |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Карма: 11 Рейтинг сообщения: 0
|
|
Вернуться наверх | |
Реклама | |
|
|
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота
Карма: 12 Рейтинг сообщения: 0
|
Или вы меняете МК, или что-то с коннектом у вас. Раньше была такая надпись: Di123, Программатор видит то ATmega168, то 168P. Ну попробуйте в проге AvrDudess MCU выбрать тогда всё-таки ATmega168P (теперь всё-таки с буквой P), для этого МК. Добавлено after 1 minute 6 seconds: Сигнатуре 1E9406 соответствует AtMega168A. Или просто 168. Только на фото ТС на чипе маркировка ATmega168PA, где сигнатура должна быть 1E940B. |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0
|
parovoZZ, в ардудес нет такого типа микросхемы а вот замена микросхемы сделала движения
|
||
Вернуться наверх | |||
parovoZZ |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Карма: 11 Рейтинг сообщения: 0
|
parovoZZ, в ардудес нет такого типа микросхемы а вот замена микросхемы сделала движения Процедура верификации закончилась ошибкой. Я ж уже писал на родственном форуме, что необходимо делать. |
Вернуться наверх | |
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота
Карма: 12 Рейтинг сообщения: 0
|
Di123, да не дрочите вы хексы! Сколько можно объяснять — дело НЕ В ХЕКСАХ. Дело в том, что вы пихаете один МК, а в настройках программы выставляете другой. В хексе тип мк нигде не записан. Хоть что туда прошивайте, только работать не будет. Проблема была именно в другом, сто раз написал же уже. 168 и 168PA — разные МК! Хотя хекс для них подойдет один! Но выбрать в настройках программатора нужно правильный тип мк. А вы вечно наоборот пытались. Но теперь-то наконец-таки прошилось. Но с вотчдогом… уже сто раз в других темах объясняли.. но видимо бесполезно. Добавлено after 1 minute 21 second: Процедура верификации закончилась ошибкой. Я ж уже писал на родственном форуме, что необходимо делать. Не надо ничего делать. Это нормально. Будьте внимательны. Это верификация extended fuse’а. Там пишется одно, а читается чуть другое, потому что часть битов не пишется. Это нормально. Что 0x04, что 0xFC — пофиг. Добавлено after 2 minutes 6 seconds: |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0
|
parovoZZ, я там походу замучил всех NStorm, хорошо с хексами понял (я думал что ни разные ибо на гитхабе там подкаждую микруху с буквой они были) Добавлено after 2 minutes 33 seconds: |
||
Вернуться наверх | |||
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота
Карма: 12 Рейтинг сообщения: 0
|
Di123, за время этой дискуссии могли бы уже разобраться. У вас же явно пишет что шьете как atmega168, а по факту находится atmega168P. Но там проблема в том, что оно будет пытаться лок биты шить, а они не верифицируются как надо. Забейте. Зачем вам шить из IDE, если отдельно уже прошили? Это ничего не поменяет. Шейте из AVRDUdess тот хекс, что нужен и всё. IDE сделает всё тоже самое, не больше, ни меньше, если заставите её шить даже. |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0
|
да я разобрался что нето выбрал потомучто он мне даже размер памяти показывает стандартный хотя там на 1,5кб больше должно быть я имел ввиду как скеч залить теперь в него в ИДЕ нет упоминания о моём загрузчике Добавлено after 1 minute 40 seconds: Добавлено after 1 minute 15 seconds: |
||
Вернуться наверх | |||
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота
Карма: 12 Рейтинг сообщения: 0
|
Как это нет? Должна была atmega168 (16 MHz) появиться. |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0
|
вы всё правильно говорите она никуда не делась Код: Arduino: 1.8.13 (Windows 10), Плата:»Arduino Pro or Pro Mini, ATmega168 (5V, 16 MHz)» Скетч использует 1152 байт (8%) памяти устройства. Всего доступно 14336 байт. Глобальные переменные используют 27 байт (2%) динамической памяти, оставляя 997 байт для локальных переменных. Максимум: 1024 байт. Произошла ошибка при загрузке скетча avrdude: Expected signature for ATmega168 is 1E 94 06 Double check chip, or use -F to override this check. там по памяти видно чт оона её воспринимает как со старым загрузчиком Добавлено after 56 seconds: |
||
Вернуться наверх | |||
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота
Карма: 12 Рейтинг сообщения: 0
|
Di123, ну не то же выбираете! Сравните что написал я и что выбрали вы! Добавлено after 53 seconds: Добавлено after 4 minutes 5 seconds: Цитата: там по памяти видно чт оона её воспринимает как со старым загрузчиком Я вам уже в 3ей вашей теме говорю — загрузчик тут не причем. Количество (показываемой и расчетной) свободной памяти жестко задается в boards.txt и всё. Вы добавили туда свою секцию с правильным свободным размером флэша, но продолжаете упорно выбирать встроенную в IDE изначально плату, а не ваш вариант. |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0
|
я его тоже пробовал хотя мы там удалили биты и переименовали 168 Добавлено after 1 minute 14 seconds: Код: a168_16MHz.bootloader.tool=avrdude |
||
Вернуться наверх | |||
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота
Карма: 12 Рейтинг сообщения: 0
|
Добавьте строку Код: a168_16MHz.upload.tool=avrdude a168_16MHz.build.mcu=atmega168 верните на 168P, раз у вас P сейчас. |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0
|
ещё больше оранжевого стало Код: Arduino: 1.8.13 (Windows 10), Плата:»atmega168 (16 MHz)» Warning: Board arduino:avr:a168_16MHz doesn’t define a ‘build.board’ preference. Auto-set to: AVR_A168_16MHZ avr-g++: error: strange device name ‘atmega16xd0’ after ‘-mmcu=’: bad character ‘xd0’ exit status 1 Ошибка компиляции для платы atmega168 (16 MHz). Этот отчёт будет иметь больше информации с Код: a168_16MHz.upload.tool=avrdude Добавлено after 51 second: |
||
Вернуться наверх | |||
NStorm |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
Поставщик валерьянки для Кота
Карма: 12 Рейтинг сообщения: 0
|
Какой еще нахрен приоритет?! Вы зачем вместо латинской P написали русскую букву «Р»? Исправьте. Нет кирриллической буквы «эр» в названии мк. |
Вернуться наверх | |
Di123 |
Заголовок сообщения: Re: помоните заменить сигнатуры для прошивки
|
||
Зарегистрирован: Пт авг 05, 2016 04:47:49 Рейтинг сообщения: 0
|
затупил маленько поправил я пробовал залить хотя бы блинк Добавлено after 31 second: Код: Произошла ошибка при загрузке скетча |
||
Вернуться наверх | |||
Кто сейчас на форуме |
Сейчас этот форум просматривают: akl и гости: 6 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |