/* Den Eingangspegel an FIFO_IN um 5 ms verzoegert an FIFO_OUZ ausgeben. http://www.mino-elektronik.de Alle Angaben ohne Gewaehr ! 2022-07-21 */ #define FIFO_LEN 5000 // 5000 * 1 µs #define FIFO_IN 0 // Pin0 #define FIFO_OUT 1 // Pin1 uint8_t fifo[FIFO_LEN]; uint32_t fifo_index; void setup() { pinMode(FIFO_IN,INPUT); pinMode(FIFO_OUT, OUTPUT); } void loop(void) { delayMicroseconds(1); // durch genaue Verzoegerung mit externen Takt oder internen Timer ersetzen digitalWrite(FIFO_OUT,fifo[fifo_index]); // verzoegerten Wert schreiben fifo[fifo_index] = digitalRead(FIFO_IN); // neuen Wert lesen if(++fifo_index >= FIFO_LEN) fifo_index = 0; // und wieder von vorne }