« | メイン | 試験中のゴミ記事 »

2017年5月17日 (水)

今日の一言

事故を起こしたエレベーターを例にすれば、籠を昇降させるモーターを動かす条件は…
(1)ドアが閉じてしまっている事
(2)行き先階が現在の階でない事
(3)地震センサーなどその他の条件がOKである事
他に条件はあるだろうけど、(1)はプログラムがバグってても守られなければならない事で、(3)の異常で籠の中に人が閉じ込められる「故障」とは全く質が異なる。
なんか話が逸れたがオレのようなシロウトでも、あのエレベーター事故は「とんでもなくおかしい」とわかる。

で、スイッチの反応は本家ウェブページにある,秋月のDDSキットの制御プログラムでも紹介した世界一速いスイッチ読み取りルーチン(自己申告)を割り込みプロシジャの中に埋め込んで、外部から参照する方式のため、早過ぎでオン/オフの状態継続回数判定の合間に100マイクロ秒のウェイトを入れた。ところが… danger ゲームクロック

写真は、5:31でゲームクロックが一時停止し、30秒ルールで11秒経過した状態。 明るい黄色がゲームクロックの一時停止表示、左の黄色は点滅していて30秒ルールのタイマー動作表示。

6m&ダウン コンテストから帰って来て移動の様子や釣り場のロケハンしてきた写真を別のブログにアップしてたのでプログラムの見直しが延び延びになっていたが、一応動作した。

割り込みプロシジャで四分の一秒の変数を更新し、主プログラム側(タイマー動作時)でポーリングして変数の変化が4回目を判断し(1秒経ったら)ゲームクロックや30秒タイマーを動かす仕組みにしている。
このため、スイッチのセンスが「4回目の判断」と重なって遅延され押されたという判定が遅れて、なんとなくギクシャクとのろまチックになるので改善した。

動作中に「動作」スイッチを押しながら「一時停止」スイッチを押す。
一時停止中に「一時停止」スイッチを押しながら「動作」スイッチを押す。
このような同時押しでクロックがフリーズするバグ。danger 30秒ルールの「開始」スイッチを

押すとき、その「解除」スイッチを押しながらだとフリーズ。
その逆の30秒タイマーカウント中に「開始」スイッチを押しながら「解除」スイッチを押すとフリーズ。
このような同時押しでもフリーズ。

原因はクロック・タイマーの動作・停止の状態遷移のため必ず違うスイッチを使う事にしていたが、スイッチの反応を早める改善の影響で状態が遷移した後も1つ前の状態でのスイッチが押下されたまま突っ走っていた。 これは各状態の先頭にそれ以前の状態で押したスイッチが放されるまで待つ処理でバグを回避した。

トラックバック

このページのトラックバックURL:
http://app.blog.bbiq.jp/t/trackback/394952/34061086

今日の一言を参照しているブログ:

コメント

コメントを投稿

コメントは記事の投稿者が承認するまで表示されません。

ウェブページ

アクセスランキング

フォトアルバム

最近のコメント

更新ブログ

最近のトラックバック

プロフィール

フォトアルバム

白鳥飯店

Powered by Six Apart
Member since 12/2008