PIC16 - ¿MSSP Periférico I2C Master Se detiene en medio de la secuencia de reloj?

1

Estoy usando un solo PIC16F18857 como maestro I2C para hablar con cinco PIC16F1615 en el bus. Todo funciona bien, en su mayor parte, sin embargo, he estado experimentando un "bloqueo" en el que el maestro está atascado en un bucle esperando que se complete una lectura. Me las arreglé para atraparlo en el analizador y esto es lo que estoy viendo:

LaterceraseñalesunaentradaUARTasíncronaalPIC16maestro.Estabatratandodeversieltiempodelamismaenrelaciónconelestabarelacionadodealgunamanera,peronohevistonadaquelorespaldehastaahora.

Actualmente,solohaydosesclavosenelbus,ylalecturasiemprefalladurantelalecturaalprimeresclavo.

Loquemeparececuriosoesqueelmaestro(quecontrolaelreloj)parecedejardesincronizaralesclavodespuésdetresciclosdereloj(veotresciclosconstantemente)ymeestoyperdiendounainterrupción,probablementeporqueLasecuenciadelrelojnoestáterminandotodossusciclos.Mesentiríamenosdesconcertadosielrelojsemantuvierabajoporalgo,peroparecequeelrelojestáatascadoenelestadoalto"no confirmado".

¿Bajo qué circunstancias puede suceder esto?

  • He revisado las erratas de silicio para ambas partes, no se enumera nada relacionado con este problema en ninguna parte
  • Traté de ver si su correlación con otra activación de interrupción periférica, ninguno de los datos que he recopilado parece apuntar a que eso es un problema

¡Gracias!

    
pregunta Matt Egan

1 respuesta

0

¿Hace I / O fuera de las interrupciones, como encender un LED después de obtener el primer byte? Una lectura-modificación-escritura podría terminar configurando el bit de puerto por accidente. Una cosa que puede hacer es leer el registro de dirección y los datos del puerto para ver si todavía están en su estado esperado. Otra forma de hacer que I2C desaparezca es deshabilitar el puerto, así que lea el registro que tiene el bit de habilitación i2c y verifique que aún esté habilitado.

Mucho mejor tiro que ningún tiro.

    
respondido por el gbarry

Lea otras preguntas en las etiquetas