Чем Arduino отличается от PIC и AVR для серьезных учеников [закрыто]

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

Я изучал электронику (как аналоговую, так и цифровую), компьютерную организацию и сейчас читаю книгу по компьютерной архитектуре.

Что может быть лучше, чтобы закрепить мое понимание, чем иметь под рукой настоящий микроконтроллер. У меня возник соблазн приобрести Arduino из-за ее популярности и предполагаемой простоты. Однако, точно так же, как программирование на чем-то вроде C # и не обязательно знать, что происходит за кулисами, я опасаюсь, что с Arduino я буду использовать его только как C #, не понимая, как работает архитектура, что я и надеюсь понять. учиться.

Итак, вкратце, ошибаюсь ли я в своих вышеприведенных оценках Arduino?, и как Arduino сравнивается с точки зрения понимания того, как работают встроенные системы, с другими микроконтроллерами из семейств PIC и AVR.

Спасибо

Ардуино это АВР. Он просто дает вам набор библиотечных функций, которые вы можете использовать, чтобы облегчить себе жизнь.
Должен ли я получить плату разработки AVR или Arduino?
Arduino всегда под рукой, несмотря ни на что. Его можно использовать в качестве программатора для необработанных чипов AVR, и это простой путь к обучению — вы можете начать с основ, используя их API, и постепенно уменьшать свою зависимость от него и программировать «голое железо», не беспокоясь о поддержке. схемотехника, аппаратные программисты и т. д.
Arduino — это система разработки программного обеспечения/прошивки, рассчитанная на широкую (не инженерную) аудиторию, поэтому, к сожалению, они используют нестандартную терминологию: sheildозначает сменную плату, sketchозначает программу прошивки. processingи wiringявляются именами некоторых из их библиотек. И fritzingпредставляет собой макетную схему, часто используемую в качестве плохой замены реальной схемы. Но помимо странных названий, это способный инструмент разработки. И поскольку это открытый исходный код, вы можете копаться в исходном коде и видеть, как все работает внутри.
@MarkU На самом деле, processingэто название украденной ими IDE и wiringимя украденного API.
Также обратите внимание на серию MSP от TI. У них существенно другая архитектура. Было бы интересно сравнить.

Ответы (3)

Если у вас не очень ограниченный бюджет (например, уровень экономии карманных денег), то я бы не стал слишком долго решать, что попробовать в первую очередь. Просто выберите один и ожидайте, что, начав, вы попробуете и другие.

ИМХО, вы не ошибетесь с Arduino в качестве первого выбора:

  • Именно из-за его популярности и предполагаемой простоты (по сравнению с PIC) вы найдете множество информации и поддержки в сети.
  • И со стандартной IDE вы можете в значительной степени рассчитывать на обнадеживающий первый опыт, поскольку вы действительно можете заставить его делать что- то (по сравнению с переходом прямо на чип AVR).

Так что маловероятно, что вы столкнетесь с первым препятствием и в результате разочаруетесь и расстроитесь.

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

Единственным недостатком начала работы с Arduino, о котором я могу думать, является необходимость страдать от случайных пренебрежительных замечаний и троллинга со стороны инженеров Real ™! Вроде как программисты признают, что их первый язык был БЕЙСИК ;-)

Если у вас есть Arduino Uno или аналогичная плата, вы можете полностью игнорировать тот факт, что вы можете использовать Arduino IDE для ее программирования, и вы можете написать весь свой собственный код в Atmel Studio и даже импортировать в нее основные библиотеки Arduino, если хотите. .

Преимущество Arduino в том, что вам не нужно изучать низкоуровневые вещи, например, как включать прерывания и устанавливать маски для регистров таймера и т. д. Это просто «работает».

Это помогает новичкам начать работу и быстро выполнять задачи.

Если вы хотите научиться правильно с самого начала, зайдите прямо в Atmel Studio с платой разработчика AVR (или используйте плату Arduino, просто игнорируйте IDE) и учитесь на примерах и читайте техническое описание для Atmel AVR ATMEGA328P.

Итак, можно ли использовать микросхему ATMEGA328P самостоятельно?
вы всегда используете Atmega328P как в Arduino, так и в других IDE. Просто Arduino целенаправленно абстрагировалась от аппаратного обеспечения и попыталась создать программный интерфейс более высокого уровня, что круто и позволяет им иметь много разных продуктов, использующих один и тот же код.
@KyranF, который является самой «сущностью» программирования, и более «опытные» инженеры должны признать это вместо того, чтобы разговаривать с Arduino-детками. OpenGL и DirectX — очень похожие парадигмы. Абстрагирование аппаратного обеспечения, чтобы позволить (вздох... даже начинающим) программистам использовать его. +1

Если вы хотите программировать микроконтроллеры, вам нужно выучить (если вы еще этого не знаете) «C» и, возможно, какой-нибудь язык ассемблера.

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

Если это контроль и более глубокое понимание, получите комплект разработчика микроконтроллера (либо от производителя, либо от digikey). Как правило, вы можете получить это за 30-50 долларов США или меньше.

Для изучения встроенного языка C ознакомьтесь со следующими книгами: Embedded C , Test Driven Development for Embedded Systems и встроенные системы .

Начните с попытки решить проблему. Я просмотрел книги, и мне стало скучно, и я не запомнил столько, сколько смог, пытаясь решить проблему. Удачи и получайте удовольствие!

Но ваш ответ каким-то образом противоречит тому, что дал KyranF, который сказал, что я могу использовать Arduino так же, как обычный ATMEGA328P, если я использую Atmel Studio вместо студии Arduino. Зачем тогда покупать плату разработчика AVR?
@medwatt, вы МОЖЕТЕ использовать плату Arduino, чтобы просто разработать обычный код C в Atmel Studio. Так что вы не можете проиграть, выбрав плату Arduino.