|
|||||||||||
Technical Support On-Line Manuals µVision4 User's Guide (Japanese) µVision4 の概要 ユーザインタフェース アプリケーションの作成 ユーティリティ デバッグ デバッグコマンド デバッグ関数 関数の作成 関数の呼び出し 定義済み関数 __acos __asin __atan __cos __exp __log __log10 __sin __sqrt __tan _RBYTE _RDOUBLE _RDWORD _RFLOAT _RWORD _sleep_ _TaskRunning_ _WBYTE _WDOUBLE _WDWORD _WFLOAT _WWORD exec getdbl getint getlong memset printf rand rwatch swatch twatch wwatch ユーザ関数 シグナル関数 µVision4 と C の相違点 シミュレーション フラッシュプログラミング ダイアログ サンプルプログラム コマンドライン 付録 |
シグナル関数シグナル関数を使用すると、µVision4 でターゲットプログラムを実行している間、バックグラウンドでシグナル入力やパルスなどの操作を繰り返すことができます。シグナル関数を使用すると、シリアル I/O、アナログ I/O、ポート通信、およびその他の外部反復イベントのシミュレートおよびテストを行うことができます。 µVision4 でターゲットプログラムをシミュレートしている間、バックグラウンドでシグナル関数が実行されます。したがって、シグナル関数はµVision4 でターゲットプログラムを実行するために、ある時点で twatch 関数を呼び出し、遅延する必要があります。µVision4 は、twatch を呼び出さないシグナル関数に対してエラーを報告します。 注
シグナル関数は SIGNAL キーワードで始まり、次のように定義されます。 SIGNAL void fname (parameter_list) { statements }
例次の例は、1,000,000 CPU ステートごとに 1 回ずつシリアル入力バッファに文字「A」を入力するシグナル関数を示しています。詳細については、「関数の作成」を参照して下さい。 SIGNAL void StuffS0in (void) { while (1) { S0IN = 'A'; twatch (1000000); } } この関数を呼び出すには、[コマンド](Command)ウィンドウに次のように入力します。 StuffS0in() StuffS0in シグナル関数を呼び出すと、ASCII 文字「A」がシリアル入力バッファに入力され、1,000,000 CPU ステートだけ遅延して、このプロセスが繰り返されます。 制約シグナル関数には次のような制約があります。
シグナル関数の管理µVision4 は、アクティブなシグナル関数のキューを維持します。シグナル関数はアイドル状態または実行中のいずれかです。twatch の呼び出しで指定された CPU ステート数が期限切れになるのを待つ間、アイドル状態のシグナル関数は遅延します。実行中のシグナル関数は、関数内でステートメントを実行しています。 シグナル関数を呼び出すと、µVision4 によってその関数がキューに追加され、実行中とマークされます。シグナル関数は 1 回しか有効化できません。関数が既にキューにある場合は警告が表示されます。コマンド SIGNAL STATE を使用すると、アクティブなシグナル関数の状態を表示できます。コマンド SIGNAL KILL を使用して、キューからアクティブなシグナル関数を削除します。 シグナル関数が twatch 関数を呼び出すと、twatch に渡された CPU ステート数だけアイドル状態になります。ユーザプログラムが指定数の CPU ステートを実行した後、シグナル関数は実行中になります。twatch の後のステートメントで実行が続けられます。 戻りステートメントのためにシグナル関数が終了すると、アクティブなシグナル関数のキューから自動的に削除されます。 アナログの例次の例は、C167 で入力をアナログ入力 0 に変えるシグナル関数を示しています。この関数は、0V とシグナル関数の唯一の引数として指定された上限の間で、0.5V ずつ入力電圧を増加または減少させます。このシグナル関数は無限に繰り返され、各電圧ステップで 200,000 ステート遅延します。 signal void analog0 (float limit) { float volts; printf ("Analog0 (%f) entered.\n", limit); while (1) { /* forever */ volts = 0; while (volts <= limit) { ain0 = volts; /* analog input-0 */ twatch (200000); /* 200000 states Time-Break */ volts += 0.1; /* increase voltage */ } volts = limit; while (volts >= 0.0) { ain0 = volts; twatch (200000); /* 200000 states Time-Break */ volts -= 0.1; /* decrease voltage */ } } } シグナル関数 analog0 は次のようにして呼び出すことができます。 >ANALOG0 (5.0) /* Start of 'ANALOG()' */ ANALOG0 (5.000000) ENTERED SIGNAL STATE コマンドは、analog0 の現在の状態を表示します。 >SIGNAL STATE 1 idle Signal = ANALOG0 (line 8) µVision4 によって、内部関数番号、シグナル関数の状態(アイドル状態か実行中)、関数名、および実行している行番号がリストされます。 シグナル関数がアイドル状態なので、analog0 が twatch 関数を実行し(analog0 の 8 行目)、指定された CPU ステート数が経過するのを待機していると推察できます。200,000 ステートが経過すると、analog0 は 8 行目または 14 行目で twatch が次に呼び出されるまで実行を続けます。 次のコマンドは、analog0 シグナル関数をアクティブなシグナル関数のキューから削除します。 >SIGNAL KILL ANALOG0 | ||||||||||
|
Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.