Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

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

Чт мар 12, 2015 12:35:59

BOB51, да, именно такие взял. буду пробовать.

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

Чт мар 12, 2015 13:05:34

ЧИПиДИП — кладезь картинок элементов.
СпойлерИзображение

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

Чт мар 12, 2015 15:59:53

Тогда с кварцем вроде проблем быть не должно... :dont_know:
Хотя с годик назад ходили слухи о бракованной партии... Но по счастью, пока не попадались. :solder:

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

Ср мар 18, 2015 02:42:19

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

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

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

Пн фев 29, 2016 06:50:23

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

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

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

Пн апр 11, 2016 22:44:33

Здравствуйте, окончательно запутался с этими часами! Использую Кодвижн со встроенной библиотекой. Все вроде просто, но нихрена непонятно, собрал сразу на макетной плате, чтобы проверять часы. Сделал печатную плату под 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 KiB) Скачиваний: 314

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

Пт июл 08, 2016 16:20:25

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

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

Пт июл 15, 2016 19:00:50

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

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

Может, кто предложит более красивый и экономичный вариант?
Благодарю.

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

Пт июл 15, 2016 20:17:58

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

APP82.PDF
(368.43 KiB) Скачиваний: 281

:roll:

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

Пт июл 15, 2016 20:28:50

Мне нравится именно ds3231, переходить на ds1302 или иную микросхему не планирую.
Возможно, есть у кого опыт по ldo с enable, которые не дают утечку при low на en?

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

Пт июл 15, 2016 23:09:21

А речь идет не о 1302, а о примерах ппостроения систем заряд-разрядки дежурного конденсатора.
8)
Кстати... У 3231 вроде батарейки достаточно...
:roll:

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

Сб июл 16, 2016 08:15:29

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

Батарейку не хочу.
Следить, менять - кто будет?
Конденсатор припаял - и забыл.

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

Сб июл 16, 2016 14:37:20

Ну так... поставьте в цепи зарядка конденсатора диод шотки, а перед ним стабилитрон на 5.2В. В чем проблема? То же LDO получите.
Естественно, перед стабилитроном - какой-нибудь ограничительный резистор.

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

Чт авг 04, 2016 15:54:34

в 3231 по нажатию кнопки пытаюсь переключится с 24 режима на 12 часовой режим
http://dpaste.com/1ZB22XD
где может быть ошибка в коде ?

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

Чт авг 04, 2016 16:56:35

Я бы для начала вычитал регистр, поменял его, а потом уже записал.
Ну и надо не забыть сами часы в регистре пересчитать, чтобы заново время не наводить. Т.е. как-то так:
Код:
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 контроллера.

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

Чт авг 04, 2016 19:10:53

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);
}


как работает вторая мне ПОЛНОСТЬЮ понятно, а вот как работает первая - нет
можете растолковать по популярному ? :))

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

Чт авг 04, 2016 20:27:08

Обе записи эквивалентны друг другу.
Деление на 16 - сдвиг вправо на 4 бита.
Остаток от деления на 16 - взятие младших 4-ёх бит.

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

Чт авг 04, 2016 20:55:23

Мало того, вероятнее всего, скомпилированный код будет полностью одинаков. Компилятор обычно хорошо понимает такие вещи как умножение/деление на 2,4,8,16 и другие степени двойки и заменяет дорогое умножение и деление дешёвыми сдвигами.

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

Вт авг 23, 2016 04:58:25

тут видео
на рынке что то подобное продавали
я возмутился почему там две микры.
сейчас снова возмутился увидев, накой туда ещё и 2432 вставили?
500р хотели 1302

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

Вт авг 23, 2016 07:16:34

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