Всё по DS1307 и прочим часам Dallas (Maxim)

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
sphincs
Нашел транзистор. Понюхал.
Сообщения: 174
Зарегистрирован: Вт сен 11, 2012 09:13:52
Откуда: Брест, Беларусь
Контактная информация:

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение sphincs »

BOB51, да, именно такие взял. буду пробовать.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение Gudd-Head »

ЧИПиДИП — кладезь картинок элементов.
СпойлерИзображение
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15550
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение BOB51 »

Тогда с кварцем вроде проблем быть не должно... :dont_know:
Хотя с годик назад ходили слухи о бракованной партии... Но по счастью, пока не попадались. :solder:
DrLithium
Открыл глаза
Сообщения: 79
Зарегистрирован: Вт фев 19, 2008 10:14:47
Откуда: SPb

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение DrLithium »

Gudd-Head писал(а):Дык, куда ж без кондёров по питанию у (цифровых) микросхем???

Дак уже тупо привыкаешь верить даташиту. И про доп кондёр банально забываешь. Кроме того смотришь подобные схемы у других и не видишь чего надо - типа и так работает. Но на деле оказалось, что: курить даташит - не раскурить! И откуда глюки раскут не понятно, т.к. думаешь: но у других же работает? Теперь эти грабли (а может не надо его) пройдены - НАДО ОБЯЗАТЕЛЬНО НАВЕШИВАТЬ КОНДЁР!
Если в голове каша, значит ваш котелок варит!
Аватара пользователя
prinv
Вымогатель припоя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь
Контактная информация:

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение prinv »

Котаны, добрый день!

Посмотрел видео о "лечении" модуля DS1307 - у меня именно такой модуль.
Реально необходимо вносить описанные в видео изменения?
И второй вопрос: нужно ли модуль DS1307 шунтировать по питанию кондёрами?

Никакая контра не уйдёт от нас
Tenken
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт янв 17, 2013 21:25:30
Откуда: Тула

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение Tenken »

Здравствуйте, окончательно запутался с этими часами! Использую Кодвижн со встроенной библиотекой. Все вроде просто, но нихрена непонятно, собрал сразу на макетной плате, чтобы проверять часы. Сделал печатную плату под 1307 начитавшись рекомендаций. Просто хочу заставить их работать. Есть шаблон . Используя функции : rtc_set_time(3,0,0);rtc_set_date(6,13,10,13);
Часы запускаются и идут, но при выключения питания( питание 5 вольт , стабильное и даже при наличии батарейки на 3 в) Они перезапускаются заново, как раз по значениям этих функций. Но без этих строк , часы не хотят идти.
Как заставить их получать верное время после отключения питания.И при появлении питания снова?
Нашел на просторах интернета еще такую функцию - void rtc_write(unsigned char address,unsigned char data); - запись данных в микросхему часов, например выбрать 12 или 24 часовой формат времени, выбрать частоту импульсов на выходе OUT и тд
Но в справке под вижона про неё ничего нет, что очень странно.
Вложения
44.c
(4.86 КБ) 375 скачиваний
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение AlanDrakes »

Уже довольно давно описал несколько функций по работе с этими часами, и всё работает как положено.
Первый вариант был написан ещё на Ассемблере, до победы над встроенным в AVR I2C интерфейсом. Естественно, софтовый.
Потом переход на Си, победа над I2C... но часы работают всегда с пол пинка.
Проверьте, не пропадает ли резервное питание на микросхеме часов, что оно в пределах допусков (2.5~3.5V), что оно не дёргается при переключении на основное питание платы и прочее, прочее, прочее.
Так же, можно проверять, есть ли секундные импульсы на соответствующем пине (SQWE) микросхемы.
Мой опыт подсказывает, что часы работают на любой плате, с любым более-менее живым кварцем при достаточном питании.
osetroff
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пт фев 05, 2016 07:57:04

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение osetroff »

Контроллер запитан от солнечной панели на 12V через LDO 3.3V.
Поставил на питание для ds3231 суперконденсатор 5.5V 4F.
Хочу зарядить суперконденсатор через отдельное LDO хотя бы до 5V.
Однако, опробованные мной LDO имеют утечку при отключенном Vin; суперконденсатор разряжается.

Подумал про LDO на 6V и диод после LDO перед суперконденсатором для снижения зарядного напряжения.

Может, кто предложит более красивый и экономичный вариант?
Благодарю.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15550
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение BOB51 »

Рекомендую покопаться на сайте у maxim-dallas или еще где... " Trickle
Charge" вроде называется...
Пока из старого накопалось по работе с RTC имеющими зарядник для ионистора:
AN3517.PDF
(56.96 КБ) 349 скачиваний

APP82.PDF
(368.43 КБ) 331 скачивание

:roll:
osetroff
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пт фев 05, 2016 07:57:04

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение osetroff »

Мне нравится именно ds3231, переходить на ds1302 или иную микросхему не планирую.
Возможно, есть у кого опыт по ldo с enable, которые не дают утечку при low на en?
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15550
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение BOB51 »

А речь идет не о 1302, а о примерах ппостроения систем заряд-разрядки дежурного конденсатора.
8)
Кстати... У 3231 вроде батарейки достаточно...
:roll:
osetroff
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пт фев 05, 2016 07:57:04

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение osetroff »

