仕事で組み込み系のプログラムをしています。現在困っている現象に出くわしてしまいました。
【現象】
外部割込み機能として設定した入力ピンにチャタリングノイズが発生した場合に外部割込み関数が誤って反応してしまう。
<詳細>
マイコン(stm32f4シリーズ)のPA4に入ってくる信号が立ち下がりエッジと立ちあがりエッジのときに、外部割込み関数が動作して処理を行うようにしている。
【やりたいこと】
正しく立ち上がり/立ち下がりエッジが入力されたときのみ処理ルーチンを実行したい(下記コード参照)。ノイズによって割り込み関数が働いたとしても、そのときは処理ルーチンを実行したくない
コード:
/*外部割込み関数*/
EXTI4_IRQ_handler(){
clearFlg(PA4); //割り込みフラグのクリア
/*
処理ルーチン
*/
}
どなたか、こういった対策した方はいないでしょうか。今自分が考えているのは下記のようなものです。
電圧レベルを2回チェックして2回ともへんかなければ、正しい信号とする処理
コード:
/*外部割込み関数*/
EXTI4_IRQ_handler(){
clearFlg(PA4); //割り込みフラグのクリア
for(i = 0;i++i<1){
if(PA4の電圧レベルがLowなら){
LowCnt++;
}
else
{
HighCnt++;
}
}
if(LowCnt > 1 or HighCnt >1){
/*処理ルーチン*/
LowCnt = 0;
HighCnt = 0;
}
}