реклама на сайте
подробности

 
 
> Помогите настроить прерывание на PIC32
ZEbr
сообщение Aug 29 2013, 12:30
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 2-12-10
Из: Воронеж
Пользователь №: 61 356



Настроил прерывание 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.
Помогите пожалуйста разобраться.
Заранее спасибо!

Сообщение отредактировал ZEbr - Aug 29 2013, 14:54
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 00:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016