Когда вынимаю батарейку и выключаю питание, не могу определить, что питание пропадало - часы продолжают идти, хотя в даташите вроде как написано, что не должны, и начальная програмная инициализация не происходит. Вот привожу кусок кода, взятый в теме "исходники".
//Инициализация часов
void rtc_init(void)
{
unsigned char temp;
i2c_start();
i2c_tx_addr(DS1307_ADDR|WR);
i2c_tx(0); //адрес регистра состояния
i2c_start();
i2c_tx_addr(DS1307_ADDR|RD);
temp=i2c_rx(NOT_ACK); //читаем его
i2c_stop();
if(temp & (1<<CH)) //если питание часов пропадало
{
rtc_set_time(0, 0, 0); //устанавливаем время
rtc_set_date(1, 1, 2000); //устанавливаем дату
i2c_start();
i2c_tx_addr(DS1307_ADDR|WR);
i2c_tx(DS1307_CONTROL);
i2c_tx(0x90);
i2c_stop();
}
}Даже когда питание пропадало, я все равно не попадаю в начальную инициализацию...
Сообщение отредактировал masterpc - Feb 29 2008, 08:51