Strange I2C Behavior on PIC y algunas dudas

0

Estoy publicando el Código aquí:

    //***************************************************
    void main(void)
    { TRISCbits.TRISC2=0;// configures it as Output
      OpenI2C(MASTER, SLEW_ON); // Initialize I2C module
      SSPADD = 9;               //400kHz Baud clock(9) @16MHz
                                 //100kHz Baud clock(39) @16MHz


    EEByteWrite(0xA0, 0x30, 0xA5);
    PORTCbits.RC2=1;       

}

Resulta que quemo este código que encontré en la nota de la aplicación I2c y traté de transferir el código a PIC18f. Bueno cuando quemé el código. El SDA y el SCL muestran pulsos con 8 bits vistos en SCL con la ayuda del osciloscopio. Por lo tanto, la transmisión se supone que debe finalizar después de una función de escritura de bytes, pero muestra los impulsos en ambos pines, incluso después de obtener la escritura de bytes. La función está hecha.

Bueno, ya que de lo que aprendí, I2cBus debe estar inactivo después de escribir bytes. Bueno, verifiqué si el ACKSTAT (ESTADO DE RECONOCIMIENTO ESTÁ RECIBIR) y lo encontré recibiendo del esclavo, que es un chip eeprom.

¿Por qué ocurre este extraño comportamiento en el I2C? ¿O es que no es tan claro en los conceptos de I2c?

    
pregunta Rookie91

1 respuesta

2

Intente agregar: while (1) {} al final para evitar que el programa se reinicie.

A diferencia de ejecutar una aplicación para PC, los microcontroladores no tienen a dónde salir del main (). En general, debe tener un bucle infinito o el procesador o el código se reiniciará y se ejecutará una y otra vez.

Para explicaciones más completas, vea:

¿Quién recibe el valor devuelto por main ()?

o:

¿Qué sucede cuando finaliza un programa incorporado?

    
respondido por el Tut

Lea otras preguntas en las etiquetas