Как работает Arduino

 

Arduino базовая архитектура

Ядром платформы Arduino является микросхема-микроконтроллер известная как ATmega328.

ATmega328 на самом деле по всем параметрам является 8 битным компьютером: после включения, его процессор загружает байт из заданной ячейки памяти и интерпретирует это как команда. То что пойдет дальше зависит от значения этого байта. Только в отличие от известных нам компьютеров,  ATmega328 не запускает никакую операционную систему: использование ресурсов находится под полным контролем программиста. Мы не можем полагаться на операционую систему, которая может коряво распределить память, переполнить её или привести к другим нежелательным для четкой автоматической системы последствиям. Кроме того, процессор может работать только с одной задачей одновременно (вы наверняка знаете, что так работают все процессоры, однако операционная система распределяет время работы различных задач таким образом, что складывается впечатление, что несколько програм на вашем компьютере работают одновременно).

У нового Arduino память совершенно пустая, следовательно, первый байт обрабатываемый процессором имеет нулевое значение: "Нет операции". Перед использованием Arduino вы должны загрузить в его память исполняемую программу, т.е. последовательность битов, первый из которых интерпретируется как команда и выполняется. Если команде нужны параметры для выполнения, они берутся из следующих байтов памяти. После выполнения команды, процессор загружает полученный байт в память и интерпретирует его как команду. Если выключить Arduino, память не стирается. Последовательность байтов, загруженных в него, хранится в энергонезависимой памяти, поэтому когда вы включите его снова, программа запускается опять с самого начала.

Частота  выполнения операций процессора задается тактовым генератором 16 МГц. Питание можно подавать через разъем USB. Для работы без USB-питания Arduino требуется отдельный источник питания напряжением от 7 до 12 V (это напряжение нормализуется до необходимых уровней регулятором расположенным на борту, так что вам просто нужен недорогой источник питания для этого). На борту, оба уровня напряжения 5 В и 3,3 В доступны пользователю, из которых можно выжать максимум 50 мА тока.

Память Arduino состоит из трех типов: флэш-память, где хранится программа 32 Кб; оперативная память (SRAM) 2 КБ, где процессор хранит и перезаписывает переменные, используемые в программе; и постоянная память (EEP-ROM) 1 КБ, где программист может хранить данные, которые должны остаться при перезапуске контроллера (как флэш-память, где хранится программа). По сравнению с современными компьютерами, которые оперируют как минимум несколькими гигабайтами, 35 кбайт кажется смешным, но на самом деле этого достаточно для большинства целей. Из-за отсутствия операционной системы, использование памяти переносится под полную вашу ответственность: если случится переполнение памяти или будет обращение к несуществующей ячейке памяти, ваша программа может повести себя непредсказуемо, и это довольно трудно отследить во время отладки. Вы всегда должны держать количество переменных под контролем в вашей программе. 

Процессор ATmega328 подключен к 14 дискретным портам ввода / вывода (пронумерованных от 0 до 13), 6 аналоговым входам и порту USB. Дискретный вход / выход это электрическое соединение, которое может иметь два логических состояния: 1 и 0, или TRUE и FALSE, или, как в синтаксисе Arduino, LOW и HIGH. Если сигнал в значении LOW, соответствующий вывод имеет нулевой потенциал 0 В - тоесть подключен к общему проводу. Если сигнал HIGH, то уровень напряжения между данным выводом и землей 5 В.

Контакты 0 и 1 используются для последовательного приема и передачи данных: через них плата Arduino может общаться с присоединенными к ней модулями (шилдами), используя последовательный протокол. Последовательные протоколы это коммуникационные протоколы, в которых каждый бит передается / принимается по очереди один за другим. Контакты 2 и 3 могут быть также использованы в качестве прерываний. Прерывание это электрический сигнал на дискретном входе, который прерывает текущую программу процессора при наступлении заданного логического состояния. Прерывания также существуют и у процессоров обычных компьютеров. После наступления прерывания, процессор сохраняет свое состояние в памяти и откладывает выполнение программы, перескакивает на выполнение обработчика прерывания: короткий кусок программного кода, необходимый для обслуживания прерывания. После завершения, процессор возобновляет статус, который он имел перед приходом прерывания, и возобновляет выполнение программы.

Контакты 3, 5, 6, 9, 10 и 11 могут использоваться как выходы ШИМ (широтно-импульсной модуляции PWM) и имеют некоторые аналоговые настройки. Соответственно, их ячейки памяти содержат значения между 0 и 255.


Рис.1 Arduino UNO, как он выглядит сверху и снизу. Обратите внимание на карту Италии на задней стороне.


Контакт 13 также подключен к светодиоду на борту. Когда сигнал LOW, светодиод выключен, а если сигнал HIGH светодиод светится.

Кроме стандартного использования в качестве дискретных входов / выходов, контакты 10, 11, 12 и 13 обеспечивают возможность коммуникации с внешними периферийными устройствами.

Аналоговые входы помечены A0 ... A5: каждый из них имеет цифровое разрешение 10 бит,

то есть они преобразовывают любое напряжение от 0 до 5 В в число между 0 и 1023, которое может быть доступно в памяти.

Все платформы смонтированы на плате, размером 60,6 мм × 53,4 мм и весом не больше 25 г (рис. 1).

На платах также имеются разъемы USB A / B, с помощью которых вы можете подключить их к компьютеру для коммуникации. Подключение USB-также обеспечивает питание для Arduino при подключении к компьютеру, так что для начала вам не нужен внешний источник питания.



Программа

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

Все эти инструменты входят в одну программу IDE (Integrated Development Environment), свободную

