я использовал DS1305 так (смотри схему).
исходники такие:
//----------------------------------------------------------------------------------------------
// Запись значений в RAM RTC
//----------------------------------------------------------------------------------------------
CS_RTC = 1; //Выбор RTC
SPDR = adr_control_RTC_wr; //Адрес регистра управления RTC
while (!(SPSR & SPIF_)); //Ожидание завершения передачи
SPDR = control_RTC; //Значение регистра управления RTC
while (!(SPSR & SPIF_)); //Ожидание завершения передачи
CS_RTC = 0; //Снятие выбора RTC
//----------------------------------------------------------------------------------------------
temp = 1; //Небольшая временная задержка
do
{
temp--;
}
while (temp != 0);
//----------------------------------------------------------------------------------------------
CS_RTC = 1; //Выбор RTC
SPDR = adr_control_RTC_wr; //Адрес регистра управления RTC
while (!(SPSR & SPIF_)); //Ожидание завершения передачи
SPDR = control_RTC; //Значение регистра управления RTC
while (!(SPSR & SPIF_)); //Ожидание завершения передачи
CS_RTC = 0; //Снятие выбора RTC
//----------------------------------------------------------------------------------------------
temp = 1; //Небольшая временная задержка
do
{
temp--;
}
while (temp != 0);
//----------------------------------------------------------------------------------------------
CS_RTC =1; //Выбор RTC
SPDR = adr_wr; //Адрес регистра записи во Flash
while (!(SPSR & SPIF_)); //Ожидание завершения передачи
SPDR = data>>8; //Данные регистра записи - ст. б.
while (!(SPSR & SPIF_)); //Ожидание завершения передачи
SPDR = data; //Данные регистра записи - мл. б.
while (!(SPSR & SPIF_)); //Ожидание завершения передачи
CS_RTC = 0; //Снятие выбора RTC
т.е. перед записью значений дважды нужно писать в регистр управления. без записи в регистр управления насколько я помню не работало. При чтении такого не было.
для SPI (AT89S8252): CPOL = 0, CPHA = 1, Fosc = 16МГц/128, MSB первый
Сообщение отредактировал 011119xx - Nov 21 2007, 11:04
Прикрепленные файлы
RTC.BMP ( 125.08 килобайт )
Кол-во скачиваний: 32