Подключал часы реального времени
DS3231 с интерфейсом I2C к микроконтроллеру ATmega16. Код писал в CodeVision, пользовался программным I2C, вот кусок кода:
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=6
.equ __scl_bit=7
#endasm
#include ‹i2c.h›
//-----------------------------//
i2c_init();
//----------------------------//
void write_data(char adr, char data)
{ //функция записи
i2c_start(); //формируем состояние СТАРТ на шине
i2c_write(0xD0); //пишем адрес устройства(часов) + состояние “запись”
i2c_write(adr); //пишем адрес регистра внутри устройства(часов)
i2c_write(data); //пишем данные в выбранный регистр
i2c_stop(); //формируем состояние СТОП на шине
}
unsigned char read (char adr) //функция чтения
{
unsigned char data;
i2c_start(); //формируем состояние СТАРТ на шине
i2c_write(0xD0); //пишем адрес устройства(часов)
i2c_write(adr); //пишем адрес регистра внутри устройства(часов)
i2c_start(); //формируем состояние ПОВСТАРТ на шине
i2c_write(0xD1); //пишем адрес устройства(часов) + состояние “чтение”
data = i2c_read(0); //считываем данные из выбранного регистра
return data;
}
Получилось довольно удобно , а главное работоспособно.
По поводу резисторов подтяжки, использовал по 200 кОм, работа с микротоками, экономим батарейки.