目次

FILO()

FILO()は後に保存した16ビットデータから順に出力します。

FILO コマンドの動作フロー

bool FILO(uint8_t filo_id, bool IN, bool OUT, uint16_t input, uint16_t &output, uint8_t size, bool reset = false)

コマンド

コマンド 引数 戻り値 動作
FILO(filo_id, IN, OUT, input, output, size, reset) uint8_t filo_id
bool IN — 立ち上がりエッジで入力を保存
bool OUT — 立ち上がりエッジで出力
uint16_t input — 保存するワード
uint16_t &output — 出力値を受け取る参照変数
uint8_t size — バッファサイズ
bool reset = false — バッファの初期化
bool 後に保存した16ビットデータから順に出力します。

使用例

シリアルモニタからaを送ると次の番号を保存し、pを送ると最後に保存した番号を取り出します。cでバッファを消去します。1文字ずつ送って動作を確認できます。

uint16_t nextNumber = 0;
uint16_t lastNumber = 0;
 
void setup() {
  Serial.begin(115200);
}
 
void loop() {
  if (!Serial.available()) return;
  const char action = Serial.read();
  const bool store = action == 'a';
  const bool retrieve = action == 'p';
  const bool clearBuffer = action == 'c';
  if (store) ++nextNumber;
 
  const bool ok = FILO(0, store, retrieve, nextNumber, lastNumber, 16, clearBuffer);  // 番号を保存し、取り出し信号で最後の番号を読み出します。
  FILO(0, false, false, nextNumber, lastNumber, 16, false);  // 次の文字でも立ち上がり信号を作れるよう入力をLOWに戻します。
  if (retrieve && ok) Serial.println(lastNumber);
  if (retrieve && !ok) Serial.println(F("Buffer empty"));
}

注意事項

INOUTCUCDは立ち上がり時に動作します。各カウンタ・バッファに固有のidを使用し、sizeは必要な範囲で小さく設定してください。

同じカテゴリの内蔵コマンド

← 内蔵コマンド一覧