バグ  †
- OpenSSM開発中に見つけた Microchip PIC24F Series に関するバグをメモしておきます
- すべて再現性がありますので、参考になると思います
もしかしたら Errataに書いてあるかもしれませんが... (^^;
割り込みルーチンに関して  †
- 低レベル優先度の割り込み関数実行中に上位優先度の割り込み関数が呼ばれると、低レベル優先度の割り込み関数がその後実行されなくなる
- この現象は、ほかの割り込み関数でも多発する
- OCxCONに関しては、毎回初期化しないといけない. こっちは仕様!?
 
- OK
void __attribute__((interrupt, auto_psv)) _OC4Interrupt(void)
{
    IFS1bits.OC4IF = 0;
    CVRCONbits.CVR = dac >> 4;
    OC4CON = 0b0000000000000001;
    return;
}  
- NG
void __attribute__((interrupt, auto_psv)) _OC4Interrupt(void)
{
    CVRCONbits.CVR = dac >> 4;
    OC4CON = 0b0000000000000001;
    IFS1bits.OC4IF = 0;
    return;
}