Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование микроконтроллеров семейства CORTEX-M. Учебное пособие
.pdf
81
вариант задания;
блок-схема алгоритма и исходный текст программы;
листинг программы и тестовые примеры, использованные при отладке.
6.3. Изучение работы системного таймера микроконтроллера.
ЦЕЛЬ РАБОТЫ: изучение способов настройки и использования системного таймера.
ПОДГОТОВКА К РАБОТЕ
1. Изучить по методическим указаниям [1] и приведенным ниже пояс-
нениям способы настройки и применения таймера.
2. По варианту программы с типом временной диаграммы вар1, задан-
ному в лабораторной работе 6.2, разработать блок-схему и написать
на языке ассемблера программу, реализующую управление светодиодами. Формирование требуемых интервалов времени выполнять с
использованием таймера в режиме программного опроса. Использовать в программе приведенный ниже начальный фрагмент программы (настройка частоты и других параметров микроконтроллера, в то
числе режимов работы разрядов 0, 1 порта С, через которые выдаются сигналы управления светодиодами).
РАБОЧЕЕ ЗАДАНИЕ
1. Подключить плату к ПЭВМ (см раздел 3)
2. Убедиться, что на компьютере выставлена текущая дата и время. Ес-
ли нет, то изменить их вручную.
3. Запустить Keil μVision и ввести разработанную программу.
4. Отладить введенную программу и произвести ее компиляцию
5. Загрузить программу в память микроконтроллера и убедиться в пра-
вильности ее работы
СОДЕРЖАНИЕ ОТЧЕТА
вариант задания;

82
Регистры системного таймера
Регистры
SYSTICK
Адрес
Доступ
Кодирование
31 – 24
23 – 17
16
15 – 3
2 1 0
CTRL
0xE000E010
чтение/
запись
–
COUNT
FLAG
–
CLK
SOURCE
TICK INT
ENA
BLE
LOAD
0xE000E014
чтение/
запись
–
RELOAD
VAL
0xE000E018
чтение/
запись
–
CURRENT
CAL
0xE000E01C
чтение
–
TENMS
блок-схема алгоритма и исходный текст программы;
листинг программы и тестовые примеры, использованные при от-
ладке.
ПОЯСНЕНИЯ К РАБОТЕ
Системный таймер – это 24-битный вычитающий счетчик. После запуска
таймера в счетчик загружается заданное значение, определяющее формируемый интервал времени, и осуществляется потактное вычитание из счетчика.
При достижении нулевого состояния счетчика вырабатывается сигнал прерывания, формируется сигнал для программного опроса и таймер автоматически
перезапускается. Блок управления системного таймера включает четыре регистра (см. таблицу).
Регистр текущего значения CURRENT используется как счетчик, когда
системный таймер активен. Значение данного регистра уменьшается на 1 с
каждым фронтом сигнала частоты. Декрементируемое значение находится в
младших 24 разрядах регистра, а старшие 8 регистров обнулены. Для этого регистра возможно только чтение. Попытка записи в этот регистр может привести
к сбросу его содержимого.
Регистр контроля и состояния CTRL содержит 4 управляющих бита:
Бит COUNT_FLAG переключается в «1» при достижении в регистре
CURRENT нулевого состояния и может использоваться для программного

83
опроса. Этот бит сбрасывается, когда осуществляется чтение регистра CTRL,
содержащего этот бит или когда в этот регистр выполняется запись. Этот регистр позволяет использовать системный таймер без обработки прерывания,
путем его программного опроса. Моменты опроса не синхронизированы с работой таймером, поэтому возможны погрешности измерения времени.
Бит CLK_SOURCE определяет источник тактовой частоты для таймера.
Есть два источника тактовой частоты:
Стандартный при CLK_SOURCE = 1, состоит в использовании внутреннего
генератора ядра.
Внешний при CLK_SOURCE = 0, определяет внешний по отношению к яд-
ру генератор.
Бит TICK_INT при единичном значении разрешает формирование запроса на прерывание процессора при достижении в регистре CURRENT нулевого состояния.
Бит ENABLE разрешает/запрещает работу системный таймер при установке в 1/0. При единичном значении таймера, по каждому фронту сигнала тактовой частоты будет происходить декрементация регистра текущего значения
CURRENT. При достижении в регистре CURRENT нулевого состояния в него
автоматически переписывается уставка из регистра перезагрузки RELOAD.
Регистр перезагрузки RELOAD служит для задания уставки таймера,
определяющей формируемый временной интервал. Величина уставки может
принимать значения от 0 до 0x00FFFFFF. Это позволяет при тактовой частоте
8МГц задать временные интервалов от 0 до ~2сек (224×0.125мкс = 2097152мкс).
Для получения больших интервалов можно использовать несколько последовательных запусков таймера. После сброса значение регистра не определено.
Регистр калибровочного значения CAL предназначен для задания ка-
либровочного значения TENMS= 0х0002904h (1050010), что позволяет генерировать базовое время 1 мс на тактовой частоте 10.5 МГц.