Насколько я понял, там зарядка осуществляется через резистор и диод.
Так все равно нужно LDO, не вижу отличия от моего решения.
Вероятно, имея LDO на 6V с enable, меня бы все устроило.
Может, знаете LDO на 6V с enable?

Батарейку не хочу.
Следить, менять - кто будет?
Конденсатор припаял - и забыл.
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение AlanDrakes »

Ну так... поставьте в цепи зарядка конденсатора диод шотки, а перед ним стабилитрон на 5.2В. В чем проблема? То же LDO получите.
Естественно, перед стабилитроном - какой-нибудь ограничительный резистор.
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение FreshMan »

в 3231 по нажатию кнопки пытаюсь переключится с 24 режима на 12 часовой режим
http://dpaste.com/1ZB22XD
где может быть ошибка в коде ?
Tell Me The Truth
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение WiseLord »

Я бы для начала вычитал регистр, поменял его, а потом уже записал.
Ну и надо не забыть сами часы в регистре пересчитать, чтобы заново время не наводить. Т.е. как-то так:

Код: Выделить всё

void kn_1_short(void) {
    uint8_t reg02 = rtc_read(0x02);
    if (reg02 & (1<<6)) { // 12h => 24h
        reg02 = (reg02 & (0x1F)) + (reg & (1<<5) ? 12 : 0);
    } else { // 24h => 12h
        reg02 = reg02 % 12;
    }
    rtc_write(0x02, reg);
}

Но, возможно, вычисления будут и сложнее. Я не знаю, как именно считает часы DS-ка. Мой расчёт (и то, возможно, неправильный) для такого варианта:

Код: Выделить всё

12h:  09a 10a 11a 12a 01p 02p ... 09p 10p 11p 12p 01a 02a ...
24h:  09  10  11  12  13  14  ... 21  22  23  00  01  02  ...

Но, возможно, DS-ка считает как это принято в этих странных странах:

Код: Выделить всё

12h:  09a 10a 11a 12p 01p 02p ... 09p 10p 11p 12a 01a 02a ...
24h:  09  10  11  12  13  14  ... 21  22  23  00  01  02  ...

То есть, после 11AM идёт не 12AM, а 12PM, а затем 1PM.

Надо проводить эксперименты для такого варианта, и тогда пересчитывать регистр по-другому, с учётом этого перехода:
Спойлер

Код: Выделить всё

Время   24h     AM/PM

0       0x00    0x32
1       0x01    0x01
2       0x02    0x02
3       0x03    0x03
4       0x04    0x04
5       0x05    0x05
6       0x06    0x06
7       0x07    0x07
8       0x08    0x08
9       0x09    0x09
10      0x10    0x10
11      0x11    0x11
12      0x12    0x32
13      0x13    0x21
14      0x14    0x22
15      0x15    0x23
16      0x16    0x24
17      0x17    0x25
18      0x18    0x26
19      0x19    0x27
20      0x20    0x28
21      0x21    0x29
22      0x22    0x30
23      0x23    0x31
Ну, и в случае AM/PM надо не забыть при выводе на результат маску 0x1F накладывать.

А вообще, функция бесполезная и относительно много ресурсов требующая. Я бы забил.

P.S. А если так уж сильно надо - гораздо проще лезть в нутро DS-ки на этот счёт, а использовать "дефолтный" 24-часовой формат на её уровне, а уже при выводе времени, если надо - выводить его в 12-часовом формате. Внешне это будет выглядеть точно так же, но отнимет гораздо меньше сил и места в Flash контроллера.
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение FreshMan »

WiseLord, у меня есть одна и таже функция, но написана по разному

Код: Выделить всё

uint8_t bcd2bin(uint8_t value) {
   return (value / 16) * 10 + (value % 16);
}

Код: Выделить всё

uint8_t BCD_to_BIN(uint8_t x)      // BCD to Binary  Conversion
{
    return ((x) >> 4)*10 + ((x) & 0x0F);
}


как работает вторая мне ПОЛНОСТЬЮ понятно, а вот как работает первая - нет
можете растолковать по популярному ? :))
Tell Me The Truth
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение Аlex »

Обе записи эквивалентны друг другу.
Деление на 16 - сдвиг вправо на 4 бита.
Остаток от деления на 16 - взятие младших 4-ёх бит.
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение WiseLord »

Мало того, вероятнее всего, скомпилированный код будет полностью одинаков. Компилятор обычно хорошо понимает такие вещи как умножение/деление на 2,4,8,16 и другие степени двойки и заменяет дорогое умножение и деление дешёвыми сдвигами.
Аватара пользователя
m.ix
Друг Кота
Сообщения: 16545
Зарегистрирован: Вт сен 07, 2010 03:01:06
Откуда: Moscow-Izmaylovo
Контактная информация:

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение m.ix »

тут видео
на рынке что то подобное продавали
я возмутился почему там две микры.
сейчас снова возмутился увидев, накой туда ещё и 2432 вставили?
500р хотели 1302
Лечу лечить WWWашу покалеченную технику.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15550
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Сообщение BOB51 »

1302 для кормежки от кондрынсатора (там и зарядное "на броту" предусмотрено) - хороша штука в конструкциях с ограниченным доступом и периодическим сетевым подкормом (или от фото/термо батарей).
:hunger:
Ответить

Вернуться в «Периферия»