PIC32MZ – прерывания (заметки)

Visits: 434


Виды формирования запоминая контекста при входе в прерывания.

Компилятор представляет три варианта

AUTO – когда запоминания места возврата из подпрограммы возложено на программу, т.е все создается программно. Этот метод является самым меленным.

SRS – это когда для всего этого используется теневые регистры (самый быстрый способ), все происходит на аппаратном уровне и пользователь может может указать вот это прерывание выполнять быстро.

SOFT – когда выбор возлагается на компилятор и компилятор сам определяет возможность использовать SRS или когда вставлять макрос обработки.

Если с AUTO и SOFT – проблем не предвидеться, то для использования теневых регистров необходимо понимать, что делаем.

  1. Для управления механизмом SRS  предназначен регистр PRISS. В этом регистре можно выбрать возможность использования для каждого уровня приоритета механизма SRS. В битах PRI1SS – PRI7SS мы можем установить на каком уровне будет работать механизм SRS в выбрано приоритете. По умолчанию все значения равны нулю это значит, что механизм не используется. Если необходимо, например, для приоритета 6 использовать механизм SRS, то значение должно быть отлично от нуля. Значение может быть в пределах 1-7, это уровень приоритета для вызова механизма SRS. Например установит его на 6.
  2. Далее, нам, необходимо обрабатывать прерывания от DMA, канал 1. Мы установит уровень его приоритета 6 (субприоритет 3).
  3. Для вызова прерывания будем использовать описание функции в таком виде void __ISR (_DMA1_VECTOR, IPL6SRS) __DMA1Interrupt (void)

Настройка PRISS

    PRISSbits.PRI6SS = 6;

Настройка прерываний модуля DMA, канал 1

    IPC33bits.DMA1IP=6;     // 6 уровень приоритета
    IPC33bits.DMA1IS=1;     // субприоритет 1
    IFS4bits.DMA1IF=0;      // сбросить флаг прерывания
    IEC4bits.DMA1IE=1;      // разрешить прерывание

Описание функции обработки прерывания

void __ISR (_DMA1_VECTOR, IPL6SRS) __DMA1Interrupt (void)
{

……


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


  • Применение typedef, struct и unionПрименение typedef, struct и union
    Visits: 8677 Полезные описания переменных Часто необходимо в памяти расположить последовательно разные виды данных, что бы потом можно было их использовать. Полезные ссылки Взято и переработано с сайта http://www.butovo.com/~zss/cpp/struct.htm http://cppstudio.com/post/9172/ …
  • Мониторинг температурыМониторинг температуры
    Visits: 1345 Настоящий проект создан как обучающий с применением библиотек ds18b20 и LCDHD44780 и компилятора Microchip MPLAB XC8 C Compiler V1.12. Если необходимо иметь информацию по состоянию температуры в помещении или в здании, с количеством до 6 точек (16), то …
  • Цифровой спидометр для автомобиляЦифровой спидометр для автомобиля
    Visits: 10124  Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например,  для …
  • Toyota Auto Fader – Модуль включения усилителяToyota Auto Fader – Модуль включения усилителя
    Visits: 1893 Toyota Auto Fader – Модуль включения усилителя. Часто автолюбители прибегают к замене штатного головного устройства на универсальное мультимедийное, в котором значительно расширены функциональные возможности. Если возникает желание оставить …
  • VU Meter Tower ARTVU Meter Tower ART
    Visits: 1569 Стерео индикатор уровня аудио сигнала. Компактность и удобство проектирования устройств на светодиодах WS2812B, а также легкость реализации алгоритма родило идею созданию своей конструкции. В этом проекте я предоставлю …
  • Стробоскоп для автомобиляСтробоскоп для автомобиля
    Visits: 2132 Одним из популярных решений светового тюнинга автомобиля, мотоцикла или скутера стал эффект –  “полицейский стробоскоп“. На база платы ch-c0050 реализовано несколько проектов. В этой статье приводятся две версии …
  • Часы-кухонный таймерЧасы-кухонный таймер
    Visits: 3855 Каждая кухня должна иметь кухонный таймер, который позволяет напоминать хозяйке когда проходить определенный промежуток времени. Например, печем пирог, варим яйца… , чтобы не смотреть постоянно на часы, установим таймер и …
  • Altium Designer – создание рисунков на печатной платеAltium Designer – создание рисунков на печатной плате
    Visits: 3209   Для создание рисунков на печатной платы в Altium Designer можно использовать возможность использовать в Altium Designer сторонних скриптов. Мне возможность эта очень понравилась и я решил её расшарить …
  • HVLD модуль на примере PIC24FJ128GA204HVLD модуль на примере PIC24FJ128GA204
    Visits: 606 HVLD модуль представляет собой простое устройство, для контроля напряжения питания микроконтроллера или внешнего напряжения (через делитель). Его задача при “выходе” напряжения за заданные пределы сформировать сообщение микроконтроллеру, что …
  • TDA7294 part 2TDA7294 part 2
    Visits: 191 Це друга частина проекту TDA7294, початок дивись тут. Тут ви знайдете повністю проект високоякісного підсилювача на TDA7294, схема, 3D моделі, гербер файли для виготовлення друкованої плати. І звичайно …



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

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

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

НазадДалее