Управление модулем часов реального времени PCF8563 с помощью python через i2c — понимание smbus

Я пытаюсь управлять модулем часов реального времени PCF8563 с помощью python. Я подключил модуль к своему Raspberry Pi, и я могу считывать часы с модуля. Я хотел бы использовать внутреннюю функцию сигнализации модуля и управлять этой функцией с помощью python.

Я знаю две библиотеки Python: здесь и один здесь.

Первый отлично работает, но ему не хватает поддержки будильника. Второй покрывает большинство функций, но опирается на библиотеку quick2wire, которую я не знаю и не хочу использовать. Я действительно хотел бы улучшить первый.

Я также нашел хорошо задокументированный способ to относится к этому модулю, но, к сожалению, для Arduino.

Моя текущая проблема заключается в том, как я могу читать и устанавливать определенные биты из байтов, которые я получаю из реестров по шине i2c. С:

import smbus

bus = smbus.SMBus(0)
returndata = bus.read_byte_data(0x51, 0x01)

Я получаю один байт из реестра 0x01. Мне нужно преобразовать возвращаемое значение из bcd в десятичное, но как я могу получить третий бит этого байта? И как я могу это изменить.

Взято из руководства Arudino:

... проверьте бит 3 регистра по адресу 0x01 (бит флага тревоги «AF»). Если 1 - время будильника! Затем вы можете отключить будильник, установив этот бит в ноль. С помощью аппаратных средств сначала установите бит 1 регистра 0x01 в 1 — тогда всякий раз, когда возникает сигнал тревоги, ток может течь на контакт 3 платы PCF8563.


person karlitos    schedule 20.12.2014    source источник


Ответы (1)


Короткий ответ: научиться использовать битовые маски и как работает битовый сдвиг. немецкий сайт Википедии оказался весьма полезным. Проверив техническое описание PCF8563, я смог реализовать некоторые недостающие функции. Для дальнейшего продвижения см. мой репозиторий GitHub.

Вероятно, я обнаружил ошибку в How-To, связанный с Arduino, я заметил автора, смотрите комментарии под статьей по ссылке.

person karlitos    schedule 21.12.2014