#include ‹18F2550.h›
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CP UDIV1,VREGEN
#use delay(clock=20000000)
#use i2c(Master, SDA=PIN_B0, SCL=PIN_B1)
...
i2c_start();
i2c_write(0x30);
i2c_write(0x20);
i2c_write(0x27);
i2c_stop();
i2c_start();
i2c_write(0x3C);
i2c_write(0x02);
i2c_write(0x00);
i2c_stop();
...
//читаем магнитометр
i2c_start();
i2c_write(0x3C); // Запрос на запись
i2c_write(0x3); // Начальный адрес
i2c_start();
i2c_write(0x3D); // Запрос на чтение с адреса 0x03
ACC_Data[0] = i2c_read();//read OUT_X_H_M (MSB)
ACC_Data[1] = i2c_read();//read OUT_X_L_M (LSB)
ACC_Data[2] = i2c_read();//read OUT_Y_H_M (MSB)
ACC_Data[3] = i2c_read();//read OUT_Y_L_M (LSB)
ACC_Data[4] = i2c_read();//read OUT_Z_H_M (MSB)
ACC_Data[5] = i2c_read(0);//read OUT_Z_L_M (LSB) NACK
i2c_stop(); |