PIC32MZ2048ECH144를 사용하고 있습니다. RH8 (핀 번호 81)과 RH9 (핀 번호 82)에 연결된 두 개의 스위치가 있습니다. MHC에서 핀 수준에서 인터럽트를 설정하는 옵션이 표시되지 않으므로 포트 -H에 대해 ISR이 생성됩니다. 각 핀을 별도로 호출하려면 ISR이 필요합니다. 는 따라서 "SYS_Initialize"에서 "system_init.c"함수 I는 다음 행을 첨가마이크로 칩 Harmony Configurator (MHC)를 사용하여 PIC32MZ2048ECH144의 동일한 포트에있는 2 핀용 ISR 매크로를 작성하는 방법은 무엇입니까?
PLIB_PORTS_PinChangeNoticePerPortEnable (PORTS_ID_0, PORT_CHANNEL_H, PORTS_BIT_POS_8); PLIB_PORTS_PinChangeNoticePerPortEnable (PORTS_ID_0, PORT_CHANNEL_H, PORTS_BIT_POS_9); "system_interrupt.c"에 MHC에 의해 생성
ISR이 :
void __ISR(_CHANGE_NOTICE_H_VECTOR, ipl3AUTO) _IntHandlerChangeNotification_PortH1(void)
{
PLIB_INT_SourceFlagClear(INT_ID_0,INT_SOURCE_CHANGE_NOTICE_H);
APP_SwitchChangeNoticed();
}
내가 아래 라인 위의 ISR 매크로 대체는 :
void __ISR(_ADC1_DATA22_VECTOR, ipl3AUTO) _IntHandlerChangeNotification_PortH1(void)
{
PLIB_INT_SourceFlagClear(INT_ID_0, INT_SOURCE_CHANGE_NOTICE);
APP_SwitchChangeNoticed();
}
void __ISR(_ADC1_DATA23_VECTOR, ipl3AUTO) _IntHandlerChangeNotification_PortH(void)
{
PLIB_INT_SourceFlagClear(INT_ID_0,INT_SOURCE_CHANGE_NOTICE_H);
test1();
}
이 작동하지 않았다. 나는 http://microchip.wikidot.com/faq:78 링크를 참조했다. "/pic32mx/include/proc/p32mz2048ech144.h"에서 ISR 매크로의 벡터 번호를 선택하는 것이 잘못되었습니다. (_ADC1_DATA22_VECTOR 및 _ADC1_DATA23_VECTOR는 81 및 82에 대한 값이 다시 작동하지 않는 핀 번호라고 생각했습니다.) 핀 레벨 인터럽트 (동일한 포트의 2 핀)를 설정하는 방법에 대한 도움말이나 도움이 정말 좋습니다! 내 게시물의 모든 실수에 대해 사과드립니다.
미리 감사드립니다.
인터럽트를 트리거 한 포트를 확인하려면 ISR 내부에서 플래그 레지스터를 확인하고 핀 특정 코드를 실행해야합니다 거기에서. – Lundin
나는 벡터 (_CHANGE_NOTICE_H_VECTOR)를 가진 ISR은 H 포트에 변화가있을 때만 트리거된다고 생각한다. 따라서이 경우 ISR 내부의 핀 특정 코드를 직접 사용할 수 있습니다. –