Запуск кода Arduino для Bluefruit LE на чистом ATMega328
Мне нужно подключить Bluefruit LE Breakout (на базе nRF8001) на чип ATMega328 (чтобы использовать его в качестве беспроводного UART), и это похоже на библиотеку предусмотрено для Arduino.
То, что у меня есть, это просто голая ATMega328 (обратите внимание на отсутствие "p"), которую я собираюсь программировать (с помощью avrispmkii напрямую). Поскольку MCU у меня уже собран, я не хочу менять, скажем, на Arduino Uno, чтобы иметь возможность использовать библиотеку. Скорее всего, я сначала «поиграюсь» с Bluefruit на Arduino, чтобы прочувствовать его, но код нужно запускать на «голом» ATMega328. Другая часть программы (которая подготавливает данные для отправки из atmega) тривиальна, поэтому я без проблем перепишу ее с C на Arduino. Перенос библиотеки Adafruit с C++ на C, вероятно, намного сложнее.
Таким образом, один из возможных подходов — скомпилировать мой код + код Bluefruit LE для Arduino, но загрузить в ATMega328.
И вот тут мне нужна помощь:
Как заставить Arduino (инструмент командной строки подходит) скомпилировать в MCU, который у меня есть? Думаю, в результате должен получиться какой-то hex-файл для прошивки (и eeprom?).
И, может быть полезно, какие флаги использовать с avrdude, если есть что-то конкретное для кода, сгенерированного Arduino. (Мне не нужны никакие загрузчики на чипе, только программа, и у меня нет UART-USB подключенного к атмеге).
Конечно, пожалуйста, укажите, есть ли более эффективные способы, которые я упустил, например, какой-нибудь совместимый с Arduino набор инструментов gcc для компиляции смеси C++/C в код avr (avr-g++?). Или, может быть, есть какая-то C-библиотека для компонента, с которым должен общаться atmega.
ОБНОВЛЕНИЕ: аналогичный вопрос: http:// www.avrfreaks.net/forum/using-arduino-ide-general-atmel-microcontroller-no-bootloader-no-cristal
@Roman Susi, 👍0
1 ответ
Лучший ответ:
UNO — это просто ATMega328(P). Таким образом, вы можете запустить тот же скомпилированный код для UNO на чистом ATMega328.
Вам не нужно беспокоиться о версии P или версии без P. В основном они одинаковы, за исключением некоторых незначительных различий, касающихся настроек низкого энергопотребления.
Вы можете просто выбрать нужную плату Arduino UNO. Выберите avrispmkii в качестве программатора. Затем вместо Загрузить
выберите Загрузить с помощью Programmer
(в меню Скетч
).
- Использование платы Arduino для программирования AVR
- AVRdude неправильно считывает значения байтов предохранителя
- Почему atmega168/328p начинает перезагружаться?
- Проблема с таймером 0
- Не удается снова загрузиться после смены платы
- Arduino UNO для получения подписи чипа ATmega328P-PU
- Поддерживают ли чипы ATMega 328/2560 JTAG-программатор и аппаратный отладчик?
- Что означает avrdude: Device signature = 0x000000? Неисправная проводка? Проблема с программным обеспечением? Неправильная инструкция?
Тогда все просто, спасибо. Я проверю это, как только выясню, как настроить F_CPU и предохранители в Arduino (я использую внутренние часы 8 МГц), и решу, что делать с выводом RST для модуля BLE., @Roman Susi
Просто загрузите мое [определение досок](http://algemeenbekend.nl/misc/atmega-1.5.zip). Просто извлеките и поместите в папку «оборудование» в папке скетчей Arduino (создайте, если ее еще нет). Плата 328 @ 8mhz должна быть добавлена в меню Tools->Boards после перезапуска IDE., @Gerben
Единственное место, где вам *придется* беспокоиться о сравнении 328 и 328P, - это конфигурация программатора - хотя файл обычно работает между чипами, программа откажется загружать его в другой файл, отличный от ожидаемого., @Chris Stratton
Просто для подтверждения: я сделал свое определение «платы» (MCU, предохранители, частота), и «Загрузка с помощью программатора» определенно работает: я смог использовать BLE «UART»! Насчет отказа загружаться, да, было одно предупреждение, когда у меня была промежуточная конфигурация (забыл поменять mcu с atmega328p на atmega328). Я не пробовал менять частоты (и загрузчик) на Uno, поэтому переключился на «голый» чип, как только понял uart., @Roman Susi
А, верно. В моих платах сверху отредактируйте boards.txt и измените
atmega328-8mhz.build.mcu=atmega328p
наatmega328-8mhz.build.mcu=atmega328
., @Gerben