PIC32MZ2048ECH144 を使用しています。RH8 (ピン番号 81) と RH9 (ピン番号 82) に接続された 2 つのスイッチがあります。ピン レベルで割り込みを設定するオプションが MHC に表示されないため、ポート H 用に生成された ISR を取得します。各ピンの ISR を個別に呼び出す必要があります。したがって、「system_init.c」の「SYS_Initialize」関数に次の行を追加しました。
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 つのピン) を設定する方法に関するヘルプやヒントは本当に素晴らしいでしょう! 私の投稿に誤りがありましたことをお詫び申し上げます。
前もって感謝します。