Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
御世話様でございます。
基本的なことかも知れませんが、御知恵を拝借したく投稿させて頂きます。
 
 
 
 
現在ある用途向けにLPC1768を用いた計測システムを試作しております。その過程で上位側機器とのロジックを模擬する為にスイッチにてON/OFF(PullUp)の状態を入力しておりますが、InterruptInにおいて「入力していないCHのInterruptInが反応してしまう」という事象が見られ困惑しております。再現性を見る為に周辺機器をそぎ落として再現された最小構成は以下の通りです(USBで電源供給&TeraTermでデバッグ)。
この構成において、以下のソースコードを実行致しました(Source:InterruptInの異常?)が、スイッチに入力しているCHでないCHの割り込みの発生が時折発生していることが確認され、原因の特定が出来ずに困っております。
オシロで確認致しましたが、発生するはずのないCHにトリガを設定してサンプリングを試みましたが、H(2.3V付近)の電圧が1.5V程度まで低下する症状が見られましたが(これも異常な感は多少ありますが)、Lの閾値である0.8Vまで下がるなどの事象は観測されませんでした。
チャタリングは当然のごとく発生しておりますがその点は問題ではなく(対策等ももちろん存じております)、「チャタリングが発生した際に、他の割り込みが発生する原因が不明」な所が非常に気に掛かっております。
Farmwareは最新版に更新しましたが変化なし、mbedは最新リリースを用いております。
何か見落とし、不手際等思い当たる節が見受けれましたが御指摘頂けると幸いです。
宜しくお願い致します。
~
yamyam
InterruptInの異常?
#include "mbed.h" char *bin8(int bin); //mbed NXP LPC1768 development board InterruptIn startsignal(p29); InterruptIn s0signal(p30); InterruptIn s1signal(p28); //--- int bit_status; //--- void start_trigger_rise() { bit_status = bit_status | 1; } //--- void start_trigger_fall() { bit_status = bit_status | 2; } //--- void s0_trigger_rise() { bit_status = bit_status | 4; } //--- void s1_trigger_rise() { bit_status = bit_status | 8; } //--- main --- int main() { int flag; //--- startsignal.mode(PullUp); s0signal.mode(PullUp); s1signal.mode(PullUp); //--- startsignal.rise(&start_trigger_rise); startsignal.fall(&start_trigger_fall); s0signal.rise(&s0_trigger_rise); s1signal.rise(&s1_trigger_rise); //--- while(1) { wait_us(1.0); if(bit_status!=0) { printf("bit>> %s\n",bin8(bit_status)); bit_status = 0; } } } //--- char *bin8(int bin) { static char result[10]; int i1; result[8] = '\0'; for(i1 = 0; i1 < 8; i1++){ if(bin % 2 == 0) result[(8-1)-i1] = '0'; else result[(8-1)-i1] = '1'; bin = bin / 2; } return(result); }