Entiendo que la gente probablemente ha preguntado esto antes, pero he mirado durante horas y no puedo encontrar lo que estoy haciendo mal.
Estoy intentando que se produzca una transferencia de múltiples bytes entre un dispositivo i2c, el DS3231 y mi microcontrolador, un AT89S51 (8051).
Puedo sacar toda la información usando múltiples métodos de escritura / solicitud, pero me gustaría aprender a hacer lecturas / escrituras de múltiples bytes para simplificar mi código y entender mejor cómo funciona i2c.
Intenté dibujar en la imagen lo que hace cada parte de la señal pero, como resultado, un ratón no es lo mejor para esto.
La primera imagen es la forma de onda equivalente de Arduino y la segunda es mi implementación.
SicomparaslasformasdeondadelArduinoydemi8051,sonbastantesimilares,exceptoporelhechodequeelArduinodevuelvelos7bytescompletosdedatos,mientrasquelosmíossolodevuelven1.
Enestepunto,loúnicoquecreoquepodríaestarmalesquetalvezmi8051micronotiradelalíneaSDAlosuficientecuandonecesitaenviarlaseñalACKy,porlotanto,eldispositivoi2cnolaregistra..Siesteeselcaso,¿hayalgunasolución?
Graciasportutiempo.
edite: