Микроконтроллеры | Ликбез по С для микроконтроллеров PIC |
|
---|---|---|
Sergey_Samara: Вообще как производить обработку нескольких прерываний для PIC |
|
|
AlexAlcoa: Очередность выбирается програмистом 1. Судя по приведённому выше фрагменту кода, разбором прерываний занимается сам css. т.е. программист предоставляет ему только обработчик конкретного прерывания. плюсы подобного подхода - простота использования, и сокрытие аппаратных тонкостей. минусы - увеличивается время входа в прерывание. 2. В других компиляторах (например HITECH или C18) разбор действительно возложен на программиста. Но. делать так: AlexAlcoa: несколько опрометчиво, т.к. наличие взведенного флага прерывания ещё ни о чем не говорит. Точнее говорит, конечно, что периферия жаждет внимания. Только вот периферия, взводя этот флаг, не интересуется, разрешены ли эти прерывания вообще. Правильнее писать так: if (RCIF && RCIE) (....); //Аналогично для остальных сигналов Повторяю, конкретно в CSS это, может быть, делает сам компилятор. |
|
|
rfc: И может сложиться такая ситуация, что неразрешенное прерывание INT взвело флаг INTF (переход по вектору при этом не произошел), а позже разрешенное RC взводит RCIF и переходит по вектору. И тогда, при проверке первого условия INTF=1 произойдёт обработка запрещенного прерывания, вместо ожидаемой обработки RCIF. По такому алгоритму делал таймер на pic628 в программе было 2а источника прерываний от INT и UARTа разбор реализовывал именно по этому принципу сначала от INT(первостепенно) затем от UARTа(второстерпенно) все замечательно работало. |
|
|
AlexAlcoa: Такой ситуации не должно быть т.к. пользователь должен проверять флаги только разрешенных прерываний, а не все подряд. Не совсем понял ход мыслей. Так работают 8 разрядные пики. приходит запрещённое прерывание - флаг взводится, приходит разрешенное, флаг взводится и переход на вектор происходит. А задача пользователя разобраться, как произошел переход. Для этого и ведется контроль по 2 битам IF и IE. AlexAlcoa: сначала от INT(первостепенно) затем от UARTа (второстерпенно) Это не относится ни к компилятору, ни к С. Это так процессоры эти сделаны. Просто у вас ситуации такой не сложилось. |
|
|
rfc: А теперь представьте, что вам понадобилось в реальном времени обрабатывать UART и вы временно запретили INT Эта задача однозначно заставляет контролировать разрешающий бит прерывания, согласен на 100%. |
|
|
AlexAlcoa: а проверка IE уже лишняя трата памяти. |
|
|
rfc: Проверка IE - хорошая привычка+1 |
|
|
AlexAlcoa: Привычки вырабатываются у каждого свои |
|
|
Не совсем удачное сравнение. |
|
|
AlexAlcoa: Не совсем удачное сравнение |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |