начало программирования платы Arduino на языке C/embedded c
Я хочу отойти от Arduino IDE и начать работать напрямую с avrdude. Может ли кто-нибудь подсказать мне ресурсы и советы по началу и продвижению вперед с использованием C/embedded C для доступа к большему функционалу. Буду признателен за помощь.
@Roshan, 👍1
1 ответ
Это не исчерпывающий ответ, но одним из шагов было бы понимание того, что Arduino IDE делает за кулисами, прежде чем передать ваш исходный код в avr-gcc
.
Из https://github.com/arduino/arduino/wiki/build-process#pre-processing
Среда Arduino выполняет несколько преобразований вашего эскиза. перед передачей его компилятору
avr-gcc
:
Все файлы
.ino
в папке эскиза (отображаются в IDE как вкладки без расширения) объединяются вместе, начиная с файл, который соответствует имени папки, за которым следуют остальные в алфавитном порядке, и расширение.cpp
добавляется к имя файла.Если еще нет,
#include <Arduino.h>
добавляется в скетч. Этот файл заголовка (находится в папке core для выбранная в данный момент доска) включает в себя все определения, необходимые для стандартное ядро Arduino.Прототипы генерируются для всех определений функций в файлах
.ino
, которые еще не имеют прототипов. В некоторых редких случаях Генерация прототипа может завершиться неудачей для некоторых функций. Чтобы обойти это при этом вы можете предоставить свои собственные прототипы для этих функций.
Директивы #line
добавляются для того, чтобы предупреждения или сообщения об ошибках отражали исходную компоновку эскиза.Файлы в эскизе с любым расширением не подвергаются предварительной обработке. кроме
.ino
. Кроме того, файлы.h
в эскизе не автоматически#include
d из основного файла эскиза. Далее, если вы хотите вызвать функции, определенные в файле.c
, из файла.cpp
(например, один, сгенерированный из вашего эскиза), вам нужно будет обернуть его объявления в блокеextern "C" {}
, который определен только внутри файлов C++.
Это полезно знать, если вы пытаетесь перенести эскизы Arduino на чистый avr-gcc
.
Вам также понадобятся файлы заголовков, определяющие все различные регистры, специфичные для ATMega328p, который является сердцем нескольких плат Arduino. Их можно загрузить как часть Atmel Studio 7, которая также включает avr-gcc
и различные другие необходимые утилиты и скрипты toolchain.
Вам также понадобится справочное руководство или таблица данных процессора. В настоящее время таблица данных доступна по адресу https://www.microchip.com/wwwproducts/en/ATmega328P на вкладке "Документы". Там будет изложено все, что вам когда-либо нужно знать о том, как использовать процессор, настраивать периферийные устройства, правила порядка команд, названия всех регистров и т. д.
- "avrdude: stk500_getsync(): not in sync: resp=0x00", или некто по имени Avr не позволяет мне загрузить мою программу
- avrdude ser_open() can't set com-state
- При использовании Arduino Uno в качестве ISP: "Yikes! Invalid device signature" - плохое соединение, неверную конфигурацию или неверную версию avrdude?
- Не удается снова загрузиться после смены платы
- Тайм-аут связи Arduino Mega с ошибкой программатора
- avrdude: ошибка проверки, первое несоответствие в байте 0x0000 : 0x00 != 0x16 с использованием USBasp
- Как загрузить шестнадцатеричный файл в arduino uno?
- Arduino UNO для получения подписи чипа ATmega328P-PU