Views: 749
Системный арбитр.
Разрешает доступ к памяти между выборами уровнями системы (т.е. 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");
}
Это может быть интересно
Проект с использованием MCC часть 09Views: 1071 Эта часть будет посвящена созданию практического проекта управления освещение. Тех задание: Два выхода управления ШИМ – светодиодным освещением. Две кнопки управления, каждая кнопка управляет, своим каналом, логика самая …
My libraries for Altium DesignerViews: 4478 Attention, this version of the database is outdated today. See updates in articles https://catcatcat.d-lan.dp.ua/altium-designer-my-setup-system-and-project-structure and https://catcatcat.d-lan.dp.ua/altium-designer-my-setup-system-and-project-structure-v23-2/ My libraries for Altium designer (Updated V – 29/05/2022) (c) 2021 …
Проект с использованием MCC часть 10Views: 1114 Алгоритм управления освещением от нажатия кнопки. Обработка удержания кнопки: Мы должны проверить кнопка в настоящий момент нажата и флаг удержания установлен, если да Проверить таймер удержания “отработал” – …
Проект с использованием MCC часть 13Views: 1261 Так как используя MCC мы можем его использовать со своими библиотеками, поэтому настало время и свое создать. Для начала откроем наш заголовочный файл в нем очень много букв: По …
Система AT команд версии V2.0 для ESP8266 и ESP32Views: 13812 Появление нового модуля на базе ESP32 заставило систематизировать систему AT команд, а так же систему обновления и для модулей на базе ESP8266. Начиная с версии v2.0 в ESP8266 …
Стабилизатор тока на SN3350, часть 2Views: 1359 Если вам необходимо разработать устройство с применением мощных светодиодов, то никак не обойтись без применения стабилизатора тока. На настоящий момент стабилизаторы тока являются самым эффективным механизмом, для питания светодиода в течение всего …
LED модуль P10C4V12Views: 3324 LED панели на обычных регистрах типа 74HC595. Они выпускаются как монохромные так двух и полно цветные, особенность, что они предназначены для текстовой информации и имеют один уровень яркости. Общую яркость …
TM1650 драйвер LED семисегментного индикатораViews: 18503 UPDATES 2025/10/10 Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd. Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов …
Проект с использованием MCC часть 11Views: 1031 Можно несколько облагородить программу вынести наши процедуры обработки нажатия кнопок в отдельные функции. Но вы должны понимать, что это хоть и не значительно, но будет тормозить общую скорость …
Altium Designer my Libraries, Project templates, System settings by Catcatcat. V26.0Views: 303 Altium Designer my Libraries, Project templates, System settings by Catcatcat. V26.0 Here I want to share how I configure Altium Designer and how I use the DXPPreferences1.DXPPrf …
