Читаем Занимательная электроника полностью

Если вы с языком С до сих пор не знакомы, то учтите, что логики и стройности в нем немного, зато очень много лишнего и непонятного. Не унывайте — чтобы овладеть Arduino, изучать язык досконально не требуется, Processing и был придуман для тех, кто не хочет углубляться в программирование. Нам сейчас будет достаточно следующих элементарных сведений.

Любая программа в среде Arduino состоит из трех основных блоков: блока определений, функции установок и бесконечного цикла, который и составляет собственно программу. Эти блоки полностью аналогичны структуре нашей ассемблерной программы (см. главу 19, где с блока определений начиналась программа, функция установок у нас следовала за меткой Reset, а бесконечный цикл заключал текст, который выполняется вне прерываний (у нас — то, что между меткой Cykle: и оператором rjmp Cykle). Явное использование прерываний в программах Arduino — скорее исключение, что относится к числу недостатков этой платформы (и мы еще будем об этом говорить).

* * *

Подробности

Но было бы ошибкой считать, что прерывания в Arduino не используются вовсе. Например, в Arduino отсчет времени реализован совершенно так же, как мы делали в главе 19, только не с помощью Time1, как у нас, а через восьмиразрядный Timer0. Здесь тоже устанавливается прерывание таймера по переполнению и тоже с коэффициентом предделителя 64. При обычной тактовой частоте Arduino, равной 16 МГц, прерывания переполнения восьмиразрядного таймера происходят каждые (64/16)·256 = 1024 микросекунды, что позволяет реализовать такие функции, как millis () или delay (). Самый частый отсчет возможен при таком коэффициенте каждые 4 микросекунды, что обуславливает приведенное в справочнике по функциям Arduino максимальное разрешение функции отсчета микросекунд micros (). Любопытно, что задержка в микросекундах (т. е. функция delayMicroseconds ()) при этом реализована в виде простой программной задержки, как мы делали в первом примере главы 19. Функции коммуникационного порта, кстати, также основаны на прерываниях (см. далее).

* * *

Блок определений содержит обычные для почти любого языка программирования ссылки на включаемые библиотеки и определения переменных, например:

#include //подключаем библиотеку для работы со строчным ЖК-индикатором

int i; //переменная i — 16-разрядный счетчик

byte temp = 0; //рабочая переменная типа byte

float temperature; //переменная — действительное число для значения температуры

Определение наименований выводов, как констант:

#define dataPin 16 //dataPin — цифровой вывод 16[40] (т. е. вывод А2 платы, см. далее)

Выводы можно определять и как переменные целого типа:

int ledPin =3; // цифровой выход управления светодиодом

Строчные и заглавные буквы здесь различаются, например, string () и String () — это разные функции (см. справочник по языку на сайте [23]). В языке С любые определения можно делать в любом месте программы, выносить их в начало необязательно. Только стоит учесть, что, например, вызов переменной, определенной внутри некоей функции (локальная переменная), в другой функции вызовет сообщение об ошибке. Для того чтобы переменная действовала для всей программы, она должна быть определена именно в начале, до всех функций (глобальная переменная). Нюанс заключается в том, что глобальная переменная займет ресурсы контроллера на все время работы программы, тогда как локальная освободит их по окончании действия функции. В условиях ограниченных ресурсов МК это может оказаться существенным фактором, влияющим на скорость выполнения программы.

Наша процедура Reset (блок установок) здесь выглядит, как функция setup:

Перейти на страницу:

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

Чарльз Платт

Радиоэлектроника / Технические науки
PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника
Электроника для начинающих
Электроника для начинающих

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

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки