60 min en Wokwi + 10 min de entregable. Parejas, rotación driver/navigator cada 10 min.
Paso 0 · Preparación (5 min)
Duplicar el proyecto saboteado a la cuenta propia. Abrir PulseView.
Paso 1 · Caza de bugs (20 min)
SÃntoma: las lecturas de los canales multiplexados se parecen demasiado entre sà y cambian cuando mueves otro canal.
Bug raÃz (uno solo): no se respeta el tiempo de establecimiento al cambiar de canal — el ADC muestrea inmediatamente después de conmutar.
Procedimiento:
- Mover un solo canal al extremo y dejar los otros quietos. Anotar qué pasa en los demás. Si se mueven, hay contagio, no ruido.
- Localizar en el código el punto donde se selecciona el canal y dónde se hace la lectura. Medir cuántas instrucciones hay entre uno y otro.
- Hipótesis por escrito antes de tocar el código.
- Introducir la espera. Barrer el valor: 0 µs, 10 µs, 50 µs, 200 µs. Anotar en qué punto desaparece el contagio.
- Registrar: sÃntoma → hipótesis → evidencia → causa raÃz → arreglo, con el valor mÃnimo que funciona.
💡 El entregable pide el valor mÃnimo medido, no "le puse 1 ms y ya jaló". Sobrar tiempo también es un error de diseño: cuesta frecuencia.
Paso 2 · Analizador lógico: el ACK del esclavo (20 min)
- Poner el Logic Analyzer sobre SDA y SCL. Correr ~3 s y detener para obtener el
.vcd.
- Abrir en PulseView → decodificador I²C.
- Localizar en la señal real: START, el byte de dirección + bit R/W, y el ACK (SDA lo tira el esclavo en el noveno pulso de reloj). Capturar.
- Desconectar el sensor en el diagrama de Wokwi, volver a correr y capturar el NACK — SDA se queda alta porque nadie contesta.
- Escribir dos lÃneas: qué diferencia hay entre "el sensor no está" y "el sensor está pero devuelve basura", vista desde el bus.
Paso 3 · Arquitectura de expansión (15 min)