バグ

  • OpenSSM開発中に見つけた ECUや Microchip PIC24F Series に関するバグをメモしておきます
  • すべて再現性がありますので、参考になると思います
もしかしたら Errataなどに書いてあるかもしれませんが... (^^;

ECU : ACCオフのあとも通信できることがある

  • 通常は ACC電源をオフにすると ECUと通信できなくなるが、通信したまま ACC電源をオフにすると、ごく希にそのまま ECUと通信できることがある。
  • 再度、エンジンを始動するまでその状態が続く
恐らく ECUのバグ (^^;

PIC24F : 割り込みルーチンに関して

  • 低レベル優先度の割り込み関数実行中に上位優先度の割り込み関数が呼ばれると、低レベル優先度の割り込み関数がその後実行されなくなる
  • この現象は、ほかの割り込み関数でも多発する
  • 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;
    }