Features under Test =================== Feature under test `FUT_TIMER` ------------------------------ * Test proposals * Clock dividers, timers * stimuly: `TENTACLE_MCU` generates pulse or PWM on `SIGNAL_TRIGGER1/2`. * expected: `TENTACLE_DAQ_SALEAE` verifies this pulse. Feature under test `FUT_I2C` ---------------------------- * Electrical setup * Exacly one `TENTACLE_MCU` connects to `SIGNAL_DATA1/2`. * Exactly one `TENTACLE_DEVICE_POTPOURRY` connects to `SIGNAL_DATA1/2`. This tentacle must provide the I2C pull ups. * Test proposals * Datatransfer * stimuly: `TENTACLE_MCU` acts as a I2C-controller and the `TENTACLE_DEVICE_POTPOURRY` as a I2C-target. * expected: meaningful data * Errors * See comments below Feature under test `FUT_UART` ----------------------------- * Electrical setup * Exacly one `TENTACLE_MCU` connects to `SIGNAL_DATA1/2` and `SIGNAL_TRIGGER1/2`. * The TX pin of `TENTACLE_MCU` / `TENTACLE_DEVICE_POTPOURRY` requires a serial 1k resistor. This allows the `TENTACLE_DAQ_SALEAE` to destroy the signal. * Exactly one `TENTACLE_DEVICE_POTPOURRY` connects to `SIGNAL_DATA1/2`. * Test proposals * Timing test sequence: * stimuly: * `TENTACLE_MCU`: `SIGNAL_TRIGGER1` low->high * `TENTACLE_MCU`: `SIGNAL_DATA1` send 3 characters * `TENTACLE_MCU`: `SIGNAL_TRIGGER1` high->low * expected: * This tests allows various timing aspects. For example [uart.flush()](https://github.com/micropython/micropython/issues/13377) * variants: * Test hardware UART vs software UART. * Test syncio vs asyncio. * Errors * See comments below Feature under test `FUT_ONEWIRE` -------------------------------- * Electrical setup * Exacly one `TENTACLE_MCU` connects to `SIGNAL_DATA1`. * Exactly one `TENTACLE_DEVICE_POTPOURRY` connects to `SIGNAL_DATA1`. This tentacle must provide the onewire pull up. * Test proposals * OneWire scan without response * stimuly: `TENTACLE_MCU`: scan for sensors. No sensor is connected by opening the ONEWIRE relay and closing the I2C-SCL relay. * expected: No response after some timeout. * OneWire scan * stimuly: `TENTACLE_MCU`: scan for sensors. * expected: 2 sensors found. * OneWire communication * stimuly: `TENTACLE_MCU`: reads serial number from one sensors. * expected: serial number * OneWire communication with error * See comments below Feature under test `FUT_I2C/FUT_UART/FUT_ONEWIRE`: Communication errors ----------------------------------------------------------------------- * Test proposals * Recovering from errors * stimuly: I2C/UART/ONEWIRE communication. Now `TENTACLE_DAQ_SALEAE` tentacle overrides `SIGNAL_DATA1/2` to provoke errors. * expected: Error and recover. * challenge * How to introduce errors without introducing flakyness? * How to provoke data integrity errors (CRC)? * How to provoke protocol errors (timeouts, start/stop bit missing)? How to electrically override `SIGNAL_DATA1/2`: * I2C/ONEWIRE: `SIGNAL_DATA1/2` are pulled up. `TENTACLE_DAQ_SALEAE` may just override these outputs. * UART: The TX-signals outputs have low impedance. A serial 1k resitor is added (see `TENTACLE_MCU_x`/`TENTACLE_DEVICE_x`) which then allows `TENTACLE_DAQ_SALEAE` to override both TX-signals.