MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки
 Новости   Конференция   Контакты 
 

RTC DS1307

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 RTC DS1307
Автор: Vas ()
Дата:   04/03/2005 11:37

скажите пожалуйста если поврежден или итсутствует кварц в DS1307 будут доступны регистры для
чтения или записи

Увсегда


 
 Re: RTC DS1307
Автор: zksystem ()
Дата:   04/03/2005 12:04

а зачем тебе? :) Я бы помог, да вот кварц к площадке припаян намертво.

- www.zaocita.ru - zksystem aka Konstantin I. Zuykov - icq: 82327775 -



 
 Re: RTC DS1307
Автор: Vas ()
Дата:   04/03/2005 12:09

да вот что-то не чтится не как
замучил меня этот девайс

Увсегда


 
 Re: RTC DS1307
Автор: GRR ()
Дата:   04/03/2005 12:57

Да доступны... Старший бит регистра секунд указывает работает у тебя генератор или
нет.


 
 Re: RTC DS1307
Автор: Vas ()
Дата:   04/03/2005 13:01

отлично, но не легче, буду долбить его дальше

ОГРОМЕННОЕ спасибо

Увсегда


 
 Re: RTC DS1307
Автор: IgorV ()
Дата:   04/03/2005 13:10

Недоступно если нет напряжения на батарейке. Должно быть на ноге для батарейки 3D/ Если нет ,
то и доступа не будет - т.к. железо I2C отключается.

2GRR Если старший бит в секундах =0, а кварец оторван, то определить остановку можно только
если сравнивать время.


 
 Re: RTC DS1307
Автор: GRR ()
Дата:   04/03/2005 13:13

Не помню, уже давно это было... Я тоже замучился с этой микросхемой. Отказывалась
работать пока не повесил 3В на вход батарейки. Батарею не подключал, просто 5 В
через делитель подал на этот вход.


 
 Re: RTC DS1307
Автор: Vadim ()
Дата:   04/03/2005 13:51

Bit 7 of Register 0 is the clock halt (CH) bit. When this bit is set to 1, the
oscillator is disabled. When cleared to 0, the oscillator is enabled.

Получается, что это управляющий а не индицирующий бит...
А без батареи действительно не работает


 
 Re: RTC DS1307
Автор: BoolAB ()
Дата:   04/03/2005 14:49

Vadim писал(а):

> Получается, что это управляющий а не индицирующий бит...

Насколько я понял, это действительно управляющий бит.

> А без батареи действительно не работает

А вот тут не согласен. Больше месяца у меня на столе работал девайс с этими
часиками и совсем без батарейки - вывод просто висел. Из DS: "If a
backup supply is not required, VBAT may be grounded." При чем именно "may be", а
не "must be".
С ds1307 проблем ещё не имел. При нормальном питании и правильно организованном I2C
всё нормально читалось. Единственное НО: не забывать, что Vcc должен быть больше,
чем 1.25Vbat, иначе микроха переходит на батарейное питание и отключает схему
управления.


 
 Re: RTC DS1307
Автор: Vas ()
Дата:   04/03/2005 15:09

Батарейки действительно нет но на Vbat через диод и резюк подано Vcc
Скорость I2c на 100 кГц

Увсегда


 
 Re: RTC DS1307
Автор: IgorV ()
Дата:   04/03/2005 15:12

Vas писал(а):

> Батарейки действительно нет но на Vbat через диод и резюк
> подано Vcc
> Скорость I2c на 100 кГц
>
Вот потому и не работает, что больше чем надо на батарейном входе.


 
 Re: RTC DS1307
Автор: Vas ()
Дата:   04/03/2005 15:16

примерно четыре вольта если цешка не врет

Увсегда


 
 Re: RTC DS1307
Автор: Vadim ()
Дата:   04/03/2005 15:19

А у меня без батарейки - то работало, то нет (а это значит не работало). И это был
факт - с тех пор как батарейку поставил - все работает


 
 Ну так вот Вы и нифига не получите
Автор: BoolAB ()
Дата:   04/03/2005 15:21

Vas писал(а):
> ... на Vbat через диод и резюк подано Vcc

