16+
Понедельник
23 июля
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Микроконтроллеры PIC

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
Argon  (03.01.2018 19:31) , в ответ на пропуска не будет, т.к. флаги сбрасываются только ручками, все не как людей :) автор: 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ов такие блохи вполне могут влиять на результат, например, частотоизмерительных алгоритмов.
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7526 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII