Программирование микроконтроллеров tinyAVR

December 1, 2014 by admin Комментировать »

Программирование контроллеров AVR включает в себя установку битов блокирования, fuse-битов, программирование Flash-памяти, а также программирование внутренней памяти EEPROM. Эти данные могут быть считаны с контроллера вместе с байтами идентификации устройства. Микросхемы семейства Tiny можно запрограммировать при помощи последовательного или параллельного способа. В этой книге (если не оговорено другое) мы применяли-последовательное программирование микроконтроллеров семейства Tiny. Здесь тоже есть два варианта: системное программирование (ISP) и последовательное программирование при высоком напряжении (HVSP). HVSP применим (как альтернатива параллельному программированию) только для восьмиконтактных микроконтроллеров (поскольку эти микросхемы имеют слишком мало контактов для параллельного программирования).

Системное программирование использует внутренний последовательный периферийный интерфейс (SPI) контроллеров AVR для загрузки кода в память Flash и EEPROM. При этом также программируются биты блокирования и fuse-биты. Для такого программирования требуются только контакты VCC, GND, RESET и три сигнальных линии. В некоторых случаях для ввода/вывода (или других целей) может потребоваться контакт RESET. Если этот контакт сконфигурирован как контакт для ввода/вывода (при помощи бита RSTDISBL), то программирование в режиме ISP невозможно и микросхему следует программировать при помощи параллельного программирования или последовательного программирования при высоком напряжении.

Для программирования контроллеров AVR есть еще один метод — система отладки debugWIRE (описана в следующем разделе). Последняя серия шестиконтактных микросхем компании Atmel (ATtiny4/5/9/10) не поддерживает описанных ранее вариантов программирования и имеет новый встроенный интерфейс программирования TPI.

Биты блокирования служат для защиты программного обеспечения пользователя (во избежание дублирования), а fuse-биты применяются для начальной настройки контроллера, которая не может (и не должна) выполняться программным обеспечением пользователя. На рис. 1.11 показаны сигналы для последовательного программирования ISP.

Рис. 1.11. Сигналы для последовательного программирования

Отладочная система debugWIRE

Отладочная система debugWIRE — это однопроводной интерфейс для аппаратной отладки и программирования памяти Flash и EEPROM. Этот интерфейс включается посредством программирования fuse-бита DWEN. После включения этого интерфейса обмен данными между микросхемой и эмулятором происходит через контакт RESET. Таким образом, при программировании через этот интерфейс внешний сброс не работает. Протокол программирования в данном случае аналогичен JTAG ICE mkll (популярный инструмент отладки компании Atmel). На рис. 1.12 показан отладочный интерфейс debugWIRE.

Рис. 1.12. Отладочный интерфейс debugWIRE

Составляющие проекта

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

Как же создается система или проект, который до сих пор никому не приходил в голову? Конечно, вы должны обдумать, что вам нужно. Иногда толчком может послужить другая разработка. Это абстрактный процесс, который можно проиллюстрировать примером. Предположим, что вы увидели использование светодиодов в какой-то системе: яркие и мигающие, они привлекли ваше внимание, и вы подумали, а что если я размещу эти веселенькие светодиоды на своей шапке и заставлю их мигать или менять интенсивность свечения? Самое главное — найти что-то оригинальное. На рис. 1.13 схематично изображен процесс проектирования и разработки.

После того как идея зародилась в вашей голове, вы можете начать развивать ее. Мы рекомендуем сразу же поискать по Интернету, чтобы убедиться в том, что она не пришла в голову кому-то еще. Не стоит повторно изобретать колесо. Если ваша идея уже реализована, то стоит подумать, как ее усовершенствовать. Если вы берете готовую реализацию и улучшаете ее, то вам следует поделиться своей работой с автором исходного проекта, чтобы получить признание своей работы и зафиксировать сделанный вами вклад. Таким путем можно улучшить уже существующую конструкцию. Сказанное применимо к проектам, которые доступны в Интернете на условиях какой-нибудь бесплатной лицензии. В других случаях вам может понадобиться уточнить юридические нюансы. В большинстве ситуаций нарушения закона не будет в том случае, когда вы используете оригинальную разработку (или ее адаптацию) исключительно в личных целях. Однако при коммерческом применении нужно будет обязательно связаться с автором разработки (во избежание возникновения проблем в будущем).

В каждом проекте есть две отдельных составляющих (рис. 1.13): аппаратные компоненты и программное обеспечение. Аппаратную часть можно реализовать разными способами, но проще всего на основе микроконтроллеров. Поскольку наша книга посвящена применению микроконтроллеров, то именно на этом мы и сосредоточимся. Помимо микроконтроллера, для работы любого устройства нужен источник питания. Понадобятся и другие (специфичные для конкретного проекта) аппаратные компоненты (несмотря на то, что в современных микроконтроллерах интегрировано большое количество функций). Например, несмотря на то, что микроконтроллер имеет выходные контакты для управления семисегментными индикаторами, он не способен обеспечить большой ток, который может понадобиться, поэтому вам потребуются внешние формирователи тока.

Рис. 1.13. Процесс проектирования и разработки

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

Рис. 1.14. Элементы современного проекта с использованием микроконтроллера

Программные компоненты — это прикладная программа, которая выполняется в микроконтроллере. Однако этим термином может также обозначаться и программа для обмена с микроконтроллером, работающая на персональном компьютере.

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

Помимо специфичных аппаратных компонентов и программного обеспечения для большинства проектов потребуются еще кое-какие стандартные блоки — источники питания и сигнала тактовой частоты (рис. 1.15). Источник питания и стабилизация питающего напряжения подробно описаны в одном из последующих разделов.

Для работы устройства очень важен источник сигнала тактовой частоты. К счастью, такой источник обычно есть в самом микроконтроллере. Обычно это RC- генератор, который не очень точен и частота которого зависит от рабочего напряжения, но для многих устройств этого вполне достаточно. Внешний источник тактовой частоты понадобится только для тех приложений, которые критичны к измерению времени. Все микроконтроллеры семейства AVR снабжены встроенным источником сигнала тактовой частоты и в большинстве проектов этой книги мы используем именно его. Скорость выполнения программы напрямую зависит от тактовой частоты. Однако высокая тактовая частота имеет и недостаток: система потребляет больше электроэнергии. Между тактовой частотой и потреблением энергии существует линейная зависимость. Если вы удвоите тактовую частоту, то потребление энергии также возрастет в два раза. Поэтому неразумно выбирать самую высокую рабочую частоту, лучше определить ее исходя из требуемой скорости выполнения программы. Как мы покажем в проекте 1 (далее в этой же главе), выбрав самую низкую тактовую частоту, мы можем снизить потребляемую мощность до минимума. Основные компоненты устройства показаны на рис. 1.15.

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

Рис. 1.15. Основные компоненты устройства

Источник: Гадре, Д., Занимательные проекты на базе микроконтроллеров tinyAVR / Дхананья Гадре, Нигул Мэлхотра: Пер. с англ. — СПб.: БХВ-Петербург, 2012. — 352 с.: ил. — (Электроника)

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты