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

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

Аннотация

В книге рассмотрено программирование микроконтроллеров AVR и PIC компании Microchip (www.microchip.com). Книга состоит из 3 глав.
В главе 1 рассмотрены программные и аппаратные средства, используемые для программирования микроконтроллеров AVR и PIC. Приводятся сведения об операциях с портами микроконтроллеров, описывается среда программирования Microchip Studio для AVR и среда программирования MPLAB X IDE для PIC. Описывается программный пакет Proteus, используемый для моделирования работы созданных программ.
В главе 2 приводятся примеры программирования 8-разрядных микроконтроллеров AVR.
В главе 3 приводятся примеры программирования 8-разрядных микроконтроллеров PIC.
Тестирование и проверка работоспособности программ, созданных в главах 2 и 3, проводится либо с помощью программного пакета Proteus, либо на макетных сборках, использующих реальные образцы микроконтроллеров, программаторы/отладчики и макетные платы.
Каждая глава заканчивается контрольными вопросами и заданиями, предлагающими задачи для самостоятельного программирования. В конце книги приведены решения предлагаемых задач.

Оглавление

Введение _ 5
Глава 1. Программные и аппаратные средства программирования микроконтроллеров _ 21
1.1. Общие сведения _ 21
1.2. Операции с портами микроконтроллера _ 23
1.3. Интегрированная среда разработки Microchip Studio для AVR _ 31
      1.3.1. Установка Microchip Studio _ 31
      1.3.2. Создание проекта “Линейка светодиодов” в Microchip Studio _ 36
            1.3.2.1. Начало работы _ 36
            1.3.2.2. Разработка листинга программы _ 39
1.4. Интегрированная среда разработки MPLAB X IDE для PIC _ 44
      1.4.1. Установка MPLAB X IDE и компиляторов _ 44
      1.4.2. Пакеты семейства устройств DFP _ 49
      1.4.3. Интерфейсное окно пользователя _ 55
      1.4.4. Биты конфигурации_ 66
      1.4.5. Создание проекта “Линейка светодиодов” в MPLAB X IDE _ 76
            1.4.5.1. Начало работы _ 76
            1.4.5.2. Разработка листинга программы _ 80
1.5. Программа Proteus для моделирования электронных схем _ 86
      1.5.1. Интерфейсное окно Proteus _ 86
      1.5.2. Моделирование электронных схем с микроконтроллерами в Proteus _ 94
            1.5.2.1. Моделирование проекта с микроконтроллером AVR _ 94
            1.5.2.2. Моделирование проекта с микроконтроллером PIC _ 100
            1.5.2.3. Моделирование проекта “Матрица светодиодов” с микроконтроллером PIC _ 101
      1.5.3. Создание проекта с листингом программы внутри Proteus без привлечения IDE _ 105
      1.5.4. Использование виртуальных измерительных приборов в Proteus _ 110
1.6. Аппаратные средства программирования микроконтроллеров _ 113
Контрольные вопросы и задания _ 121
Глава 2. Примеры программирования 8-разрядных микроконтроллеров AVR _ 123
2.1. Подключение кнопки к микроконтроллеру _ 123
      2.1.1. Создание проекта _ 123
      2.1.2. Моделирование проекта на макетной плате _ 125
2.2. Подключение к микроконтроллеру одноразрядного семисегментного индикатора _ 129
2.3. Управление таймер-счетчиком _ 133
2.4. Управление внешними прерываниями _ 137
Контрольные вопросы и задания _ 143
Глава 3. Примеры программирования 8-разрядных микроконтроллеров PIC _ 145
3.1. Подключение к микроконтроллеру двух кнопок _ 145
3.2. Подключение к микроконтроллеру силовой нагрузки _ 154
3.3. Конфигуратор кода MPLAB Code Configurator (MCC). Создание проекта “Программирование ШИМ” _ 156
3.4. Управление вращением электродвигателя небольшой мощности _ 172
3.5. Работа с последовательным интерфейсом RS-232 _ 176
3.6. Работа с модулем АЦП микроконтроллера _ 183
     3.6.1. Создание проекта _ 183
     3.6.2. Моделирование на макетной плате _ 193
