some minors fix

This commit is contained in:
Zaltora 2017-01-08 20:27:06 +01:00
parent 36d8e10279
commit f135752523
4 changed files with 13 additions and 28 deletions

View file

@ -64,7 +64,7 @@ static uint16_t read_reg(uint8_t addr, uint8_t reg)
static void write_reg(uint8_t addr, uint8_t reg, uint16_t val)
{
//debug("Write %d: 0x%04x", reg, val);
uint8_t buf[3] = { val >> 8, val};
uint8_t buf[2] = { val >> 8, val};
if (i2c_slave_write(addr, &reg, buf, 2, false))
debug("Could not write 0x%04x to register %d", val, reg);
}

View file

@ -49,12 +49,9 @@ static uint8_t read_register(uint8_t reg)
static void update_register(uint8_t reg, uint8_t mask, uint8_t val)
{
uint8_t buf[2];
uint8_t buf = (read_register(reg) & mask) | val;
buf[0] = reg;
buf[1] = (read_register(reg) & mask) | val;
i2c_slave_write(ADDR, &buf[0], &buf[1], 1, false);
i2c_slave_write(ADDR, &reg, &buf, 1, false);
}
void ds1307_start(bool start)

View file

@ -93,15 +93,13 @@ int ds3231_setAlarm(uint8_t alarms, struct tm *time1, uint8_t option1, struct tm
*/
bool ds3231_getFlag(uint8_t addr, uint8_t mask, uint8_t *flag)
{
uint8_t data[1];
uint8_t data;
/* get register */
// data[0] = addr;
//if (ds3231_send(&addr, NULL, 0) && ds3231_recv(data, 1)) { //Test with ds3231_recv(addr, data, 1)
if (!ds3231_recv(addr,data, 1))
if (!ds3231_recv(addr, &data, 1))
{
/* return only requested flag */
*flag = (data[0] & mask);
*flag = (data & mask);
return true;
}
@ -116,22 +114,20 @@ bool ds3231_getFlag(uint8_t addr, uint8_t mask, uint8_t *flag)
*/
bool ds3231_setFlag(uint8_t addr, uint8_t bits, uint8_t mode)
{
uint8_t data[1];
uint8_t data;
/* get status register */
//if (ds3231_send(data, 1) && ds3231_recv(data+1, 1)) {
if (!ds3231_recv(addr, data, 1))
if (!ds3231_recv(addr, &data, 1))
{
/* clear the flag */
if (mode == DS3231_REPLACE)
data[0] = bits;
data = bits;
else if (mode == DS3231_SET)
data[0] |= bits;
data |= bits;
else
data[0] &= ~bits;
data &= ~bits;
//if (ds3231_send(data, 2)) {
if (!ds3231_send(addr, data, 1))
if (!ds3231_send(addr, &data, 1))
return true;
}
@ -220,7 +216,6 @@ bool ds3231_getRawTemp(int16_t *temp)
uint8_t data[2];
data[0] = DS3231_ADDR_TEMP;
//if (ds3231_send(data, 1) && ds3231_recv(data, 2)) {
if (!ds3231_send(DS3231_ADDR_TEMP,data, 2))
{
*temp = (int16_t)(int8_t)data[0] << 2 | data[1] >> 6;
@ -258,13 +253,6 @@ bool ds3231_getTime(struct tm *time)
{
uint8_t data[7];
/* start register address
data[0] = DS3231_ADDR_TIME;
if (!ds3231_send(data, 1)) {
return false;
}
*/
/* read time */
if (ds3231_recv(DS3231_ADDR_TIME, data, 7))
{

View file

@ -45,7 +45,7 @@ static uint8_t g_sda_pin;
inline bool i2c_status(void)
{
return flag;
return started;
}
void i2c_init(uint8_t scl_pin, uint8_t sda_pin)