Проект tinyAVR 1. Программа "Hello World!" в мире микроконтроллеров

January 12, 2015 by admin Комментировать »

После того как мы описали все элементы и компоненты проекта (и всю специфику создания проектов для микроконтроллеров AVR), предлагаем простой проект для иллюстрации. В нем есть все элементы, показанные на рис. 1.15. В схеме имеется два светодиода и две кнопки, а также кнопка сброса. Задача устройства — изменять состояние светодиодов при нажатии и отпускании кнопок. Проект имеет такое название потому, что вводит вас в мир микроконтроллеров tinyAVR.

На рис. 1.36 и 1.37 приведены два варианта принципиальной схемы этого уст- ройства. Обе схемы идентичны, они иллюстрируют два самых популярных стиля изображения схем. На рис. 1.36 все соединения между компонентами показаны явно (соединительными линиями). На рис. 1.37 сигналам присвоены названия (например, РВЗ — это контакт 2 микроконтроллера). Контакт 2 соединяется с LED1. Поэтому название сигнала РВЗ присваивается и контакту 2, и катоду LED1. Похожие названия сигналов даны и остальным соединениям.

Рис. 1.36. Принципиальная схема проекта "Hello World!"

Рис. 1.37. Другой стиль схемы для "Hello World!" (S1 соответствует LED1, S2 — LED2)

Давайте рассмотрим элементы схемы рис. 1.36 (рис. 1.37). Схема питается от двух щелочных батареек размера АА. Как упоминалось ранее, такие батареи имеют номинальное напряжение на выводах 1,5 В. Две батареи дают напряжение 3 В. Рабочее напряжение Tinyl3V составляет от 1,8 до 5,5 В, так что 3 В вполне подходит. По мере разряда батарей напряжение будет падать, но схема будет продолжать работать до тех пор, пока напряжение питания не снизится до 1,8 В. Светодиоды видимого света (в отличие от инфракрасных) имеют определенное напряжение включения, которое зависит от цвета (1,8В— для красного и 3,5 В— для белого). Таким образом, для этого проекта следует выбрать красные светодиоды. На рис. 1.38 показана компоновка платы со стороны компонентов, а на рис. 1.39 — со стороны пайки. Вы видите, что плата в основном разведена в слое пайки (со стороны компонентов есть только одна перемычка). Ее легко изготовить при помощи фрезерования, описанного в предыдущем разделе. Внешний вид собранного образца устройства показан на рис. 1.40.

Компоновку платы в программе EAGLE (вместе со схемой) можно скачать по ссылке: www.avrgenius.com/tinyavrl.

Рис. 1.38. Печатная плата проекта "Hello World!" со стороны пайки

Рис. 1.39. Печатная плата проекта "Hello World!" со стороны компонентов

Рис. 1.40. Собранное устройство "Hello World!"

Код программы был написан таким образом, что левая кнопка включает левый светодиод, а правая — правый. То есть если правый светодиод выключен, и вы нажимаете и отпускаете правую кнопку, то она включает правый светодиод. Код программы для микроконтроллера Tinyl3V на языке С приведен в листинге 1.2.

Листии! 1

//Include Files # include<avr/iо.h>

#define F_CPU 128000UL #include<util/delay.h>

int main(void)

{

DDRB |= 1«2 11«3 ;//Declare as outputs PORTB I = 1«2 11«3 ;

//Выключить светодиоды DDRB &= ~ (1«0 11«1) ;//Объявление ввода PORTB |= (1«0 11«1) ;//Включение нагрузки while (1)

{

//кнопка 1

if ( ! (PINB& (1«0) ) ) //если есть нажатие

{

_delay_ms(10);//подавление дребезга while ( ! (PINB&(1«0) ) ) ;

//ждем отпускания

_delay_ms(10);//подавление дребезга РСЖТВЛ= (1«3) ; / / переключение

}

//кнопка 2

if ( ! (PINB& (1«1) ) )//если есть нажатие

{

_delay_ms(10);//подавление дребезга while ( ! (PINB& (1«1) ) ) ;

//ждем отпускания

_delay_ms(10);//подавление дребезга PORTBA= (1«2) ; / / переключение

}

}

Рис. 1.41. Установка fuse-битов для микроконтроллера Tiny13

}

Листинг 1.2 демонстрирует общий стиль программирования нашей книги. Файлы, заголовков специфичны для компилятора AVR-GCC. Макрос f_cpu используется для передачи в компилятор значения рабочей частоты. Программа работает в бесконечном цикле. Для каждой кнопки есть один блок if, который сначала проверяет нажатие кнопки. Если кнопка нажата, то происходит ожидание ее отпускания, и при отпускании выполняется нужное действие (переключение светодиода). Задержка в 10 мс после каждого нажатия и отпускания кнопки предназначена для подавления дребезга контактов. Тем, кто только начинает программировать на языке С для микроконтроллеров AVR, рекомендуется прочитать приложение 1, чтобы лучше понять приведенный код. Откомпилированный исходный код вместе с файлом MAKEFILE можно скачать по ссылке: www.ayrgemus.coin/tinyavrl.

AVR программируется через STK500 в режиме ISP. Установка fuse-битов показана на рис. 1.41. Tinyl3 настроен для работы на частоте 128 кГц внутреннего RC- генератора. Идея состоит в том, чтобы тактировать AVR самой низкой частотой, поскольку потребление энергии цифровыми схемами AVR (схема типа CMOS) прямо пропорционально рабочей тактовой частоте, а мы хотим свести затраты энергии к минимуму.

Заключение

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

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

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

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