это значит, что в отсутствие батарейки Vbat=Vcc, а для работы I2C надо чтобы
Vcc>1.25Vbat. Нарывался с этим: питание было чуть меньше 4V, и влепил свежую
батареечку с 3.2V. И всё остановилось :-(


 
 А это значит, что оно у Вас так и не работает (+)
Автор: BoolAB ()
Дата:   04/03/2005 15:25

так как помере просаживания батарейки, устройство станет полностью
неработоспособно, что не есть хорошо.
По-моему, если батарея является частью РЕЗЕРВНОГО или АВАРИЙНОГО питания, то
система должна отлично себя чувствовать и без этого резерва: ведь он не всем нужен,
и кто-то не захочет за это платить.


 
 Re:Провел эксперимент
Автор: Vadim ()
Дата:   05/03/2005 10:48

1) Вытащил батарейку - устройство не работает (нет бита подтверждения от микросхемы
на шине I2c)
2) Приземлил батарейный вход микрухи через 1МОм - все работает

Вывод - батарейный вход не должен висеть в воздухе


 
 Re:Провел эксперимент
Автор: BoolAB ()
Дата:   05/03/2005 11:15

Странно. В DS всё-таки написано "... may be ...". Может Вам попался дефектный
экземпляр?
Кто-нибудь ещё сталкивался с проблемой нерабочести часиков без батарейки? Наверно и
мне надо будет заложить резистор, хотя батарейку жалко :-(


 
 Re:Да я и сам немного удивлён,
Автор: Vadim ()
Дата:   05/03/2005 11:33

хотя наверное, самая разряженная батарейка имеет сопротивление меньше 1МОм....
Странно это всё, ведь действительно написано "may be grounded"

а этот резистор - в схеме - это наверное бред, такого ни у кого не видел



Отправка отредактированного (05/03/2005 11:38)


 
 Re:Провел эксперимент
Автор: Dmitry ()
Дата:   05/03/2005 11:46

я сталкивался. причем именно так - то работает, то нет. потом разобрался - все действительно в п
ороге 1,25. батареечн?й вход имеет достаточно в?сокое входное сопротивление и паразитную емкост
ь... короче, если быстро выключить-включить - не заведется, если выключить и подождать несколько
минут - заведется, если выключить, быстро коротнуть батареечный вход и включить - тоже заведетс
я.


 
 Re:Может вот это
Автор: Vadim ()
Дата:   05/03/2005 11:49

Backup Supply Input for Any Standard 3V Lithium Cell or Other Energy Source. Battery
voltage must be held between the minimum and maximum limits for proper operation.


но почему с резистором работают часики?



Отправка отредактированного (05/03/2005 11:51)


 
 Лечилось аналогично?
Автор: BoolAB ()
Дата:   05/03/2005 11:56

резюком на землю?
Просто 1МОм на себя вытянет току в 10 раз больше, чем вся микроха в режиме работы
от батареи (3мкА на резисторе против 300нА на DS1307 при работающем генераторе)


 
 Re: Лечилось аналогично?
Автор: Vas ()
Дата:   05/03/2005 11:59

я вот поставил батарею и только тогда что-то начало работать но как-то всё криво

с резюком не хотел девайс работать

Увсегда


 
 А диод и резюк с Vcc убрали?
Автор: BoolAB ()
Дата:   05/03/2005 12:03

и что значит "криво"?


 
 Re: А диод и резюк с Vcc убрали?
Автор: Vas ()
Дата:   05/03/2005 12:13

читет только регистр 0х00 а потом всё дело виснет

Увсегда


 
 Re: А диод и резюк с Vcc убрали?
Автор: BoolAB ()
Дата:   05/03/2005 12:15

тогда проверяйте реализацию I2C. Читать пытаетесь побайтно или блоком? Может лишний
Stop уходит?


 
 диод не убирал
Автор: Vas ()
Дата:   05/03/2005 12:15

диод и резюк не трогал

Увсегда


 
 читаю по байтно
Автор: Vas ()
Дата:   05/03/2005 12:16

читаю по байтно

Увсегда


 
 Re: А диод и резюк с Vcc убрали?
Автор: Vadim ()
Дата:   05/03/2005 12:19

А не проблема ли тут с I2C ? (резисторы есть?)
При чтении надо маркер устанавлиаать, иначе адрес чтения будет текущий и с каждым
разом увеличиваться на 1, и т.д


 
 резисторы есть
Автор: Vas ()
Дата:   05/03/2005 12:21

думаю может лучше блоко читать

Увсегда


 
 Re: диод не убирал
Автор: BoolAB ()
Дата:   05/03/2005 12:23

Тогда что-же удаётся считать с адреса 0х00? Секунды тикают, или читается 00h или
80h?
кстати, максимум Vbat - 3.5V, а сколько остаётся после резистора и диода?


 
 Re: диод не убирал
Автор: Vas ()
Дата:   05/03/2005 12:29

читается 0х80. у меня Vbat = 3,8B
void rtc_read(unsigned char rtc_addres, unsigned char rtc_buffer)
{
SEN = 1;
while(SEN);
ACKDT = 0;

SSPIF = 0;
SSPBUF = 0xd0;
while(!SSPIF);
SSPIF = 0;

SSPBUF = rtc_addres;
while(!SSPIF);
SSPIF = 0;

RSEN = 1;
while(RSEN);

SSPIF = 0;
SSPBUF = 0xd1;
while(!SSPIF);
SSPIF = 0;

RCEN = 1;
while(!STAT_BF);
rtc_buffer = SSPBUF;
ACKEN = 1;
while(ACKEN);

PEN = 1;
while(PEN);
}

Увсегда


 
 Не крут в Сях
Автор: BoolAB ()
Дата:   05/03/2005 12:55

но, как я понимаю, последовательность у Вас такова:
Start - послать D0 (запись в DS1307) - Послать адрес в часах - Повторный старт -
Послать D1 (чтение из DS1307) - Читать байт - выдать ACK=1 - Stop

не помню почему, но у меня идёт так (чтение блоком):
Start - послать D0 - Послать адрес в часах (00) - Stop - Start - Послать D1 -
Читать 6 байт, выдавая ACK=0 - читать байт - выдать ACK=1 - Stop
Видимо, лишний Stop у меня от того, что в DS не описана операция чтения по
произвольному адресу, поэтому я её разделил на 2: запись адреса и чтение начиная с
текущего.
И всё-таки, снимите подтяжку Vbat к Vcc.


 
 снимал
Автор: Vas ()
Дата:   05/03/2005 13:11

снимал ставил батрею и ничего
может девайс новый поставить

Увсегда


 
 Re: Не крут в Сях
Автор: Vadim ()
Дата:   05/03/2005 14:19

Чтение происходит из ячейки, к которой последний раз обращались, по этому:
старт
слэйв адрес+WR
Адрес регистра из которого читать
старт(повторный)
слэйв адрес+RD
прием байта1

...

прием байта N

стоп


при принятии байта надо формировать бит ACK всегда, КРОМЕ последнего приннятого
байта



Отправка отредактированного (05/03/2005 14:21)


 
 Re: Не крут в Сях
Автор: BoolAB ()
Дата:   05/03/2005 14:33

Не пробовал без промежуточного стопа. Как написал - сразу заработало, поэтому не
копался дальше. Если приспичит оптимизить из-за нехватки памяти - попробую убрать.


 
 ВСЕ ЗАМУЧИЛ RTC DS1307
Автор: Vas ()
Дата:   07/03/2005 19:27

заменил девайс, оставил резюк и диод
работает нормально
только вот при пропадании Uпит и Vбат происходит сброс всех регистров в девайсе,
приходится переустанавливать время заново

Увсегда


 
 вопосик ds1307
Автор: Vas ()
Дата:   09/03/2005 13:34

при пропадании Uпит и Vбат происходит сброс всех регистров в девайсе,
вообще это нормально?

Увсегда


 
 Re: вопосик ds1307
Автор: Nиколай ()
Дата:   09/03/2005 14:01

Vas писал(а):

> при пропадании Uпит и Vбат происходит сброс всех регистров в
> девайсе, вообще это нормально?

Нормально. регистры - оперативная память - без питания все значения портятся.


 
 кривовато дело
Автор: Vas ()
Дата:   09/03/2005 14:39

это каждое включение устройства обязательно надо проверять потерю питания

Увсегда


 
 Дык, а батарею поставить? (-)
Автор: BoolAB ()
Дата:   09/03/2005 15:04

-


 
 Re: Дык, а батарею поставить? а вдруг что
Автор: Vas ()
Дата:   09/03/2005 15:13

все равно на всякий надо проверять постоянно

Увсегда


 
 определение наличия батарейки
Автор: bzx ()
Дата:   09/03/2005 15:14

В свободную память 08H-3FH пишим, вернее инициализируем, свой ID, например
0x01234567, по каждому включению устройства контроллер проверяет ID. Если нет
батарейки, то, понятно, ID не совпадет.


 
 да можно так
Автор: Vas ()
Дата:   09/03/2005 15:31

-

Увсегда