ユーザ用ツール

サイト用ツール


ja-jp_commands:reference:fifo

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
ja-jp_commands:reference:fifo [2026/09/08 00:53] – 바깥 편집 127.0.0.1ja-jp_commands:reference:fifo [2026/09/12 23:27] (現在) – 바깥 편집 127.0.0.1
行 14: 行 14:
  
 ===== 使用例 ===== ===== 使用例 =====
 +
 +シリアルモニタから''i''を2回送り、10と20を保存します。''o''を2回送ると10、20の順に出力されます。''r''でバッファを空にします。
  
 <code cpp> <code cpp>
-uint16_t fifoValue 0+uint16_t nextValue 10
-uint16_t filoValue = 0; +uint16_t removedValue = 0;
-uint16_t sequence = 0;+
  
 void setup() { void setup() {
   Serial.begin(115200);   Serial.begin(115200);
 +  Serial.println(F("i: store, o: take, r: reset"));
 } }
  
 void loop() { void loop() {
-  const bool store = Iup(0, IdigitalRead(0, 5));  // 入力を連続して複数回読み、すべて一致した場合のみ状態を更新します。HIGHとLOWが混在する場合は前の安定状態を保持します。 / 入力がOFFからONに変わる瞬間だけtrueを返します。 +  if (!Serial.available()) return
-  const bool release Iup(1, IdigitalRead(1, 5));  // 入力を連続して複数回読み、すべて一致した場合のみ状態を更新します。HIGHとLOWが混在する場合は前の安定状態を保持します。 / 入力がOFFからONに変わる瞬間だけtrueを返します。 +  const char key Serial.read(); 
-  const bool reset = IdigitalRead(2, 5);  // 入力を連続して複数回読み、すべて一致した場合のみ状態を更新します。HIGHとLOWが混在する場合は前の安定状態を保持します。+  const bool store = key == 'i'; 
 +  const bool take = key == 'o'; 
 +  const bool reset = key == 'r'; 
 +  if (!store && !take && !resetreturn;
  
-  if (store) ++sequence; +  const bool ok = FIFO(0, store, takenextValueremovedValue4, reset);  // INまたはOUTの立ち上がり時値を保存・取り出します。 
-  const bool fifoOk = FIFO(0, store, releasesequencefifoValue16, reset);  // に保存した16ビットデータからします。 +  FIFO(0, falsefalse0removedValue4);  // 次の入力でも立ち上がりを検出できるよう、INとOUTをOFFします。 
-  const bool filoOk = FILO(0, storereleasesequencefiloValue16, reset);  // 保存した16ビットデータから出力します。 + 
-  if (release && fifoOk && filoOk) { +  if (reset) { 
-    Serial.print(F("oldest=")); Serial.print(fifoValue); +    nextValue = 10; 
-    Serial.print(F(", newest=")); Serial.println(filoValue);+    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);
   }   }
 } }
 </code> </code>
 +
 +満杯のバッファへの保存、空のバッファからの取り出しは失敗します。
  
 ===== 注意事項 ===== ===== 注意事項 =====
ja-jp_commands/reference/fifo.1788796396.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki