Подключение часов по I2C
- Войдите на сайт для отправки комментариев
Добрый день.
Понимаю что сейчас "старики" опять "закидают помидорами" но мне надо разобраться в этом вопросе.
Я что то недопонимаю.
Вот пример.
Wire.begin(); // старт i2c Wire.beginTransmission(0x68); // начинаем обмен с DS3231 с i2c адресом 0x68 byte arr[] = {0x00, 0x02, 0x30, 0x17, 0x03, 0x02, 0x01, 0x19}; Wire.write(arr, 8); // записываем 8 байтов массива arr Wire.endTransmission(); // завершение передачи
Автор пишет что ".... Например, чтобы записать дату 02 января 2019 года, среда, и время 17 час 30 мин 02 сек, нужно отправить ведомому устройству с I2C адресом 0x68 массив: 00 02 30 17 03 02 01 19...."
Давайте на примере значения "часа".
Объясните пожалуйста, почему когда надо передать 17 часов, мы передаём 0х17?
17 часов (ДЕС) = 0х11 (HEX).
а 0x17 (HEX) = 23 часа (ДЕС).
И при выводе в монитор порта я пишу "Serial.print(ClockValues[2],HEX)". Тогда значение равно 17.
И часы работают правильно.
Но как мне дальше работать с этими переменными? Коррекция часов? Как записывать откорректированное значение? Как проверять на правильность ( от 0 до 59)?
За BCD формат чонить слышал?
Каких часов - "Электроника-5"?
ТС, когда ты был маленьким, а микросхемы большими и дорогими, для их экономии придумали двоично-десятичную систему кодирования.
Так до сих пор в часах и калькуляторах и используется.
понятно. Вопрос закрыт
Понимаю что сейчас "старики" опять "закидают помидорами" но мне надо разобраться в этом вопросе.
Тебя не помидорами закидали, а посоветовали в гугле прочесть про формат хранения чисел bcd
Вам большое спасибо за понимание того куда мне "двигаться" в изучении этой проблемы. Я действительно не слышал ранее о BCD.
Про "помидоры" я имел ввиду тех кто не помощь оказывает, а перебирает "модели часов" которые меня интересуют.
Не перебирает, а заставляет понять, что какие-то там часы лежат только перед тобой и для остальных являются абстракцией, по поводу работы которой можно безрезультатно бить клавиши сутками без достижения какого-либо результата.