Hallo,
ich versuche gerade einen MPU6050 über I2C anzusprechen, nur leider scheitere ich schon in der Initialisierungsphase.
Nutze ich als Dev-Adresse 0x68 dann hängt er sich bei "i2c_start_wait(Devaddr+I2C_WRITE);" auf.
Nutze ich als Dev-Adresse 0x69 dann hängt er sich bei "i2c_write(0x6B);" auf.
Änderung durch zusätzliche Pullup-Widerstände:
Als Anhang gibs noch Mitschnitte einmal mit Adresse 68 und einmal mit 69
bei 68 sendet er sich tot, immer wieder die gleiche Abfolge (die zu sehen ist)
bei 69 nur so wie gezeigt danach bleibt Clock auf Low und Data ist wider High
Ich nutze die Lib von Peter Fleury
Woran kann das liegen? Wie sprech ich das kleine Teil an?
Sourcecode:
Code:
#include <avr/interrupt.h> //UART
#include <avr/io.h>
#include <stdlib.h>
#include <stdint.h>
#include "test.h"
#include <inttypes.h>
#include <util/delay.h>
#include "uart.h"
#include "i2cmaster.h"
#define Devaddr 0x69 // device address of MPU6050 0x68 oder 0x69
//screen /dev/ttyS5 9600 8N1
int main(void)
{
unsigned char ret;
_delay_ms(1000);
i2c_init(); // init I2C interface
uart_init();
sei();
uart_puts("Started\r\n");
i2c_start_wait(Devaddr+I2C_WRITE); // set device address and write mode
i2c_write(0x6B);// Register Adress
i2c_write(0x01);// Data send
i2c_stop();
while (1)
{
_delay_ms(2000);
}
return 0;
}
Lesezeichen