ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
806337 Топик полностью
Argon (03.01.2018 19:31, просмотров: 281) ответил IBAH на пропуска не будет, т.к. флаги сбрасываются только ручками, все не как людей :)
Ой, не уверен... else if исключает проверку прочих событий в этом цикле, оставляя на потом. А что если скорость поступления всех событий высока и пока выполняется первый обработчик, пришло событие второго? Я бы вообще написал if(PIE1bits.TX1IE) if(PIR1bits.TX1IF) EUSART1_TxDefaultInterruptHandler(); if(PIE1bits.RC1IE) if(PIR1bits.RC1IF) EUSART1_RxDefaultInterruptHandler(); if(PIE4bits.TMR4IE) if(PIR4bits.TMR4IF) TMR4_ISR(); else { //Unhandled Interrupt } Здесь кроме того, что else if заменено на просто if, еще убрано и &&, т.е. проверка одновременной активности IE и IF, т.к. не нужна. У PICов такие блохи вполне могут влиять на результат, например, частотоизмерительных алгоритмов.