Estoy usando MPU6050 con el protocolo I2C de PIC18F45. En la placa EasyPIC v6, simplemente me devuelve todo lo que puse en este comando ESCRIBIR I2C1_Wr(0xD3);
. Reemplacé el sensor con New One también. No es bueno. Estoy usando MikroC Pro para la programación. Mi supervisor me obliga a abandonar este proyecto. ¿Puede alguien decirme el problema con este código, por favor? Aquí está el Código:
void MPU6050_Activ()
{ I2C1_Init(100000);
I2C1_Start();
I2C1_Wr(0x23); //AD0 TO HIGH NOW ADD IS 0x69 to Write 0xD2 to Read 0xD3
I2C1_Wr(0x6B); //PWR_MGMT REG ADDRESS
I2C1_Wr(0x00); // PWR_MNGMT Reg set to Intenal Clock no Sleep no Reset no Cycle
I2C1_Stop();
Delay_ms(70);
I2C1_Start();
I2C1_Wr(0x22);
I2C1_Wr( 0x1B); //GYRO_CONFIG Reg
I2C1_Wr( 0x00 ); //gyro_config, +-250 °/s
I2C1_Stop();
}
char text_output[13];
int data_out;
unsigned short MPU6050_Read(unsigned short rAddr)
{
unsigned short reslt;
I2C1_Start();
I2C1_Wr( 0x22 );
I2C1_Wr(rAddr); //66
I2C1_Repeated_Start();
I2C1_Wr( 0x23 );
reslt = I2C1_Rd(0u); // Read the data (NO acknowledge)
while (!I2C1_Is_Idle()) asm nop; // Wait for the read cycle to finish
I2C1_Stop();
return reslt;
}
void main()
{
unsigned short read_out;
TRISC = 0;
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // Clear display
//Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(2,1,"LED_ON");
Delay_ms(1000);
MPU6050_Activ();
Lcd_Out( 2, 12, "LCDX" );
while(1){
Delay_ms(500);
read_out=MPU6050_Read(MPU6050_RA_GYRO_XOUT_H);
IntToStr(read_out, text_output );
Lcd_Out( 1, 7, text_output );
Lcd_Out( 1, 5, "K" );
}
}