84
№ вар
Команда
1.
LDMIA Rn{!}, {reglist}
2.
MULS Rdm, Rn, Rdm
3.
STMIA Rn{!}, {reglist}
4.
LSLS Rd, Rm>, #<imm5>
5.
ASRS Rd, Rm, #<imm5>
6.
LSRS Rd, Rm, #<imm5>
7.
LDR Rt, [Rn, Rm]
8.
ADDS Rd, Rn, Rm
9.
ADCS Rdn, Rm
10.
STR Rt, [Rn, Imm5]
11.
ANDS Rdn, Rm
12.
LSRS Rdn, Rm
13.
ASRS Rdn, Rm
14.
RORS Rdn, Rm
15.
REV Rd, Rm
16.
ADDS Rd, Rn, Imm3
17.
LDRH Rt, [Rn, Rm]
18.
STRH Rt, [Rn, Rm]
19.
SUBS Rdn, Imm8
20.
SBCS Rdn, Rm
6.4. Оценка производительности ядра
ЦЕЛЬ РАБОТЫ: Определение времени исполнения заданной команды.
ПОДГОТОВКА К РАБОТЕ
1. Изучить по методическим указаниям [1] способы настройки и приме-
нения системного таймера.
2. По варианту с заданным типом команды разработать блок-схему и
написать на языке ассемблера программу, реализующую циклическое
исполнение заданной команды с подсчетом числа исполненных циклов. Для определения времени исполнения программы использовать
системный таймер в режиме программного опроса. Вариант блоксхемы программы приведен ниже.
РАБОЧЕЕ ЗАДАНИЕ
1. Подключить плату к рабочей станции (см. раздел 3)

85
2. Убедиться, что на компьютере выставлена текущая дата и время. Если
нет, то изменить их вручную.
3. Запустить Keil μVision и ввести разработанную программу.
4. Выполнить компиляцию и отладку программы.
5. Загрузить программу в память микроконтроллера и убедиться в пра-
вильности ее работы.
6. Выполнить программу и зафиксировать результаты ее исполнения.
Вычислить среднее время исполнения заданной команды.
СОДЕРЖАНИЕ ОТЧЕТА
1. Вариант задания;
2. Блок-схема алгоритма и исходный текст программы;
3. Листинг программы и тестовые примеры, использованные при от-
ладке.
ПОЯСНЕНИЯ К РАБОТЕ
Блок-схема разрабатываемой программы приведена на рисунке. Для за-
пуска таймера необходимо настроить синхронизацию микроконтроллера. Для
этого можно использовать фрагмент «НАСТРОЙКА СИНХРОНИЗАЦИИ
МИКРОКОНТРОЛЛЕРА» из программы, приведенной в лабораторной работе
в разделе 6.1. Далее осуществляется настройка таймера для запрета прерывания
и выбора источника тактовой частоты. Для подсчета числа исполненных циклов программы используется счетчик CT, предварительно сбрасываемый в 0.
После запуска таймера исполняется цикл, в котором повторяется n раз
исполнение заданной команды. Цикл завершается исполнением Δn команд для
инкремента счетчика CT и опроса бита срабатывания таймера для проверки
условия завершения цикла. Общее число команд в цикле n + Δn и чем больше n,
тем с большей точностью можно определить среднее время исполнения команды.

86
Настройка таймера
(TICK_INT = 0,
CLK_SOURCE = 0,
RELOAD = #N)
Настройка синхронизации
микроконтроллера
Сброс счетчика циклов
СТ = 0
Заданная команда
Заданная команда
СТ = СТ+1
Опрос готовности таймера
…
Запуск таймера
ENABLE = 1
COUNT_FLAG
начало
конец
0
1
Заданная команда
n
Δn
Результатами исполнения программы является число исполненных циклов CT. Общее число исполненных команд равно К = CT × (n + Δn). При тактовой частоте 8МГц время исполнения цикла программы равно Т = (0,125 × N)
мкс, где N - уставка таймера, загруженная в регистр RELOAD. Среднее время
исполнения команд определяется как tср = Т/К.

87
ЛИТЕРАТУРА
1. Шамров М.М. Архитектура и структурная организация микроконтролле-
ров семейства CORTEX-M. Методическое пособие к лабораторным работам на отладочных платах фирмы "Миландр". МИИТ, 2019г.
2. Демонстрационно-отладочная плата 1986EvBrd_64 ЗАО «ПКК Миландр».
2012
3. ARM® Compiler v5.06 for μVision. Version 5. Armasm User Guide. (ARM
DUI0379G), 2015г (вкладка BOOKS в окне менеджера проекта)
4. ARM® v7-M Architecture Reference Manual. 2006-2008, 2010 ARM Limited
(ARM DDI 0403D)
5. Спецификация микроконтроллеров серии 1986ВЕ9х, К1986ВЕ9х и
MDR32F9Qx. ЗАО «ПКК Миландр» 2012г.

88
Св. план 2020 г., поз.105
Шамров Михаил Иванович
Программирование микроконтроллеров семейства CORTEX-M
Учебное пособие
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
