GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
(1)にanalog.read()がある場合、コンパイルはできますが実行時にエラーが出ます。
(2)であれば動作します。割り込み先でanalog.read()を行うにはどのようにすればよいでしょうか。
#include "mbed.h"
AnalogIn ain(A0);Ticker timer;
int k=0;float val;void i_timer(){ val=ain.read(); //(1) k=1;}
int main() { timer.attach(&i_timer,1.0);
while(1) { if(k==1){// val=ain.read(); //(2) printf("%f\r\n",val); k=0; } }}
samさん
wait_us()関数はThread用関数ではありません。
以下のようにクラス指定なしでコールすると、コールできます。
void i_func()
{
float dat1,dat2;
dat1=a0.read();
wait_us(100);
dat2=a0.read();
}
ただし、wait_us()はその場で待ち続けるため、他のタスクが裏で動作しません。
・AD読み込みタスクでevent_flag待ちする。フラグが立ったらADを読んで、またevent_flag待ちに戻る
・Timerハンドラを定期的に呼び出し、ハンドラ内でevent_flagをセットする
という実装ではいかがでしょうか?
以下はmbed-os blinkyに上記機能を追加したmainc.cppです。
1307.main.zip
難しいのであれば、作成したソースを公開するとか考えていない場合、AnalogInのlock/unlockをコメントアウトしてしまうのが最も簡単です。