Porém, há alguns pontos que eu não consegui entender direito. Segue o código:
cpp code
void main(){
PORTB = 0;
TRISB = 0; // PORTB CONFIGURADO COMO SAIDAS E SAÍDAS ZERADAS
I2C1_Init(100000); // INICIALIZAÇÃO DA COMUNICAÇÃO I2C EM 100kHz
I2C1_Start(); // SINAL DE START I2C
I2C1_Wr(0xA2); // ENVIA BYTE VIA I2C (ENDEREÇO DO COMPONENTE + W)
I2C1_Wr(2); // ENVIA BYTE (ENDEREÇO DE LOCALIZAÇÃO DA EEPROM)
I2C1_Wr(0xAA); //ENVIA DADO (DADO A SER ESCRITO)
I2C1_Stop(); //PÁRA COMUNICAÇÃO I2C
Delay_100ms(); //AGUARDA 100ms
I2C1_Start(); // SINAL DE START I2C
I2C1_Wr(0xA2); // ENVIA BYTE VIA I2C (ENDEREÇO DO COMPONENTE + W)
I2C1_Wr(2); // ENVIA BYTE (ENDEREÇO DO DADO)
I2C1_Repeated_Start(); // REPETE SINAL DE START I2C
I2C1_Wr(0xA3); // ENVIA BYTE (ENDEREÇO DO COMPONENTE + R)
PORTB = I2C1_Rd(0u); // LÊ O DADO (NO acknowledge)
I2C1_Stop(); // SINAL DE PARADA NA COMUNICAÇÃO I2C
}
Se alguém entendeu completamente o código acima, poderia me explicá-lo por favor? Por que foi enviado o dado 0xAA na primeira parte do código e depois, ao ler o dado, o valor que aparece no PORTB do MCU é 0xA3?
O que significam exatamente as instruções (ENDEREÇO DO COMPONENTE + W) e (ENDEREÇO DO COMPONENTE + R) ?
P.S: Quem tiver o MikroC instalado em sua máquina, pode abrir o help e digitar I2C Library que verá este código e o esquema de conexão do MCU à memória eeprom citada.
Aguardo vocês e obrigado.