Работа с контроллером
Для запуска контроллера следует подать на специально предназначенные ножки (ножка 10 корпуса контроллера) питающее напряжение и специальные ножки подключить к земле (ножки 11 и 31). Контроллер, используемый в лабораторной работе, ATmega8535-16PU может быть запитан напряжением 4.5-5.5V. Это напряжение надо подать на ножки Vcc(10), AVCC(30). Ножки с названием GND(11 и 31) следует подключить к нулевому значению напряжения на источнике питания. Ножка RESET(9) должна быть либо не подключена, либо подтянута к напряжению питания.
Все общение с периферийными устройствами микроконтроллера происходит через регистры. Многие регистры доступны как для чтения, так и для записи.
Рисунок 1. Расположение и функции ножек контроллера
Работа с портами ввода/вывода
За работу портов ввода/вывода отвечают 3 регистра:
Регистр DDRx отвечает за направление передачи информации, где х- название порта.
Данный регистр доступен как для чтения, так и для записи.
Если в бит регистра записать 1, то соответствующая ножка контроллера будет электрически сконфигурирована на выход, иначе на вход.
Пример:
// Настроим ножки с 0 по 3 порта А контроллера на выход, а ножки с 4 по 7 порта А на вход
// На чипе контроллера на выход будут настроены ножки 37-40 на выход, а ножки 33-36
// настроены на вход.
// Все ножки порта В настроим на выход, ножки порта С все настроим на вход
DDRA=0b1111000;
DDRB=0xFF;
DDRC=0;
Регистр PORTx (где х – название порта) меняет свои функции в зависимости от того, как направлен данных порт. Регистр доступен как для чтения так и для записи.
Если порт сконфигурирован на выход, то если в определенный бит регистра PORTx записать 1, то на ножке контроллера, соответствующей этому биту, будет высокое значение сигнала (в данном случае 5 В). Если в какой-то бит записать 0, то на выходной ножке этого бита будет низкое значение сигнала (т.е. 0 В)
Пример:
// Необходимо, чтобы на ножках 0 и 1 порта А было высокое значение напряжения. Ножки
// порта В должны чередовать высокое и низкое значение напряжений начиная с
// высокого. При этом порты настроены так, как показано в предыдущем примере.
PORTA.0=1;
PORTA.1=1;
PORTA.2=0;
PORTA.3=0;
PORTB=0b01010101;
В случае если порт настроен на вход, этот регистр подключает (если в нужный бит записана 1) подтягивающий регистр к напряжению питания или отключает его (если в нужный бит записан 0).
Регистр PINx, где х – название порта. Данный регистр доступен только для чтения. При обращении к этому регистру он возвращает значения напряжений (в цифровой форме) на ножках этого порта в виде целого числа от 0 до 255 с учетом разряда ножки.
Пример:
// в переменную input_a4 и input_a5 запишем значения напряжения на ножках 4 и 5 порта А
// в переменную input_c запишем значение напряжения на всех ножках порта С. Вышеперечисленные переменные описаны // как глобальные целого типа.
input_a4=PINA.4;
input_a5=PINA.5;
input_c=PINC;
Для демонстрации работы с портами конструктивно на плате соединены (как видно на электрической схеме):
Кнопка К6 к ножке 2 порта А
Кнопка К7 к ножке 2 порта D
Переключатели К8 к ножкам 4 и 5 порта А
Фотоинтерраптор D3 к ножке 3 порта А
Фотоинтерраптор D4 к ножке 3 порта D
Полоска светодиодов: 8 светодиодов (с 0 по 7) подключены к ножкам порта С, два светодиода (8 и 9) подключены к ножкам 6 и 7 порта А соответственно.
Пример программы работы с портами.
Задание: при пересечении фотоинтерраптора D4 должны загореться все светодиоды, подключенные к порту С
Решение:
#include <mega8535.h> // подключения модуля описывающего регистры контроллера ATmega8535
void main(void) // начало главной функции
{
DDRD.4=0; // Настраиваем ножку 4 порта D на вход
DDRC=255; // Настраиваем все ножки порта С на выход
while (1) //начался главный цикл
{
if (PIND.4==1) // если фотоинтерраптор D4 который подключен к ножке 4 порта D пересечен
{ PORTC=0b11111111; } // тогда зажечь всю линейку светодиодов
else // иначе (если фотоинтерраптор не пересечен)
{ PORTC=0b00000000; } // погасить всю линейку светодиодов.
} // конец главного цикла
} // конец главной функции
Порядок выполнения работы №1
Подробно ознакомиться с работой микроконтроллера и способами его программирования;
Подробно ознакомиться с электрической принципиальной схемой лабораторной установки;
Обсудить с преподавателем схемные решения, использованные в лабораторном стенде.
Подключить питание, программатор и включить компьютер.
Просмотреть и уяснить пример написания программы, ее компилирования и прошивки микроконтроллера преподавателем.
Самостоятельно написать предложенную преподавателем программу и записать ее в память микроконтроллера.
Оформить отчет, который должен содержать:
Титульный лист;
Цель работы и решаемые в процессе работы задачи;
Электрическую принципиальную схему устройств, использованных в данной лабораторной работе;
Текст кода программы, использованной для работы.
Выводы
Контрольные вопросы для лабораторной работы №1:
Где используются микроконтроллеры?
Какое напряжение питания требуется микроконтроллеру для работы?
Каким образом можно записать программу в микроконтроллер?
Как настроить порты ввода-вывода на ввод или на вывод информации?
Порядок выполнения работы №2
Подробно ознакомиться с набором периферийных устройств микроконтроллера;
Ознакомиться с типом и режимами работы АЦП, встроенного в микроконтроллер;
Запрограммировать микроконтроллер программой обрабатывающей сигнал с АЦП микроконтроллера;
Ознакомиться со схемой и настройками обработчика прерываний.
Написать программу, использующую прерывания и прошить этой программой микроконтроллер;
Ознакомиться с режимами работы таймеров-счетчиков, встроенных в микроконтроллер;
Написать программы, использующие каждый режим таймера-счетчика.
Оформить отчет, который должен содержать:
Титульный лист;
Цель работы и решаемые в процессе работы задачи;
Электрическую принципиальную схему устройств, использованных в данной лабораторной работе;
Текст кода программы, использованной для работы.
Выводы
Контрольные вопросы для лабораторной работы №2:
Какой набор периферийных устройств представлен в данном микроконтроллере?
Какие ножки микроконтроллера могут быть использованы для генерирования внешних прерываний?
В каких режимах может работать Таймер-счетчик 0?
Что означает левое и правое смещение результатов преобразования АЦП микроконтроллера?
Порядок выполнения работы №3
Ознакомиться с принципом управления сервомашинкой;
Написать программу управления сервомашинкой от потенциометра и записать ее в микроконтроллер;
Ознакомиться с работой схемы источника тока на основе операционного усилителя.
Ознакомиться со стендом управления электрогидравлическим следящим приводом.
Внимательно наблюдать за сборкой преподавателем электрогидравлической следящей системы на основе микроконтроллера;
Оформить отчет, который должен содержать:
Титульный лист;
Цель работы и решаемые в процессе работы задачи;
Электрическую принципиальную схему устройств, использованных в данной лабораторной работе;
Текст кода программы, использованной для работы;
Выводы.
Контрольные вопросы для лабораторной работы №3:
Каким образом два аналоговых сигнала обрабатываются одним АЦП;
В чем преимущества и недостатки использования цифровой и аналоговой схемы управления.