Views: 730
Системный арбитр.
Разрешает доступ к памяти между выборами уровнями системы (т.е. Main, Interrupt Service Routine) и выбором периферийных устройств (т.е. DMA и Scanner) на основе назначенных пользователем приоритетов. Каждый из уровней системы и периферийных устройств имеет свои собственные регистры выбора приоритетов. Приоритет доступа к памяти разрешен с использованием номера, записанного в соответствующие регистры приоритета, 0 – наивысший приоритет, а 4 – самый низкий приоритет. Приоритеты по умолчанию перечислены в таблице 3-1.
Если пользователь хочет изменить приоритеты, убедитесь, что каждый регистр приоритета написан с уникальным значением от 0 до 4.
| Приоритеты по умолчанию | ||||
| Выбор | Значение приоритета по умолчанию после сброса | Регистр | Примечание | |
| Системный уровень | ISR | 0 | SRPR | Система прерываний |
| MAIN | 1 | MAINPR | Процессор | |
| Периферийные модули | DMA1 | 2 | DMA1PR | Модуль DMA 1 |
| DMA2 | 3 | DMA2PR | Модуль DMA 2 | |
| SCANNER | 4 | SCANPR | Сканер памяти программы | |
PIC18(L)F24/25K42 SYSTEM ARBITER BLOCK DIAGRAM
Управления приоритетами.
Настройка приоритетов доступна, только когда бит PRLOCKED регистра PRLOCK не установлен. По умолчанию, после сброса изменения приоритет разрешено. Во время работы желательно запретить изменения приоритетов.
Для блокировки необходимо выполнить следующую последовательность:
// заблокировать изменение приоритета
asm("BCF INTCON0,7"); // запретить прерывания
// последовательность разрешения доступа
asm ("BANKSEL PRLOCK");
asm ("MOVLW 0x55");
asm ("MOVWF PRLOCK");
asm ("MOVLW 0xAA");
asm ("MOVWF PRLOCK");
asm ("BSF PRLOCK, 0"); // установить бит PRLOCKED
asm("BSF INTCON0,7"); // разрешить прерывания
Последовательность разблокировки имеет следующий вид:
// заблокировать изменение приоритета
asm("BCF INTCON0,7"); // запретить прерывания
// последовательность разрешения доступа
asm ("BANKSEL PRLOCK");
asm ("MOVLW 0x55");
asm ("MOVWF PRLOCK");
asm ("MOVLW 0xAA");
asm ("MOVWF PRLOCK");
asm ("BCF PRLOCK, 0"); // сбросить бит PRLOCKED
asm("BSF INTCON0,7"); // разрешить прерывания
Схема доступа к памяти
Пользователь может назначать приоритеты как системному уровню, так и периферийным устройствам, на основе которых системный арбитр предоставляет доступ к памяти. Рассмотрим следующие приоритетные сценарии между ISR, MAIN и периферийными устройствами.
Примечание. Всегда требуется, чтобы приоритет ISR был выше, чем главный приоритет.
ISR PRIORITY > MAIN PRIORITY > PERIPHERAL PRIORITY
Вариант когда приоритет периферии (DMAx, Scanner) ниже чем ISR и MAIN Priority, а периферийное устройство требует:
- Доступ к программной флэш-памяти – периферийное устройство ожидает цикл инструкций, в котором процессор не нуждается в доступе к PFM (например, команда перехода) и использует этот цикл программы для выполнения собственного доступа к Flash Memory, если только не выполняется операция чтения/записи PFM.
- Доступ к SFR/GPR – периферийное устройство ожидает цикл команд, в котором процессор не нуждается в доступе к SFR/GPR (например, MOVLW, CALL, NOP) и использует этот цикл для выполнения собственного доступа к SFR/GPR.
- Доступ к EEPROM данных – периферийное устройство получает доступ к EEPROM данных, если не выполняется операция чтения/записи данных в EEPROM.
Это приводит к минимальной пропускной способности периферийного устройства для доступа к памяти и выполняется этот доступ без какого-либо влияния на время выполнения основной программы.
PERIPHERAL PRIORITY > ISR PRIORITY > MAIN PRIORITY
Когда приоритет периферии (DMAx, Scanner) выше, чем ISR и MAIN Priority, работа процессора останавливается, когда периферийное устройство запрашивает память.
Процессор удерживается в остановленном состоянии до тех пор, пока периферийное устройство выполняет свою работу. Поскольку периферийное устройство запрашивает доступ к шине, периферийное устройство не может быть отключено, пока оно не завершит свою работу.
Это приводит к наивысшей пропускной способности периферийного устройства для доступа к памяти, но требует остановки другого процесса, во время возникновения события запускающего работу периферийного устройства (DMAx, Scanner).
ISR PRIORITY > PERIPHERAL PRIORITY > MAIN PRIORITY
В этом случае процедуры прерывания работы периферийных устройств (DMAx, Scanner) остановят процессор. Прерывания прерывает работу периферийного устройства (DMAx, Scanner) .
Это приводит к наименьшей задержке прерывания и максимальной пропускной способности периферии для доступа к памяти.
PERIPHERAL 1 PRIORITY > ISR PRIORITY > MAIN PRIORITY > PERIPHERAL 2 PRIORITY
В этом случае Peripheral 1 остановит работу процессора. Однако Peripheral 2 может получить доступ к памяти в циклах, не используемых Peripheral 1.
| Управление системным арбитром контролируется с помощью следующих регистров: | |||||||||
| Имя | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | Описание |
| ISRPR | – | – | – | – | – | ISRPR2 | ISRPR1 | ISRPR0 | Приоритет системы прерываний |
| MAINPR | – | – | – | – | – | MAINPR2 | MAINPR1 | MAINPR0 | Приоритет основной программы |
| DMA1PR | – | – | – | – | – | DMA1PR2 | DMA1PR1 | DMA1PR0 | Приоритет модуля DM1 |
| DMA2PR | – | – | – | – | – | DMA2PR2 | DMA2PR1 | DMA2PR0 | Приоритет модуля DMA2 |
| SCANPR | – | – | – | – | – | SCANPR2 | SCANPR1 | SCANPR0 | Приоритет для сканера |
| PRLOCK | – | – | – | – | – | – | – | PRLOCKED | Регистр блокировки настройки приоритетов |
Функция для настройки арбитража может быть выполнена следующим образом:
// настройка приоритета
void PRIORITY (uint8_t isrprre, uint8_t mainprre, uint8_t dma1prre, uint8_t dma2prre, uint8_t scanprre)
{
// разблокировать настройку приоритетов
asm ("BCF INTCON0,7");
asm ("BANKSEL PRLOCK");
asm ("MOVLW 0x55");
asm ("MOVWF PRLOCK");
asm ("MOVLW 0xAA");
asm ("MOVWF PRLOCK");
asm ("BSF PRLOCK, 0");
asm ("BCF INTCON0,7");
// система
// приоритет прерываний (приоритета приоритета обслуживания прерывания)
ISRPR = isrprre;
// приоритет выполнения программы (выбор приоритета основного режима)
MAINPR = mainprre;
// переферия
// приоритет модуля DMA1
DMA1PR = dma1prre;
// приоритет модуля DMA2
DMA2PR = dma2prre;
// приоритет сканера памяти
SCANPR = scanprre;
// заблокировать изменение приоритета
asm ("BCF INTCON0,7");
asm ("BANKSEL PRLOCK");
asm ("MOVLW 0x55");
asm ("MOVWF PRLOCK");
asm ("MOVLW 0xAA");
asm ("MOVWF PRLOCK");
asm ("BSF PRLOCK, 0");
asm ("BSF INTCON0,7");
}
Это может быть интересно
MPLAB® Harmony – или как это просто! Часть 2.Views: 2919 Часть вторая – Первая программа на PIC32. Музыкальная тема к статье, слушаем: Для начала изучения PIC32 надо иметь или демоплату или самому её изготовить имея микроконтроллер. Начнем из …
TDA7294 part 1Views: 464 TDA7294 має унікальні дані для створення підсилювачів звукової частоти HI-FI класу. Варіант застосування є конфігурація BRIDGE (мостова схема включення), де використовуються два TDA7294, як показано на схематичній діаграмі …
CAN – Controller Area NetworkViews: 1243 Controller Area Network (CAN) первоначально был создан немецким поставщиком автомобильных систем Робертом Бош в середины 1980-х для автомобильной промышленности как метод для обеспечения возможности надежной последовательной связи. Целью было сделать автомобили более надежными, …
12-BIT A/D CONVERTER WITH THRESHOLD DETECT на примере PIC24FJ128GA204Views: 928 Введение. 12-битный модуль A/D Converter является усовершенствованной версией 10-битного модуля, предлагаемого на некоторых устройствах PIC24. Оба модуля являются преобразователями, в своих ядрах, с последовательным приближением (SAR), в окружении …
Светодиоды со встроенным драйвером WS2812BViews: 1039 Производитель http://www.world-semi.com Краткое описание продукции фирмы Каталог продукции” catcatcat_ws_19 catcatcat_ws_15 catcatcat_ws_11 catcatcat_ws_07 catcatcat_ws_03 catcatcat_ws_18 catcatcat_ws_14 catcatcat_ws_10 catcatcat_ws_06 catcatcat_ws_02 catcatcat_ws_05 catcatcat_ws_09 catcatcat_ws_13 catcatcat_ws_17 catcatcat_ws_16 catcatcat_ws_12 catcatcat_ws_08 catcatcat_ws_04 catcatcat_ws_01 This jQuery …
The art of DJViews: 237 The art of DJ. The art of DJ has gained wide popularity. Today, a DJ is not just someone whose task is to mix tracks; a DJ is …
Мультизоновый индикатор-терморегулятор ch-c3010Views: 1331 Часто возникает необходимость получить информацию по температуре с множества точек контроля. Вам необходимо знать температуру в комнате, в коридоре, температуру на улице, а в погребе (или на балконе) …
WiFi ESP8266 – AT команды связанные с функцией TCP/IP (v.1.6.1)Views: 5326 AT команды связанные с функцией TCP/IP В этом разделе описаны команды которые позволяют устанавливать соединения между серверами и клиентами в сети. Приведено описание команд и примеры их выполнения. …
Одноканальный емкостной сенсор – AT42QT1012Views: 2433 Описание сенсора [wpdm_file id=242] Незаконченный проект, так-как сенсор не оправдал своего назначения, не рекомендую, просто выброшенные деньги. Особенности. • Количество сенсоров – один, режим переключения ( touch-on/touch-off ), а также программируемая …
APA102 – светодиоды со встроенным драйвером и SPI интерфейсомViews: 3490 APA102 В 2014 году фирма Shenzhen Led Color Optoelectronic Co., Ltd http://www.szledcolor.com/ начала производство светодиодов на драйвере APA102. Это серия так называемых светодиодов со встроенным драйвером. Основной особенностью этих …
