DS3231.c
unknown
c_cpp
a year ago
3.7 kB
5
Indexable
#include "DS3231.h" _time Time, alarm; _date Date; uint8_t ds3231_dec2byte(uint8_t dec){ uint8_t byte = ((dec/10) << 4)|(dec%10); return byte; } uint8_t ds3231_byte2dec(uint8_t byte){ uint8_t dec = (((byte >> 4) * 10) + (byte & 0x0f)); return dec; } void DS3231_get_data(uint8_t dev_addr, uint8_t reg_addr){ twi_start(); twi_sendbyte(dev_addr<<1|0); twi_sendbyte(reg_addr);//����� ��������, �� �������� ����� ������ twi_start(); twi_sendbyte(dev_addr<<1|1);//���������� DS3231_ADDR|1 (����� ������� � ���� ������ �� ��������) Time.sec=ds3231_byte2dec(twi_readbyte()); Time.min=ds3231_byte2dec(twi_readbyte()); Time.hour=ds3231_byte2dec(twi_readbyte()); Date.day=ds3231_byte2dec(twi_readbyte()); Date.date=ds3231_byte2dec(twi_readbyte()); Date.month=ds3231_byte2dec(twi_readbyte()); Date.year=ds3231_byte2dec(twi_read_last_byte()); twi_stop(); } void DS3231_write_time(uint8_t sec, uint8_t min, uint8_t hour){ twi_start(); twi_sendbyte(DS3231_ADDR<<1|0); twi_sendbyte(DS3231_SEC);//����� ��������, � �������� ������ ������ ������ � �������� twi_sendbyte(ds3231_dec2byte(Time.sec)); twi_sendbyte(ds3231_dec2byte(Time.min)); twi_sendbyte(ds3231_dec2byte(Time.hour)); } void DS3231_write_sec( uint8_t sec){ twi_start(); twi_start(); twi_sendbyte(DS3231_ADDR<<1|0); twi_sendbyte(DS3231_SEC);//����� ��������, � �������� ������ ������ ������ � �������� twi_sendbyte(ds3231_dec2byte(Time.sec)); } void DS3231_write_min( uint8_t min){ twi_start(); //twi_start(); twi_sendbyte(DS3231_ADDR<<1|0); twi_sendbyte(DS3231_MIN);//����� ��������, � �������� ������ ������ ������ � �������� twi_sendbyte(ds3231_dec2byte(Time.min)); } void DS3231_write_hour( uint8_t hour){ twi_start(); twi_sendbyte(DS3231_ADDR<<1|0); twi_sendbyte(DS3231_HOUR);//����� ��������, � �������� ������ ������ ������ � �������� twi_sendbyte(ds3231_dec2byte(Time.hour)); } void DS3231_write_date( uint8_t day, uint8_t date, uint8_t month, uint8_t year){ twi_start(); twi_sendbyte(DS3231_ADDR<<1|0); twi_sendbyte(DS3231_DAY);//����� ��������, � �������� ������ ������ ������ � �������� twi_sendbyte(ds3231_dec2byte(Date.day)); twi_sendbyte(ds3231_dec2byte(Date.date)); twi_sendbyte(ds3231_dec2byte(Date.month)); twi_sendbyte(ds3231_dec2byte(Date.year)); } void DS3231_write_date_number( uint8_t date){ twi_start(); twi_sendbyte(DS3231_ADDR<<1|0); twi_sendbyte(DS3231_DATE);//����� ��������, � �������� ������ ������ ������ � �������� twi_sendbyte(ds3231_dec2byte(Date.date)); } void DS3231_write_month( uint8_t month){ twi_start(); twi_sendbyte(DS3231_ADDR<<1|0); twi_sendbyte(DS3231_MONTH);//����� ��������, � �������� ������ ������ ������ � �������� twi_sendbyte(ds3231_dec2byte(Date.month)); }
Editor is loading...