BeagleBone также поддерживает язык Java. Аппаратное обеспечение может быть расширено с помощью добавления расширяющих плат «шилдов», оснащенных ЖК-дисплеем, последовательными портами, коммуникационными шинами и датчиками различного типа.
Рис. 9.6. Плата BeagleBone Black
Компьютер в ботинке: программирование микросхем AVR
Нейл Джершенфелд, создатель FabLab, в одной из своих книг рассказывает, как это просто добавить способность вычисления для любого предмета. Микроконтроллеры настолько дешевые, что мы могли бы установить по одному в каждом объекте, даже в обуви. Некоторые чипы обладают размером с рисовое зерно!
Макетные платформы, которые мы перечисляли, быстрые, но дорогие. Они отлично подходят для тестирования и создания прототипов, но для экономных проектов они подходят плохо. После того как вы немного познакомитесь с микросхемами, вы сможете легко и эффективно использовать их вместо макетных платформ.
Безусловно, самый простой способ – это использование «Ардуино». Чипы Atmel легко программировать, и вы можете сделать это даже на самой простой «Ардуино UNO» без какого-либо постороннего инструментария. Микросхемы AVR, производимые с 1996 года до настоящего времени, многочисленны: от небольших ATtiny13, ATtiny85, ATtiny45, ATtiny2313 (который также имеет последовательный порт) до самых мощных ATmega328, ATmega644, ATmega1284 и ATmega2560.
Таблица 9.1. Характеристики некоторых микрочипов AVR
Для программирования AVR-чипов вы должны использовать ISP-программатор, т. е. In-System Programming, это означает, что нет необходимостиснимать микропроцессор из схемы, в которой он установлен, для его программирования. Эта возможность экономит много времени в процессе производства. Чипы, которые поддерживают систему ISP, содержат схему, необходимую для выполнения записи и стирания операций прошивки. Таким образом, программатор может быть очень простым и экономичным. Мы можем перепрограммировать эти микроконтроллеры около десятков тысяч раз.
Самое дешевое решение для программирования AVR – это использование «Ардуино» в качестве программатора ISP. В описанных примерах с «Ардуино» приведен скетч, называемый ArduinoISP. Загрузив его в «Ардуино», вы можете превратить плату в программатор для AVR-чипов по практически нулевой цене!
В FabLab MIT был разработан проект с открытым исходным кодом под названием Fab-ISP для построения ISP-программатора. Инструкции по созданию FabISP можно найти на сайте MIT (http://bit.ly/makefabisp). FabISP использует ATtiny44 чип, оснащен USB-разъемом для подключения к компьютеру и 6 контактами, которые соединяют чип с программатором. Чтобы построить FabISP… нужен FabISP! Или другой программатор для AVR. К сожалению, вы не можете использовать ArduinoISP, потому что он не поддерживает некоторые функции для настройки ATtiny44. Если вы не знаете специалиста, который сможет помочь вам, вы всегда можете купить коммерческую версию проекта FabISP по цене чуть больше десяти евро. Наконец, вы можете подумать о покупке официального комплекта для разработки ATMEL – AVR Studio.
Рис. 9.7. Цоколевка микроконтроллеров ATtiny85, 45 и 25
Программатор подключается к микросхеме с помощью четырех контактов, которые называются MOSI, MISO, SCK (или UCK), RESET, и подается питание Vcc (положительное) и GND (земля). Эти выводы выступают в качестве последовательного порта и передачи и приема информации с чипом. Наименования разъемов расшифровываются как:
• MISO – вход ведущего, выход ведомого (Master In Slave Out);
• MOSI – выход ведущего, вход ведомого (Master Out Slave In);
• SCK – последовательный тактовый сигнал (Serial Clock);
• RESET – активирует программирование чипа; когда он подключен к напряжению питания, чип может выполнять программу.
Каждый микроконтроллер, в дополнение к внутренней памяти (RAM – Оперативная, EEPROM – ЭСППЗУ и Флэш), имеет специальные зарезервированные байты (также называемые регистры), которые служат для настройки его поведения. Эти регистры называются «fuse» и могут быть изменены по желанию с помощью программатора ISR Для записи fuse используются такие программы, как Avr-dude или WinAVR для платформы Windows. Fuse – это последовательности битов, которые могут быть вычислены в соответствии с инструкциями в паспорте или с помощью онлайн-калькулятора fusecalc (http://www.Engbedded.com/fusecalc/).
AVR имеют три байта для fuse. Основными параметрами являются:
• Clock Selection – каждому процессору необходим тактовый сигнал для работы. Тактовый сигнал, представляет собой прямоугольный сигнал, регулярную и точную, задающий ритм операций. Тактовый сигнал может поступать из внешнего источника (External Clock) или быть сформирован внутри чипа (Internal Clock). Внутренний тактовый сигнал не очень точен, и его частота может зависеть от напряжения питания и температуры. Если точность не имеет большого значения, выбрав внутренний источник, мы сохраняем два контакта, так нет необходимости подключения дополнительных компонентов к микросхеме. Внутренняя тактовая частота может быть установлена на 8 МГц, 4 МГц или 128 кГц. Заводские настройки обеспечивают тактовую частоту в 8 МГц. Если мы выберем внешний тактовый сигнал, необходимо подключить дополнительный компонент, такой как кварц или керамический резонатор, занимающие два контакта. С кристаллом кварца тактовый сигнал может достигать 20 МГц.
• Startup time – это промежуток времени, который микроконтроллер будет ждать перед выполнением прошивки. Необходимо подождать определенное количество миллисекунд до того, как сигнал синхронизации будет стабильным и точным. Лучше всего подождать как можно больше времени (14 СК + 65 мс = 14 тактовых импульсов и 65 миллисекунд).
• Clock Output – тактовый сигнал также может быть перенесен на выход чипа. Данное действие будет полезным, если вы хотите синхронизировать несколько чипов. Если активировать эту опцию (выключено по умолчанию), тактовый сигнал будет присутствовать на одном из выводов (D2 для ATtiny85).
• Clock Divide – путем активации этой опции тактовая частота делится на восемь. Обычно эта функция активна, так что чип работает с частотой 1 МГц.
• Reset Disable – эта функция должна быть всегда отключена. Если мы ее активируем, чип больше не будет перепрограммируемым, потому что он отключает сброс RESET и превращает его в дополнительный вывод.
• Brown-out Detect (BOD) – данная опция отключена по умолчанию, но является очень полезной, потому что она активирует защиту в том случае, когда уменьшается напряжение питания и чип не получает питание. В этой ситуации микроконтроллер начнет вести себя аномально, случайно читая и записывая флеш-память. Если Brown-out активен, когда напряжение падает ниже определенного значения, микросхема отключается до тех пор, пока напряжение не стабилизируется. Для чипа питающегося от 5 В, напряжение Brown-out может быть установлено на 4,3 В.