こんにちは!
shDROの開発について引き続き説明します。 このパートでは、デバイスポーリングアルゴリズムとコンソールコマンドの形式について説明します。
最初の部分。ファームウェアリーダーを接続できるチャネル/ポートの数は12であり、各チャネルは理論的に割り込みに設定できるため、2つのPCINT割り込みハンドラが使用されます(ポートDおよびC用)。 これは、接続に関する1つの制限を意味します。入力用に構成されたデバイスのすべての出力は、1つのグループのチャネルに接続する必要があります。 チャネルが出力用に構成されている場合、現在のデバイスに対して、どのグループに属しているかは関係ありません。 グループ:group1(チャンネル0-5)、group2(チャンネル6-11)。
割り込みハンドラーには、それぞれ256バイトの2つのリングバッファーが使用されます。
割り込みハンドラコードは次のとおりです。
buf[pos] = DATA_N; pos++;
ここで、DATA_Nはポートの1つです:PIND、PINC。
データ処理は次のとおりです。
- 中断が発生すると、新しいポート値がバッファに書き込まれます。
- バッファは定期的にポーリングされ、最後のポーリング後に表示されたデータがそこから読み取られます(最後のポーリングのバッファの位置はデバイス構造に保存されます)。
- 新しいデータを読み取るプロセスでは、チャネルに設定された割り込みレベルが現在のポートデータと比較されます。 割り込みレベルが一致しない場合、データは無視されます。
- 処理するすべてのデータが受け入れられたことを確認します(たとえば、BIN6プロトコルの場合は24ビットを受信する必要があります)。
- データは「読み取り可能な」形式で処理され、処理されたデータは画面に表示されます。
- その後、プロセスが繰り返されます。
上記のロジックを実装するには、次のロジックモジュールがファームウェアに実装されます。
- デバイス:モジュールには、接続された1つのデバイスに関するすべての情報が含まれます。 接続されたデバイスごとに、そのようなモジュールが作成されます。
- プロトコル:モジュールには、プロトコルに関する情報と、この交換プロトコルに従ってポートに到着する信号の処理方法が含まれています。
- 機能:モジュールには、プロトコルモジュールから受信したデータを変換する方法に関する情報が含まれています。 たとえば、直交信号をサポートするプロトコルモジュールがありますが、直交信号を発行するデバイスは異なる場合があります。光学ルーラーまたは速度センサーなどです。 つまり ある場合には、データをmmまたはインチに変換する必要があり、別の場合はrpmに変換する必要があります。 このモジュールはこれを行うだけです。
- Led:インジケーターに関する情報を表示するモジュール。 shDROには4つのインジケータが含まれており、各デバイスに必要な表示インジケータが設定されています。
その結果、デバイスを接続するには、コンソールで以下が必要です。
- 目的のチャネルを構成します。
- デバイスを追加します。
- デバイスセットのプロトコル、機能、LEDの場合。
- 必要なチャネルをデバイスに追加/バインドします。
コンソール現時点では、ArduinoIDEポートモニターとターミナルv.1.9bでコンソールの動作を確認しました。 Puttyタイプの端末の場合、エコーモードを実装する必要があります(実装されていません)。
コマンド形式:
<> </1> <_1> </N> <_N>
1行あたりの引数の最大数は5です。
大文字小文字は関係なく、文字列が小文字に変換された後にコマンド解析が行われます(例外:引用符で囲まれた引数値)。
すべてのコマンドは、セットアップコマンドが発行された後にのみ実行されます(例外は、利用可能なすべてのコマンドのリストを表示するヘルプコマンドです)。
すべてのコマンドは、添付のアーカイブ、および16進形式のファームウェアの最初のバージョンに記載されています。
shDRO.zip(.hex +コマンドの説明)ShDROソース継続する。
よろしくお願いします!
PS
デバイスとチャネルの構成に関連するコマンドは、ストラップなしでベアarduinoに送信できます。
PS1
カザンに住んでいる人へのリクエスト。
あなたが持っている場合:
- プロトコルに従って動作するデジタルキャリパー:24BIT、BCD7。
- iGagingデジタルルーラー(21BITプロトコル);
その後、数日間彼らにプロトコルを書いてデバッグするためにそれらを私に与えてもらえますか?
私は彼らを安全で健全な状態に保つことを約束します!
しかし、これは午後です。 事前に感謝します。
PS2
コマンド記述ファイルに2つのコマンドを追加するのを忘れていました。
-保存:チャネルとデバイスの設定をEEPROMに保存します。
-ロード:EEPROMからチャネルおよびデバイスの設定をアンロードします(ロードは初期化中に自動的に実行されます)。
ファイルを再アップロードするのではなく、念頭に置いてください。 ただし、「help」はこれらのコマンドを表示します。