Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование микроконтроллеров семейства CORTEX-M. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
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
Учебное пособие
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]