Интегрированная среда разработки для AVR-микроконтроллеров mikroC PRO for AVR. Программирование параллельного ввода/вывода данных в AVR-микроконтроллерах
Для создания программного обеспечения микроконтроллерных систем широко используются средства вычислительной техники, в том числе персональные компьютеры, позволяющие разработчику выполнить весь цикл проектирования, включая отладку целевой программы.
В настоящее время самым мощным средством разработки программного обеспечения для микроконтроллеров являются интегрированные среды разработки (IDE – Integrated Development Environment), имеющие в своем составе текстовый редактор, компилятор языков высокого уровня типа Паскаль или Си, отладчик-симулятор, а также библиотеки готовых функций.
Одним из таких программных инструментов является среда разработки mikroC PRO компании MikroElektronika. Данная среда разработки позволяет быстро создавать эффективные программы на распространенном языке высокого уровня Си. Среда имеет удобный интерфейс пользователя со встроенным редактором текста и мощным отладчиком программ. Встроенный мастер проектов позволяет в считанные минуты создать заготовку рабочей программы для любого микроконтроллера из целого семейства. Библиотека готовых функций обеспечивает программиста поддержкой для быстрого и безошибочного создания программы. Компания MikroElektronika создала среду разработки mikroC PRO для таких популярных и известных микроконтроллеров, как семейство PIC компании Microchip, AVR компании Atmel и семейство MCS-51.
Для AVR-микроконтроллеров компания MikroElektronika разработала интегрированную среду разработки под названием mikroC PRO for AVR. С сайта www.mikroe.com компании можно бесплатно скачать демонстрационную версию среды mikroC PRO for AVR, которая позволяет создавать программы с объемом исполняемого кода до 2 Кбайт.
Разработка программного обеспечения при использовании mikroC PRO состоит из следующих основных этапов.
1. Создание проекта.
2. Создание исходных файлов на языке mikroC.
3. Построение проекта.
4. Тестирование программы и ее отладка.
Среда mikroC PRO организует программное обеспечение в виде проектов, состоящих из одного файла проекта (файл с расширением .mcpav) и одного или нескольких исходных файлов на языке mikroC (файлов с расширением .c). Исходные файлы могут компилироваться только в том случае, если они включены в проект.
Файл проекта содержит:
· имя проекта;
· тип микроконтроллера;
· тактовую частоту его работы;
· слово конфигурации микроконтроллера;
· список исходных файлов для проекта;
· другие (вспомогательные) файлы.
Программирование параллельного ввода/вывода данных в микроконтроллерах AVR
Порт микроконтроллера – это группа линий передачи данных, обозначаемая буквой латинского алфавита (A, B, C, D, …). Набор и разрядность портов отличается в зависимости от МК. Так, в популярных моделях ATmega16 и ATmega32 имеется 4 порта ввода/вывода, обозначаемые буквами A, B, C, D.
В каждом порту микроконтроллера имеется три регистра: DDRx, PORTx, PINx (где х – это буква A, B, C, …).
· DDRx – это регистр направления данных. Он определяет, как сконфигурирован вывод (линия) порта – как вход или выход. Если в определенный разряд этого регистра записать “1”, то соответствующий вывод (линия) порта будет работать как выход. Если же в определенном разряде регистра DDRx записать “0”, то соответствующий вывод (линия) порта будет работать как вход.
· PORTx – выходной регистр данных порта. В разрядах этого регистра записываются те значения, которые нужно получить на выводах (линиях) порта, при условии, что эти выводы сконфигурированы как выходы.
· PINx – входной регистр данных порта. Этот регистр содержит логические значения, которые в данный момент присутствуют на выводах порта (ножках микросхемы), причем эти выводы должны быть сконфигурированы как входы.
Регистры DDRx и PORTx доступны как для записи, так и для чтения, а регистр PINx – только для чтения.
Пример конфигурирования (настройки на ввод или вывод) выводов портов.
DDRA = 0xFF; // настроить все линии порта А на вывод (как выходы)
DDRB = 0x00; // настроить все линии порта В на ввод (как входы)
DDRC = 0xF0; // настроить младшие четыре разряда (младшую тетраду)
// выводов порта С на ввод, остальные – на вывод
Если линии портов сконфигурированы, то можно выполнять чтение или запись данных через них, т.е. выполнять ввод данных из порта или вывод данных в порт.
PORTA = 0xFF; // вывести все “1” на линии порта А
// (вывести в порт А)
PORTA = PINB; // считать данные со входов порта В и записать их на
// линии порта А (вывести в порт А)
Допустим, что необходимо проверить работу программы, которая в бесконечном цикле выводит данные в порт С микроконтроллера ATmega16, а затем вводит информацию с выводов этого порта (непосредственно с ножек микросхемы).
/************************************************************
out_in.c – программа вывода кода в порт С и чтения кода
************************************************************/
void main( )
{
DDRC = 0xFF; // настроить все линии порта С на вывод
while(1)
{
PORTC = 0b00001111; // вывод числа 0x0F в порт С
PINC = PORTC; // чтение состояния выводов порта С
PORTC = 0b11110000; // вывод числа 0xF0 в порт С
PINC = PORTC; / чтение состояния выводов порта С
}
}