3.7. Подключение к микроконтроллеру жидкокристаллического индикатора _ 198
      3.7.1. Создание проекта _ 198
      3.7.2. Моделирование проекта на макетной плате _ 202
3.8. Подключение к микроконтроллеру температурного датчика _ 204
3.9. Подключение к микроконтроллеру малогабаритного шагового электродвигателя _ 208
      3.9.1. Создание проекта_ 208
      3.9.2. Моделирование проекта на макетной плате _ 219
Контрольные вопросы и задания _ 221
4. Решения и ответы _ 223
4.1. Решения и ответы к главе 1 _ 223
4.2. Решения и ответы к главе 2 _ 228
4.3. Решения и ответы к главе 3 _ 234
Литература _ 238

Введение

Микроконтроллер (МК, англ. MCU – Microcontroller Unit) – это электронный блок для управления различными устройствами, выполненный в виде единой микросхемы, или совсем коротко – это управляющая микросхема. В состав микроконтроллера входят микропроцессор, постоянное запоминающее устройство (ПЗУ, англ. ROM), оперативное запоминающее устройство (ОЗУ, англ. RAM), порты ввода/вывода, таймеры, АЦП, последовательные и параллельные интерфейсы и др. Учитывая количество входящих в состав микроконтроллера компонентов, его иногда называют однокристальным компьютером. Вычислительная мощность у микроконтроллера неизмеримо меньше, чем у компьютера, поэтому они используются для решения узкоспециализированных задач и находят широкое применение в устройствах промышленной автоматики, в системах автоматизации зданий, в периферийных устройствах компьютерной техники, в мобильной электронике, робототехнике, автомобильной технике и многих других приложениях.  

В данном учебном пособии рассмотрено программирование  микроконтроллеров AVR и PIC компании Microchip. Микроконтроллеры компании Microchip включают в себя 8, 16 и 32-разрядные модели микроконтроллеров. Не углубляясь в детали, приведем следующее определение разрядности: под разрядностью понимается количество бит информации, которые обрабатываются за один такт микропроцессора. Обзор микроконтроллеров компании Microchip начнем с семейства 8-разрядных микроконтроллеров.

Read more …

Глава 1. Программные и аппаратные средства программирования микроконтроллеров

1.1. Общие сведения

При разработке приложений для микроконтроллеров Microchip используются программные и аппаратные средства.

Программные средства необходимы для написания и отладки  программного кода. Программный код для микроконтроллеров пишется либо на языке ассемблера (машинно-ориентированный язык низкого уровня), либо на языках высокого уровня C/C++. Для микроконтроллеров компании Microchip используются следующие программные средства:

  • Microchip Studio – интегрированная среда программирования для микроконтроллеров AVR и SAM.
  • MPLAB® X IDE – интегрированная среда программирования для микроконтроллеров PIC. Совместно с MPLAB X IDE может использоваться плагин MPLAB Code Configurator (MCC), который облегчает и ускоряет процесс написания программного кода.
  • Компилятор MPLAB® XC. Если разрабатываемое приложение будет написано на C/C++, то потребуется установить компилятор, который преобразует программу с языка высокого уровня в машинный код. Компания Microchip предлагает компиляторы MPLAB XC8, MPLAB XC16, MPLAB XC32 для 8, 16 и 32-разрядных микроконтроллеров.
  • Proteus программная среда для моделирования процесса выполнения программного кода. 
Read more …

1.3. Интегрированная среда разработки Microchip Studio для AVR

1.3.2. Создание проекта «Линейка светодиодов» в Microchip Studio

1.3.2.1. Начало работы

