INPUT_PULLUP / INPUT_PULLDOWN had no effect in simulation: the ESP32's internal pull resistors live inside QEMU and were invisible to the SPICE solver, so an input wired to a button-to-GND floated to 0 V and read LOW even at idle. The canonical active-low button never worked. Read the pull config straight out of the running guest: the IO_MUX register (FUN_PU bit 8 / FUN_PD bit 7) is already exposed read-only via qemu_picsimlab_get_internals(3), so no QEMU rebuild is needed. The worker scans it on the 100 ms poll thread and emits gpio_pull; the bridge feeds it to PinManager; the netlist stamps a weak 45k resistor to the rail so idle inputs read the correct level. 45k matches the real internal pull and is weak enough that any external driver/pull dominates. Verified with ngspice: idle ~3.3 V (HIGH), pressed ~0 V (LOW). |
||
|---|---|---|
| .. | ||
| customChips | ||
| digital | ||
| displays | ||
| parts | ||
| spice | ||
| verify | ||
| AVRSimulator.ts | ||
| Esp32Bridge.ts | ||
| Esp32C3Simulator.ts | ||
| Esp32MicroPythonLoader.ts | ||
| HD44780Decoder.ts | ||
| I2CBusManager.ts | ||
| Interconnect.ts | ||
| LogicFamilies.ts | ||
| MicroPythonLoader.ts | ||
| PinManager.ts | ||
| PinResolver.ts | ||
| PioPeripheral.ts | ||
| RP2040Simulator.ts | ||
| RaspberryPi3Bridge.ts | ||
| RiscVCore.ts | ||
| RiscVSimulator.ts | ||
| SensorUpdateRegistry.ts | ||
| SignalRouter.ts | ||
| SpiBus.ts | ||
| Stm32Bridge.ts | ||
| UsiI2cBridge.ts | ||
| esp32-signals.ts | ||
| piSlaveScanner.ts | ||
| rp2040-bootrom.ts | ||
| sensorControlConfig.ts | ||