ja-jp_commands:reference:fifo
FIFO()
FIFO()は先に保存した16ビットデータから順に出力します。
bool FIFO(uint8_t fifo_id, bool IN, bool OUT, uint16_t input, uint16_t &output, uint8_t size, bool reset = false)
コマンド
| コマンド | 引数 | 戻り値 | 動作 |
|---|---|---|---|
FIFO(fifo_id, IN, OUT, input, output, size, reset) | uint8_t fifo_id — バッファ識別番号bool IN — 立ち上がりエッジで入力を保存bool OUT — 立ち上がりエッジで出力uint16_t input — 保存するワードuint16_t &output — 出力値を受け取る参照変数uint8_t size — バッファサイズbool reset = false — バッファの初期化 | bool | 先に保存した16ビットデータから順に出力します。 |
使用例
シリアルモニタからiを2回送り、10と20を保存します。oを2回送ると10、20の順に出力されます。rでバッファを空にします。
uint16_t nextValue = 10; uint16_t removedValue = 0; void setup() { Serial.begin(115200); Serial.println(F("i: store, o: take, r: reset")); } void loop() { if (!Serial.available()) return; const char key = Serial.read(); const bool store = key == 'i'; const bool take = key == 'o'; const bool reset = key == 'r'; if (!store && !take && !reset) return; const bool ok = FIFO(0, store, take, nextValue, removedValue, 4, reset); // INまたはOUTの立ち上がり時に値を保存・取り出します。 FIFO(0, false, false, 0, removedValue, 4); // 次の入力でも立ち上がりを検出できるよう、INとOUTをOFFに戻します。 if (reset) { nextValue = 10; Serial.println(F("buffer cleared")); } else if (!ok) { Serial.println(F("buffer full or empty")); } else if (store) { Serial.print(F("stored: ")); Serial.println(nextValue); nextValue += 10; } else { Serial.print(F("taken: ")); Serial.println(removedValue); } }
満杯のバッファへの保存、空のバッファからの取り出しは失敗します。
注意事項
IN、OUT、CU、CDは立ち上がり時に動作します。各カウンタ・バッファに固有のidを使用し、sizeは必要な範囲で小さく設定してください。
同じカテゴリの内蔵コマンド
ja-jp_commands/reference/fifo.txt · 最終更新: by 127.0.0.1
