Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите настроить прерывание на PIC32
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
ZEbr
Настроил прерывание External
Код
INTConfigureSystem(INT_SYSTEM_CONFIG_SINGLE_VECTOR);

INTEnableInterrupts();

INTSetVectorPriority(INT_EXTERNAL_0_VECTOR,INT_PRIORITY_LEVEL_1);

INTClearFlag(INT_INT0);

INTEnable(INT_INT0,INT_ENABLED);



void __ISR(_EXTERNAL_0_VECTOR, ipl1) External0Handler(void)

{

if(PORTReadBits(IOPORT_D, BIT_1)==1)return;

    if(PORTReadBits(IOPORT_D, BIT_0)==1)



        {

          PORTWrite(IOPORT_E, BIT_5);

            if(Diagnost==0)

                {

                    PORTClearBits(IOPORT_E, BIT_1|BIT_5);

                }

            else

                {

                    PORTWrite(IOPORT_E, BIT_3);



                }

        }

    else

       {



                    ContrPWR();

                    PORTClearBits(IOPORT_E, BIT_5);

                        if(Diagnost==0)

                            {

                                PORTClearBits(IOPORT_E, BIT_1);

                            }

                                    



       }



INTClearFlag(INT_INT0);

}
.
Пытаюсь вызвать его, подаю 0 на ногу. Не работает sad.gif
Смотрел регистры прерываний все настроены правильно, но когда я подаю на ногу ноль регистр флага не устанавливает бит.
Попробовал в ручную в watch установть нужное значение регистра флага прерывания, и только тогда он вошол в обработчик прерываний.
Сигнал подаю на RD0.
Помогите пожалуйста разобраться.
Заранее спасибо!
volodya
Не помню на сколько критично - INTSetVectorSubPriority необходимо устанавливать.
vassabi
А разве порт на вход не нужно настраивать?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.