Когда я записываю 8 бит в регистр сдвига hc595, последний бит i2c переходит в Q0 во втором hc595.
Почему?
Схема:
Мой код:
i2c_write(0b10101010);
latch_led_sensors_out();
delay_ms(200);
Когда я записываю 8 бит в регистр сдвига hc595, последний бит i2c переходит в Q0 во втором hc595.
Почему?
Схема:
Мой код:
i2c_write(0b10101010);
latch_led_sensors_out();
delay_ms(200);
Это из-за протокола I2C. Даже если вы хотите отправить 8 бит, на самом деле вы отправляете 9. Принцип работы I2C заключается в том, что начальный кадр содержит 7 (или 10) бит адреса плюс один бит для чтения/записи. После того, как эти начальные 8 битов тактируются, мастер отправляет дополнительный тактовый импульс для считывания бита ACK/NACK с ведомого устройства. Помните, что мастер управляет часами, даже когда ведомый управляет выводом данных.