¿Por qué el reloj se mantiene alto?

1

Soy muy nuevo y estoy tratando de hacer una traza I2C de ADXL345 con Ch1 a SCL y Ch2 a SDA, pero las huellas se parecen a estas:

¿No se supone que el reloj oscile continuamente? ¿Es normal que permanezca alto cuando se escriben datos (aunque el decodificador no logra decodificar)?

Me pregunto si estoy haciendo algo mal y me falta algo básico.

    
pregunta Kar

2 respuestas

0

También, dado que estás golpeando a I2C en un microcontrolador que sin duda tiene "otras cosas que hacer" (wifi en el 8266, ¿verdad?), es posible que tu flujo de programas I2C sea interrumpido para manejar wifi (o quién sabe qué más), y posiblemente arruinar las cosas. Tal vez usted (la biblioteca I2C de Zarya que está utilizando) necesite desactivar las interrupciones durante la duración de cada byte I2C, o incluso cada transacción completa hacia / desde su periférico I2C. No desea que se le interrumpa en parte a través de un byte: el periférico I2C puede agotarse, pero su código de bit bit está todavía "en estado" en medio de un byte & no tiene idea de que xx mS acaba de pasar entre un par de sus transmisiones / recepciones de bits.

    
respondido por el Techydude
0

El reloj I2C debería ser 1 cuando está inactivo. Consulte la condición de parada I2C. Si utiliza una función de bit banging, ejemplos existentes de Google, no reinvente la rueda. Y, por supuesto, siempre es mejor usar periféricos en chip.

    
respondido por el Gregory Kornblum

Lea otras preguntas en las etiquetas