начало программирования платы 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в скетче не автоматически#included из основного файла скетча. Далее, если вы хотите вызвать функции, определенные в файле.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
Веб-сайт Atmel/Microchip может стать отправной точкой для разработки AVR., @Craig
Прочитайте техническое описание микросхемы. Там есть все, что вам нужно., @Majenko
Ознакомьтесь с Atmel Studio 7., @PhillyNJ