для скачивания на веб-сайте Arduino: выберите необходимую операционную систему вашего компьютера и скачайте программу. Она выглядит так же как и большинство обычных компьютерных программ. Она имеет несколько закладок на разные окна. Одно из таких окон используется для редактирования программы. Оно называется sketch на жаргоне Arduino. Скетчи пишутся в упрощенном C ++.


Рис.2 Программа Arduino появляется как окно, в котором можно ввести текст программы, которую попросту называют скетч.


Вы можете скомпилировать свой скетч в программе Arduino (рис. 2) нажав на кнопку Verify в верхнем левом углу окна: процесс компиляции транслирует C ++ программу в соответствующие машинные коды процессора ATmega328. После компиляции исполняемый скетч может быть загружен в память Arduino через USB кабель, при нажатии на кнопку Upload. Вам может понадобиться выбрать соответствующий COM-порт в меню, если есть более чем один доступный. Загрузка скетча всегда вызывает запуск компилятора, в первую очередь. Запуск скетча происходит сразу после окончания загрузки.

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

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Мікроконтролер ATTINY13A

Мікроконтролер ATTINY13A

Мініатюрний економічний AVR 8-бітний мікроконтролер, який можна програмувати як програматором, так і..

19.11грн.

Регулятор обертів двигуна 3А 6-28В

Регулятор обертів двигуна 3А 6-28В

Регулятор швидкості обертання двигуна постійного струму. Швидкість задається змінним резистором.Прин..

73.06грн.

Arduino Leonardo R3 + USB кабель

Arduino Leonardo R3 + USB кабель

Arduino LEONARDO R3 Мікросхема: ATmega32u4 Тактова частота: 16 MГцНапруга живлення: 7-12ВДискретні..

205.48грн.

SG90 9g міні серво мотор

SG90 9g міні серво мотор

Міні серво мотор для підключення до контролерівПластмасовий редуктор.Робоча температура - 30 ....

52.62грн.

Шестерня для зубчатого ременю на 20 зубців під вісь 8 мм

Шестерня для зубчатого ременю на 20 зубців під вісь 8 мм

Використовується для передачі та редукції обертаючого моменту від двигуна до вісі 8 ммКількість зубц..

25.08грн.

Теги Arduino

Нове

Мідний чулок для видалення припою 2мм 1,5м

Мідний чулок для видалення припою 2мм 1,5м

Мідна оплітка - застосовується для залужування доріжок друкованої плати, а також для видалення надли..

Модуль твердотільного реле 4-канальний

Модуль твердотільного реле 4-канальний

Модуль призначений для комутації 4-х навантажень зі змінною напругою живлення 75 ... 264 ВМаксимальн..

Оптопара EL817 SMD

Оптопара EL817 SMD

Оптопара з транзистором на виходіЗастосовується для гальванічної розв'язки дискретного сигналу, а та..

Стабілізатор напруги 5В 2А мікросхема L78S05CV

Стабілізатор напруги 5В 2А мікросхема L78S05CV

Мікросхема стабілізатор напруги L78S05CVЗастосовується для стабілізації пульсуючої напруги в блоках ..

Програматор AVR-контролерів USBASP

Програматор AVR-контролерів USBASP

Програматор для завантаження та відлагодження програм в мікроконтролери компанії ATMEL.Інтерфейс про..

Зсувний регістр 74HC595N

Зсувний регістр 74HC595N

Цю мікросхему використовують для керування світлодіодними гірляндами та символьними індикаторами.Вон..

Світлодіод ультраяскравий 3мм

Світлодіод ультраяскравий 3мм

Над-яскравий світлодіод діаметром 3 ммКорпус прозорий в світлодіодів різного кольору світіння. Тобто..

Вентилятор для Orange PI товщиною 10мм

Вентилятор для Orange PI товщиною 10мм

Вентилятор для охолодження процесора міні-комп'ютера Orange PI або Raspberry PIПрацює дуже тихоЖивле..

Термінальний роз'ємний конектор кутовий 4д

Термінальний роз'ємний конектор кутовий 4д

Роз'ємний 4-дротовий конектор для пайки на друковану платуДроти підводяться паралельно платі та з'єд..

Шестерня для зубчатого ременю на 20 зубців під вісь 5 мм

Шестерня для зубчатого ременю на 20 зубців під вісь 5 мм

Використовується для передачі та редукції обертаючого моменту від двигунаКількість зубців 20 шт.Діам..

Термінальний роз'ємний конектор кутовий 3д

Термінальний роз'ємний конектор кутовий 3д

Роз'ємний трьохдротовий конектор для пайки на друковану платуДроти підводяться паралельно платі та з..

Термінальний роз'ємний конектор кутовий 2д3.81mm

Термінальний роз'ємний конектор кутовий 2д3.81mm

Роз'ємний двохдротовий конектор для пайки на друковану платуДроти підводяться паралельно платі та з'..

Мікроконтролер ATTINY13A

Мікроконтролер ATTINY13A

Мініатюрний економічний AVR 8-бітний мікроконтролер, який можна програмувати як програматором, так і..

Логічний аналізатор 8 каналів

Логічний аналізатор 8 каналів

Надписи на корпусі можуть відрізнятись від наведених на картинці, але сутність приладу незмінна.Цифр..

Лінійний підшипник 8мм

Лінійний підшипник 8мм

Підшипник для лінійного ковзання робочого органу 3D-принтера або CNC за своїми осями.Одягається на ц..

Підшипник для зубчатого ременя GT2 без зубів

Підшипник для зубчатого ременя GT2 без зубів

Підшипник для натяжки зубчатого ременя GT2 6 мм на вісь 5 ммЗастосовується у 3D-принтерах та CNCШири..