ステート マシンを再起動する方法を見つけるのに苦労しています。言い換えれば、私が持っているものの一部:
電源を入れると0.5秒のデバウンス時間の間留まり、ステートマシンに入るモジュールがあります。最初に文字列#anotherstring#を送信し、次に彼は一定期間のタイマーを開始し、タイマーが経過すると変換しますアナログ信号/データ (SPI、I2C) を読み取り、そのデータに続いて別の # を送信します。ステート マシンは戻ってタイマーを再起動し、データを再送信します ...
別のチップで。そのモジュールから情報を受け取ります。これは、最初の文字列、2 番目の文字列を完成させ、バッファ内の値を何度も累積するステート マシンです。
ある瞬間、外部デバイスがデータを要求し、チップが計算を行って送信する瞬間があります。
ここまでは順調ですね。モジュールが切断されたときの部分を除いて、これのすべての部分が機能しています。OK、データが送信されない問題はないと言うかもしれません。はい、これは本当ですが、モジュールが接続されている場合はどうなりますか。今までの作業をテストするために、チップの切断をリセットしてモジュールを接続しました。これにより、チップは最初の状態になり、モジュールは最初の状態から移行し、すべて問題ありません。
私の質問は、デバイスがチップから切断されたときにチップ統計マシンを再起動し、string#anotherstring# の組み合わせ (最初の状態) を待機する方法を決定する方法です。
もう 1 つの問題は、電源が落ちたのではなく、通信が切断されているかどうかを判断する方法です。通信を元に戻すときは、データを再度送信する必要があります。両方のモジュールが初期化状態から移行することが望ましいです。
私が念頭に置いているのは、チップからモジュールに ack を送信することです。しかし、正確な方法はわかりません。基本的に私はこれを望んでいます:モジュールが切断されると、その状態マシンは明らかに最初からやり直し、もう一度やりたいチップの状態は初期状態に戻ります。モジュールの通信が切断された場合、両方のステートマシンが最初からやり直す方法があります。
私はこれで明確かどうかわかりません。質問があればお願いします。何か見つけたら編集していきます。
その他の情報: モジュールとチップはいくつかのマイクロコントローラーであり、通信は UART です。