PIC18 – System Arbitration

Views: 742


Системный арбитр.

Разрешает доступ к памяти между выборами уровнями системы (т.е. 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, а периферийное устройство требует:

  1. Доступ к программной флэш-памяти – периферийное устройство ожидает цикл инструкций, в котором процессор не нуждается в доступе к PFM (например, команда перехода) и использует этот цикл программы для выполнения собственного доступа к Flash Memory, если только не выполняется операция чтения/записи PFM.
  2. Доступ к SFR/GPR – периферийное устройство ожидает цикл команд, в котором процессор не нуждается в доступе к SFR/GPR (например, MOVLW, CALL, NOP) и использует этот цикл для выполнения собственного доступа к SFR/GPR.
  3. Доступ к 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");
}

 


Это может быть интересно


  • Защита датчиков температуры DS18B20 от статического электричестваЗащита датчиков температуры DS18B20 от статического электричества
    Views: 1988 Статья перепечатана с сайта http://svetomuzyka.narod.ru При удалении датчика на большие расстояния возникает опасность наведения импульсов высокого напряжения на кабель, который соединяет датчик с контролером. Если не принимать меры защиты, …
  • Стабилизатор тока для светодиодов SN3350Стабилизатор тока для светодиодов SN3350
    Views: 2764 SN3350 ближайший аналог ZXLD1350 Как собрать готовый вариант, читайте во второй части – http://catcatcat.d-lan.dp.ua/stabilizator-toka-na-sn3350-chast-2/ 40V  драйвер светодиодов с внутренним ключом  SN3350 – импульсный понижающий преобразователь, разработанный для того, чтобы эффективно управлять одним или …
  • AD9833 – Programmable Waveform GeneratorAD9833 – Programmable Waveform Generator
    Views: 3078 Простой генератор звуковых частот на AD9833. Для тестирования БПФ в светомузыке мне нужен был генератор звуковых частот. Я  использовал советский Г3-112, но он себя давно изжил.  Все думал купить …
  • Проект с использованием MCC часть 06Проект с использованием MCC часть 06
    Views: 1465 Изменим схему следующим образом добавим две тактовые кнопки BT1 и BT2. Теперь переключимся на конфигурацию выводов, для этого сделаем двойной клик в окне Ресурсы проекта на Pin Module. …
  • Цифровой спидометр для автомобиляЦифровой спидометр для автомобиля
    Views: 10311  Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например,  для …
  • Altium Designer first projectAltium Designer first project
    Views: 533 Эта статья подразумевает, что у вас установлен и настроен Altium Designer как описано в статье  Altium Designer my setup system and project structure.  Обратите внимание! Библиотека постоянно обновляется, …
  • Униполярный шаговый двигательУниполярный шаговый двигатель
    Views: 2465     В приводах различных устройств часто применяются шаговые двигатели, Шаговый двигатели различают двух типов униполярные – когда обмотки коммутируются током текущим только в одну сторону, например при …
  • Оптосимистор и его применениеОптосимистор и его применение
    Views: 20206 Эрве Кадино “Цветомузыкальные установки” Ответ на вопрос – управление мощным тиристором или симистором, от терморегулятора. Статья в pdf[wpdm_file id=129 template=”link-template-calltoaction3.php”] Оптосимистор принадлежат к классу оптронов и обеспечивают очень хорошую …
  • Самый простой диммер для светодиодного освещенияСамый простой диммер для светодиодного освещения
    Views: 3202 Светодиоды все больше входят в нашу жизнь как источники освещения и как само собой разумеющееся, это вопрос регулировки яркости. Существует множество схемных решений, но в нашем варианте мы …
  • Real-time music visualization technologyReal-time music visualization technology
    Views: 334 Music visualization technology in real time (RTMV-technology). Я не музикант і я не маю спеціальної музичної освіти, я інженер розробник вбудованих систем. Але моє хобі розроблення технології візуалізації …



 

Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Продолжайте читать

НазадДалее