случае, если при выполнении прерывания с низким приоритетом возникло прерывание с более высоким приоритетом, тогда прерывание с более высоким приоритетом начнёт работу после окончания работы прерывания с более низким? Просто у меня почему-то в голове крутилось, что более приоритетное прерывание вытеснит. Просто на с2000 если уж сработало прерывание, то оно доработает
сразу перейдет на высокоприоритетное прерывание
уверены? Просто я почему-то думал, что на tms320 так же, в ручном режиме вызвал прерывание и впихнул бесконечный цикл, и не выходит из него. Немного опечален даже
там есть групповой приоритет и приоритет внутри группы, на сколько помню вытеснений только между группами работает
а этл как у тебя настроено. По умолчанию прервет, если приоритеты правильно настроены. Но можно сделать чтобы и не прерывало. Запретить прерывания внутри и тогда не прервет
читани штоли доку по нужному ядру. В разделе NVIC nested vector interrupt controller
они железно стоят, во всяком случае я не нашёл способ перенастроить, скорее всего ручками что-то глубоко надо изменять
то что стоит, это хорошо :) Ты же про арм писал, если я внимательно читал
я сделал следующий эксперимент. Есть в таблице прерываний прерывание без группы. Я через асм команду TRAP вызвал самое низкоприоритетное прерывание 19, в нём впихнул бесконечный цикл и ждал апаратного прерывания от ШИМ с значительно более высоким приоритетом. И никуда не ушло из бесконечного цикла
просто интересно было как у st, т.к, похоже, мой таракан именно из-за того, что я читал просто статью когда-то давно, в которой скорее всего обращалось внимание именно на st шный камень
эм. а вы точно приоритет поставили, а не саб-приоритет просто звучит немного странновато
просто смысл тогда прерываний?
ну раньше я не задумывался, т.к были основные события, которые аппаратно должны были вызываться когда надо. А сейчас я подумал о том, что было бы неплохо сделать что-то вроде отложенных малоприоритетных событий через прерывания. Допустим у меня есть жестко фиксированное событие с частотой в 1 кгц, и есть так себе события с частотой 1 кгц, которые можно было бы выполнить и по позже. Это можно было бы и флагом сделать, а можно было бы через очень низкоприоритетное прерывание, тем самым дав этому событию приоритет выше, чем приоритет основного цикла
на С2000 могут быть вложенные прерывания
что значит "вложенные прерывания"?
это то что ты описал вначале
Наскеолько я помню, прерывания дорабатывали до конца всегда. но после выхода из прерывания по приоритету определялось, куда дальше пойдёт
ну значит, при обработке одного прерывания свалиться в исполнение другого. Леонид правильно подсказывает, нужно после входа в обработку прерывания где-то установить флажок, разрешающий прерывания. В С2000 при входе в обработчик прерывания запрещаются
ну все верно, ставишь максимальный приоритет на "важные по времени события" а на менее важные ставишь более низкий приоритет, если прилетает с более низким оно встановится в очередь за более приоритетным
Обсуждают сегодня