реклама на сайте
подробности

 
 
> Работа с DS1305(6), Часы не заводятся
Oleg_IT
сообщение Feb 4 2006, 15:20
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Пытаюсь работать с часами. Сначала взял HT1380. Мучался, мучался, не заводятся и всё. Взял DS1305(6). Всё сделал строго по даташиту (TYPICAL OPERATING CIRCUIT), выводы 2, 14, 16 к +5 В (стабилизатор). 1, 8, 9 к GND. Работаю с AVR по трёх проводной шине (вывод 9 на GND).
И эти стоят.
Точно, что-то я не так делаю, но что не пойму. Может быть проблема с кварцами? Ёмкости к нему обязательны (в даташите нет рекомендации), если я просто пока завести их хочу, не обращая внимания на точность?
Поделитесь кодом работы с DS1305, DS1306 и с HT1380.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BlackJack
сообщение Feb 4 2006, 17:09
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 6-10-05
Пользователь №: 9 276



Я раьотал с 1305 , но давно.
Из фишек помню только то, что если напряжение на батарейном питании есть и оно ниже чем на просто питании, они не ходят.
Ну а код посмотрю, если в старых проектах найду, выложу.


вот что нашел. Это работало.
камень 8535

#define wait1 __delay_cycles(200)
#define wait5 __delay_cycles(480)
#define onRTC PORTD|=0x80;
#define offRTC PORTD&=~0x80;
#define wSPI while (!(SPSR & 0x80))


// тнициализация DS1305
//----------------------------
for (j=0;j<=2;j++)
{// онициялизация регистров управления
onRTC;
wait1;
SPCR = 0x5f; //0x5C; //вкл SPI
SPDR=0x8f; //адрес CR
wSPI; //
SPDR=j; //вкл OSC, off WR, потом вкл реж прерывания INT0
wSPI; //
SPCR = 0x00; //выкл SPI
offRTC;
wait50;
};
//-----------------------------------------

//-----------------------------------------
wait50;
onRTC;// PORTD|=0x80;
wait1;
SPCR = 0x5f; //0x5C; //вкл SPI
SPDR=0x87; //адрес pfgbcb
wSPI; //

//07h
SPDR = 0x80; // записываем Al0 sec , без маски
wSPI; //
SPDR = 0x80; // записываем Al0 min с маской.
wSPI; //
SPDR = 0x80; // записываем Al 0hr
wSPI; //
SPDR = 0x80; // записываем Al 0day
wSPI; //
//0bh
SPDR = 0x80; // записываем Al 1sec , без маски?если надо раз в минуту
wSPI; //
SPDR = 0x80; // записываем Al 1min с маской.
wSPI; //
SPDR = 0x80; // записываем Al 1hr
wSPI; //
SPDR = 0x80; // записываем Al 1day
wSPI; //
SPCR = 0x00; //выкл SPI
offRTC;//PORTD&=~0x80;
wait50;

//--------Прпочитаем время, чтобы сбросить прерывание---------------------
onRTC;
wait1;
SPCR = 0x5f; //0x5C; //вкл SPI
SPDR=0; //адрес чтения часов
wSPI; //
for (j=0;j<=18;j++){
SPDR = 0xFF; // з
wSPI; //
i = SPDR; //
//Sendchar(i);
};
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 00:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01329 секунд с 7
ELECTRONIX ©2004-2016