Ср фев 07, 2018 15:38:29
void lis302d_init(void){
twi_start();
twi_wr(lis302d_addrs_w); // lis302d_addrs_w 0x38
twi_wr(Ctrl_Reg1); //0x20
twi_wr(0b11000101);
twi_stop();
twi_start();
twi_wr(lis302d_addrs_w);
twi_wr(Ctrl_Reg2); //0x21
twi_wr(0b01011100);
twi_stop();
twi_start();
twi_wr(lis302d_addrs_w);
twi_wr(Ctrl_Reg3); // 0x22
twi_wr(0b01110111);
twi_stop();
twi_start();
twi_wr(lis302d_addrs_w);
twi_wr( FF_WU_THS_1); ///порог, в регистре FF_WU_THS_1
twi_wr(0b00100000);
twi_stop();
twi_start();
twi_wr(lis302d_addrs_w);
twi_wr(FF_WU_THS_2); // прерывание FF_WU_THS_2
twi_wr(0b00100000);
twi_stop();
twi_start();
twi_wr(lis302d_addrs_w); // 0x38 запись
twi_wr(Who_Am_I);
twi_start();
twi_wr(lis302d_addrs_r); // 0x39 чтение
lis302d_id= (twi_rd(0));
twi_stop();
twi_start();
twi_wr(lis302d_addrs_w); // 0x38 запись
…(init reg)
twi_stop();
…
};
twi_start();
twi_wr(0xd0);
twi_wr(0x00);
twi_start();
twi_wr(0xd1);
*sec = bcd2bin(twi_rd(1)); // 1
*minut = bcd2bin(twi_rd(1)); // 1
*hour = bcd2bin(twi_rd(1)); // 1
*day = bcd2bin(twi_rd(1)); // 1
*date = bcd2bin(twi_rd(1)); // 1
*month = bcd2bin(twi_rd(1)); // 1
*year = bcd2bin(twi_rd(0)); // 0 no_ask
twi_stop();
Ср фев 07, 2018 18:11:59
twi_start();
twi_wr(lis302d_addrs_w); // lis302d_addrs_w 0x38
twi_wr(Ctrl_Reg1+0x80); // запись в регистр 0x20 с автоинкрементом адреса
twi_wr(0b11000101); // данные для регистра 0х20
twi_wr(0b01011100); // данные для регистра 0х21
и т.д.
twi_stop();
twi_start();
twi_wr(lis302d_addrs_w); // lis302d_addrs_w 0x38
twi_wr(Х_Reg + 0х80); // чтение из регистра Х с автоинкрементом адреса
twi_start();
twi_wr(lis302d_addrs_r); // lis302d_addrs_r 0x39
twi_rd // чтение данных
и т.д.
twi_stop();
Чт фев 08, 2018 23:27:41
twi_start();
twi_wr(lis302d_addrs_w); // lis302d_addrs_r 0x38
twi_wr(Status_Reg + 0x80); //
twi_start();
twi_wr(lis302d_addrs_r);
reg_stat = (twi_rd(1));// Status_Reg r 27
(twi_rd(1)); // NU
reg_x = (twi_rd(1)); // Out_X r 29
(twi_rd(1)); // NU
reg_y = (twi_rd(1)); // Out_Y r 2B
(twi_rd(1)); // NU
reg_z = (twi_rd(1)); // Out_Z r 2D
(twi_rd(0)); // NU
twi_stop();
Чт фев 08, 2018 23:41:46
Сб фев 10, 2018 10:08:20
... но на самом деле ответ на Ваш вопрос содержится в ДШ акселерометра в параграфе
...
Добавка 0х80 к адресу регистра как раз и устанавливает его MSb в 1, тем самым разрешая автоинкремент адреса.