Arduino Nanoに基づいたユニバーサルDRO-shDRO。 パート2

こんにちは!

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。

データ処理は次のとおりです。


上記のロジックを実装するには、次のロジックモジュールがファームウェアに実装されます。


その結果、デバイスを接続するには、コンソールで以下が必要です。


コンソール

現時点では、ArduinoIDEポートモニターとターミナルv.1.9bでコンソールの動作を確認しました。 Puttyタイプの端末の場合、エコーモードを実装する必要があります(実装されていません)。

コマンド形式:

 <> </1> <_1> </N> <_N> 

1行あたりの引数の最大数は5です。

大文字小文字は関係なく、文字列が小文字に変換された後にコマンド解析が行われます(例外:引用符で囲まれた引数値)。

すべてのコマンドは、セットアップコマンドが発行された後にのみ実行されます(例外は、利用可能なすべてのコマンドのリストを表示するヘルプコマンドです)。

すべてのコマンドは、添付のアーカイブ、および16進形式のファームウェアの最初のバージョンに記載されています。

shDRO.zip(.hex +コマンドの説明)

ShDROソース

継続する。

よろしくお願いします!

PS
デバイスとチャネルの構成に関連するコマンドは、ストラップなしでベアarduinoに送信できます。

PS1
カザンに住んでいる人へのリクエスト。
あなたが持っている場合:

その後、数日間彼らにプロトコルを書いてデバッグするためにそれらを私に与えてもらえますか?
私は彼らを安全で健全な状態に保つことを約束します!
しかし、これは午後です。 事前に感謝します。

PS2
コマンド記述ファイルに2つのコマンドを追加するのを忘れていました。
-保存:チャネルとデバイスの設定をEEPROMに保存します。
-ロード:EEPROMからチャネルおよびデバイスの設定をアンロードします(ロードは初期化中に自動的に実行されます)。
ファイルを再アップロードするのではなく、念頭に置いてください。 ただし、「help」はこれらのコマンドを表示します。

Source: https://habr.com/ru/post/J446458/


All Articles