Использование Arduino для изучения встроенного программирования на C

c

Я изучаю компьютерные системы и планировал купить Arduino, чтобы изучить встроенное программирование на языке C. После исследования я обнаружил упоминание о том, что Arduino может быть не лучшим выбором для новичка, который хочет научиться программировать встроенные системы с использованием C.

Я не уверен, правда ли это, можно ли запрограммировать Arduino на C без использования C++ и других включенных библиотек классов? Я бы предпочел научиться программировать на довольно низком уровне и не полагаться на библиотеки, скрывающие детали базового оборудования. Можно ли использовать Arduino в качестве общей платформы разработки AVR/микроконтроллеров для изучения встроенного программирования на языке C?

, 👍1

Обсуждение

Формат 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


2 ответа


3

Arduino — отличное место для начала встраиваемого программирования на языке C. Вы можете использовать как C, так и CPP. В сети есть множество учебных пособий и книг. Кроме того, на GIT HUB доступно множество библиотек для взаимодействия со всеми типами оборудования, такими как беспроводные приемопередатчики RF24.

Если вы хотите перейти к более низкоуровневому программированию, вы можете это сделать. Например, вы можете установить все выводы порта B на выход:

// процедура настройки запускается один раз при нажатии кнопки сброса:
void setup() {                

  // инициализируем цифровые контакты как выход.
  DDRB = 0xff;
}
,

2

[Не уверен, кто слушает, так как этот вопрос был задан 4-летней давности кем-то, у кого, похоже, больше нет здесь аккаунта, но... ]

... можно ли запрограммировать Arduino на C? без использования C++ и других включенных библиотек классов?

Вы абсолютно можете использовать C или C++, а также использовать библиотеки классов или писать свои собственные функции для одной или обеих вычислительных задач и управления внешним оборудованием.

Может ли Arduino можно использовать в качестве общей разработки AVR/микроконтроллера. платформу для изучения встроенного программирования на C?

Да, по причинам, указанным выше, и многим другим. Встроенные системы отличаются от других вычислительных систем наличием сроков, которые необходимо соблюдать. Это могут быть мягкие сроки (старайтесь свести видимые задержки к минимуму, чтобы не раздражать пользователя/оператора) или жесткие сроки (если вы их пропустите, что-то может потерпеть неудачу или кто-то может умереть). Они бывают разных масштабов: моим домашним термостатом может управлять Attiny «с одним штифтом, привязанным за спиной». :) Другие системы могут содержать множество крупномасштабных чипов или их сочетание, связанных между собой внутренней сетью. Промежуточным примером этого является контроллер автомобильного двигателя. Он управляет сигналами, развлекательной системой, тормозами с АБС, системой контроля тяги и многим другим, одновременно открывая и закрывая клапаны форсунок и зажигая свечи зажигания с точной синхронизацией, со скоростью до 125 раз в секунду. И это для вполне обычного семейного автомобиля с «дорожным» двигателем.

Atmega328p (MCU Uno) достаточно сложно спроектирован, чтобы выдерживать случайное неправильное использование, разгон или подачу напряжения ниже указанного в спецификации, имеет несколько способов обновления/замены своей программы, его легко собрать вручную. изготовленная на заказ плата микроконтроллера, и после всех этих злоупотреблений, достаточно дешева, чтобы ее можно было заменить, если вам удастся ее повредить.

Документация, как и онлайн-сообщества, подобные этому, легко доступна, чтобы помочь с вопросами новичков, необычными вопросами и эзотерическими применениями, о которых, возможно, пробовали или знают лишь немногие люди.

Итак, доктор: да, я бы назвал это идеальной платформой для всего, о чем вы спрашивали.

,