Использование Arduino для изучения встроенного программирования на C
Я изучаю компьютерные системы и планировал купить Arduino, чтобы изучить встроенное программирование на языке C. После исследования я обнаружил упоминание о том, что Arduino может быть не лучшим выбором для новичка, который хочет научиться программировать встроенные системы с использованием C.
Я не уверен, правда ли это, можно ли запрограммировать Arduino на C без использования C++ и других включенных библиотек классов? Я бы предпочел научиться программировать на довольно низком уровне и не полагаться на библиотеки, скрывающие детали базового оборудования. Можно ли использовать Arduino в качестве общей платформы разработки AVR/микроконтроллеров для изучения встроенного программирования на языке C?
@, 👍1
Обсуждение2 ответа
Arduino — отличное место для начала встраиваемого программирования на языке C. Вы можете использовать как C, так и CPP. В сети есть множество учебных пособий и книг. Кроме того, на GIT HUB доступно множество библиотек для взаимодействия со всеми типами оборудования, такими как беспроводные приемопередатчики RF24.
Если вы хотите перейти к более низкоуровневому программированию, вы можете это сделать. Например, вы можете установить все выводы порта B на выход:
// процедура настройки запускается один раз при нажатии кнопки сброса:
void setup() {
// инициализируем цифровые контакты как выход.
DDRB = 0xff;
}
[Не уверен, кто слушает, так как этот вопрос был задан 4-летней давности кем-то, у кого, похоже, больше нет здесь аккаунта, но... ]
... можно ли запрограммировать Arduino на C? без использования C++ и других включенных библиотек классов?
Вы абсолютно можете использовать C или C++, а также использовать библиотеки классов или писать свои собственные функции для одной или обеих вычислительных задач и управления внешним оборудованием.
Может ли Arduino можно использовать в качестве общей разработки AVR/микроконтроллера. платформу для изучения встроенного программирования на C?
Да, по причинам, указанным выше, и многим другим. Встроенные системы отличаются от других вычислительных систем наличием сроков, которые необходимо соблюдать. Это могут быть мягкие сроки (старайтесь свести видимые задержки к минимуму, чтобы не раздражать пользователя/оператора) или жесткие сроки (если вы их пропустите, что-то может потерпеть неудачу или кто-то может умереть). Они бывают разных масштабов: моим домашним термостатом может управлять Attiny «с одним штифтом, привязанным за спиной». :) Другие системы могут содержать множество крупномасштабных чипов или их сочетание, связанных между собой внутренней сетью. Промежуточным примером этого является контроллер автомобильного двигателя. Он управляет сигналами, развлекательной системой, тормозами с АБС, системой контроля тяги и многим другим, одновременно открывая и закрывая клапаны форсунок и зажигая свечи зажигания с точной синхронизацией, со скоростью до 125 раз в секунду. И это для вполне обычного семейного автомобиля с «дорожным» двигателем.
Atmega328p (MCU Uno) достаточно сложно спроектирован, чтобы выдерживать случайное неправильное использование, разгон или подачу напряжения ниже указанного в спецификации, имеет несколько способов обновления/замены своей программы, его легко собрать вручную. изготовленная на заказ плата микроконтроллера, и после всех этих злоупотреблений, достаточно дешева, чтобы ее можно было заменить, если вам удастся ее повредить.
Документация, как и онлайн-сообщества, подобные этому, легко доступна, чтобы помочь с вопросами новичков, необычными вопросами и эзотерическими применениями, о которых, возможно, пробовали или знают лишь немногие люди.
Итак, доктор: да, я бы назвал это идеальной платформой для всего, о чем вы спрашивали.
- устаревшее преобразование из строковой константы в 'char*'
- Как запрограммировать ардуино на чистом C/C++?
- Количество элементов в массиве char
- Регистры ввода-вывода SAM3X8E (Arduino Due)
- как быстро loop() работает в Arduino
- Arduino: как получить тип платы в коде
- Как вызвать функции C из скетча ардуино?
- Как преобразовать полезную нагрузку byte* в строку
Формат ee.se больше похож на вики, чем на форум. Цель состоит в том, чтобы разработать набор хороших, конкретных вопросов, на которые можно дать ответы, основанные на фактах или доказательствах. Поэтому обычный подход — дополнить вопрос дополнительной информацией в ответ на комментарии. К сожалению, ваш вопрос по-прежнему кажется расплывчатым, и, следовательно, ответы будут основываться на мнении, которое плохо подходит для ee.se. Вопросы вида: «Я хочу сделать XYZ, мой опыт…, я планирую использовать Arduino и ABC, я исследовал Интернет, нашел http... и http... однако я все еще нужна помощь с...» подходит лучше., @gbulmer
Поначалу у меня возникла небольшая проблема с названием, но под «Type-C» вы подразумеваете что-то, что может запускать код C для изучения встроенных систем? Если да, дайте мне знать, и я, возможно, смогу изменить вопрос на что-то более отвечающее., @PeterJ
Да, **Arduino можно запрограммировать на обычном C** - использование IDE и библиотек квази-C++ совершенно необязательно, можно рассматривать оборудование как плату разработки ATmega и использовать avr-gcc (или аналогичный) напрямую, используя либо загрузчик в стиле Arduino (optiboot или что-то еще), либо какой-либо другой метод (ISP и т. д.) для загрузки результатов в чип., @Chris Stratton
Поддерживаю комментарий Криса Страттона, отмечая также, что компилятор avr-gcc позволяет вам указать язык ввода., @JRobert