Для программирования микроконтроллеров AVR будем использовать интегрированную среду разработки (Integrated Development Environment – IDE) Microchip Studio. Эта IDE представляет собой единую среду для записи, сборки и отладки программ на ассемблере и на C/C++. Официальную версию можно скачать бесплатно с сайта компании Microchip: https://www.microchip.com/en-us/tools-resources/develop/microchip-studio. Среду Microchip Studio можно использовать для разработки и отладки приложений на микроконтроллерах AVR ® и SAM. Несмотря на то, что она поставляется с новым названием и внешним видом, её можно использовать с любой существующей документацией и видеороликами от предыдущей среды разработки – Atmel Studio. Microchip Studio имеет следующие отличительные черты: 

Read more …

1.3.2.2. Разработка листинга программы

Давайте создадим программу для микроконтроллера ATmega. Начальный код, созданный при запуске Microchip Studio, можно просто удалить. При написании программы следует обращать внимание на подсказки редактора кода. Редактор знает доступные переменные и функции. Например, при вводе директивы #include уже при наборе первых букв #in появится список, из которого можно выбрать #include, щелкнув по клавише Enter. Так меньше шансов сделать ошибку при наборе кода. При редактировании программы, если нажать Ctrl + Space, появится список автозаполнения, из которого можно выбрать доступные варианты.
Создадим для микроконтроллера ATmega8A проект, содержащий программу для мигания линейки из восьми светодиодов.

Пример 1.5.
#define F_CPU 1000000UL // устанавливаем частоту процессора 1 МГц
#include <avr/io.h>
#include <util/delay.h> //подключаем утилиту delay (задержка выполнения кода)
int main(void)
{
DDRD = 0b11111111; //устанавливаем выводы порта D на выход
PORTD = 0; // записываем в порт D нули
while(1) // заголовок бесконечного цикла
{
PORTD = 0b11111111; //устанавливаем “1” во все биты (засвечиваем все //светодиоды)
_delay_ms(300); // ждем 300 мс
PORTD = 0; //устанавливаем “0” во все биты (гасим светодиоды)
_delay_ms(300); // ждем 300 мс
}
}

Поcле того, как программа написана, её необходимо скомпилировать. Для этого выбираем опции Build –> Build Solution (или щелкаем клавишу F7). Если код программы написан без ошибок, то в нижней части интерфейсного окна появится запись Build succeeded (сборка прошла успешно) (рис. 1.7).

Давайте немного усложним программу. Пусть светодиоды засвечиваются не все сразу, а последовательно по одному, начиная с нулевого и заканчивая седьмым. Таким образом, по линейке светодиодов от её начала (от нулевого светодиода) к концу побежит светящийся огонек.
Модифицированная программа имеет следующий вид.

Пример 1.6.
#define F_CPU 1000000UL // устанавливаем частоту процессора 1 МГц
#include <avr/io.h>
#include <util/delay.h> //подключаем утилиту delay (задержка выполнения кода)
int main(void)
{
DDRD = 0b11111111; //устанавливаем выводы порта D на выход
PORTD = 0; // записываем в порт D нули
while(1) // заголовок бесконечного цикла
{
int i; //определяем переменную i
PORTD=0b00000001; //засвечиваем нулевой светодиод
for (i=0; i<=7; i=i+1) //задаем цикл
{
if (i>=1)
PORTD=PORTD<<1; //применяем операцию сдвига влево на 1 позицию
_delay_ms(300); // ждем 300 мс
}
PORTD=0; //гасим все светодиоды
_delay_ms(300); // ждем 300 мс
}
}

Программа создана. Что дальше? А дальше надо смоделировать работу программы, и если программа работает так, как было задумано, то программу можно загружать в микроконтроллер. Все дальнейшие шаги работы с этой программой, а также и с другими программами подробно описаны в учебном пособии, а сейчас просто посмотрим небольшой видеофрагмент, как выглядит моделирование показанной в примере 1.6 программы в специализированном программном обеспечении Proteus.

Стоимость учебного пособия – 490 руб.