Требования к знаниям и умениям учащихся. В результате выполнения лабораторной работы учащиеся должны знать:
В результате выполнения лабораторной работы учащиеся должны знать:
- особенности программной и аппаратной реализации временных функций в МК dsPIC33F;
- структуру и режимы работы таймеров МК dsPIC33F.
Должны уметь:
- составлять программы с помощью языка программирования Среализации временных функций, используя метод программных циклов и таймер/счетчик;
- создавать проекты для прошивки МК dsPIC33FJ32MC204 в интегрированной среде MPLAB IDE 8;
- выполнять компиляцию исходного кода программ прошивки МК учебного стенда НТЦ-31.000;
- выполнять программирование МК учебного стенда НТЦ-31.000, а также проверку и отладку прошивки.
Методические указания
Краткие теоретические сведения
Реализация временных функций
Временные функции в микропроцессорных системах используются в случаях, когда необходимо выполнять какие либо действия периодически, либо производить измерение длительности какого либо события. Наибольшее распространение для реализации временных функций получили метод программных циклов и использование таймера/счетчика. Во всех случаях МК оперирует не непосредственно временем, а количеством машинных циклов, выполненных за интересующий интервал времени. Машинный цикл МК – это процедура выполнения ядром МК одной инструкции за один машинный такт, равный двум периодам тактирующего генератора. Частота внутреннего тактирующего генератора МК dsPIC33FJ32MC204 (по умолчанию) равна 7.37 Мгц. Следовательно, машинный цикл длится секунды.
Метод программных циклов
Метод программных циклов относится к программным способам реализации временной задержки и состоит в следующем. В некоторую переменную загружают число, которое затем в каждом проходе цикла уменьшается на 1. Так продолжается до тех пор, пока содержимое переменной не станет равной 0, что интерпретируется программой как момент выхода из цикла, и, следовательно, истечение требуемого промежутка времени. Время задержки при этом определяется числом, загруженным в переменную-счетчик и временем выполнения команд, образующих цикл.
Для организации временных задержек библиотека компилятора MPLAB С30 имеет специальную функцию для языка программирования С:
void_delay32(unsigned long cycles).
Недостатком программного способа реализации временной задержки является нерациональное использование ресурсов МК: во время формирования задержки МК практически простаивает, так как не может решать никаких задач управления объектом. В то же время аппаратные средства МК позволяют реализовать временные задержки на фоне основной программы работы.
1.3 Использование таймера/счётчика
Таймеры/счетчики (Т/С) предназначены для подсчета внешних событий, для получения программно-управляемых временных задержек и выполнения времязадающих функций микроконтроллера.
Микроконтроллеры семейства dsPIC33 имеют несколько 16-разрядных таймеров. Таймеры имеют обозначение Timer1, Timer2 Timer3 и т.д. С небольшими исключениями, все 16-битные таймеры имеют одинаковую функциональность и разделены на 3 типа:
- Таймер типа А (Timer1).
- Таймер типа В (Timer2, Timer4, Timer6, Timer8).
- Таймер типа С (Timer3, Timer5, Timer7, Timer9).
Таймеры типа В и С могут быть объединены для формирования 32-разрядного таймера.
Каждый из таймеров настраивается следующими регистрами, доступными для чтения и записи:
- TMRx – регистр счета;;
- PRx – регистр периода;
- TxCON – регистр конфигурации,
где x – номер таймера.
Также с каждым таймером ассоциированы следующие биты в регистре управления прерываниями:
- TxIE – бит разрешения прерывания (регистр IESO);
- TxF – бит статуса прерывания (регистр IFSO);
- TxIP<2:2> - биты установки приоритета прерывания (регистр IPCO).
Структурная схема модуля Timer1 приведена на рисунке 20.16.
Модуль Timer1 является 16-разрядным таймером, который может служить как счетчик для часов реального времени или работать как интервальный таймер-счетчик.
16-разрядный Timer1 имеет следующие режимы работы:
- 16-разрядный таймер;
- 16-разрядный синхронный счетчик;
- 16-разрядный асинхронный счетчик.
Эти режимы работы определяются установкой соответствующих битов в 16-разрядном регистре конфигурации T1CON.
Рисунок 20.16 – Структурная схема модуля Timer1
В 16-разрядном режиме таймера, таймер инкрементируется на каждый цикл инструкций до соответствующего значения, предварительно загруженного в регистр периода PR1 (рисунок 20.16), а затем сбрасывается в «0» и продолжает считать. Если CPU входит в режим простоя IDLE, таймер может остановить приращение если бит TSIDL = 0(бит регистра T1CON < 13 >). Если TSIDL = 1, модуль таймера может продолжать последовательность инкрементирования с завершением режима простоя CPU.
В режиме 16-разрядного синхронного счетчика, таймер инкрементируется по нарастающему фронту внешнего тактового сигнала. Таймер считает до соответствующего значения загруженного в регистр PR1, затем сбрасывается в «0» и продолжает считать. В режиме простоя CPUмодуль таймера работает в аналогичном режиме 16-разрядного таймера.
В режиме 16-разрядного асинхронного счетчика в режиме простоя CPU, таймер остановит инкрементирование, если бит TSIDL = 1.
В режиме SLEEP CPUтаймер Timer1 работает если:
- модуль таймера разрешен (бит регистра T1CON < 15 > TON = 1);
- выбран внешний источник тактирования (бит регистра T1CON < 1 > TCS = 1);
- бит TSYNC регистра T1CON < 2 >переведен в логический 0, который определяет внешний источник тактирования как асинхронный.
Когда все три условие выполнены, таймер продолжает считать до состояния регистра PR1 и, после чего, сброшен состоянием 0х0000. При совпадении состояний регистров TMR1 и PR1 (рисунок 20.16) устанавливается бит T1IFв регистре управления прерываниями IFSO. В этом случае генерируется прерывание, если установлено соответствующий бит разрешения прерывания таймера.