Например TDA7294

Форум РадиоКот • Просмотр темы - #Часы реального времени DS1307 от Dallas Semiconductor#
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 16:22:32

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 82 ]    , , 3, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт апр 17, 2012 20:52:07 
Вымогатель припоя
Аватар пользователя

Карма: 2
Рейтинг сообщений: 6
Зарегистрирован: Ср ноя 30, 2011 02:29:51
Сообщений: 586
Откуда: Курск-сити
Рейтинг сообщения: 0
*Trigger* писал(а):
Так ведь интерфейс I2C, значит, временнЫе интервалы зависят от тактовых импульсов с МК.

С данным датчиком я общалса поверхностно,в следствии чего не могу вспомнить его задержки.А вот например его молочный брат(тоже с ииц на борту) DS1820 требует 750мкс на опрос,и если будет времени меньше,то с него считаютса не верные данные!Я не про протокол сети говорю,а про считывание данных с датчика! Учите матчасть!

_________________
У кошки четыре ноги: вход,
выход, земля и питание.
Но трогать её не моги:
получится замыкание


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт апр 17, 2012 21:02:31 
Потрогал лапой паяльник

Карма: 9
Рейтинг сообщений: 30
Зарегистрирован: Пн май 23, 2011 18:27:41
Сообщений: 336
Рейтинг сообщения: 0
А при чем I2C и DS1820 там 1-wire
I2C шина синхронная - как спросишь, так и ответит по стандарту 100кГц можно меньше, но и 500 схавает не подавится.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт апр 17, 2012 21:03:33 
Друг Кота
Аватар пользователя

Карма: 81
Рейтинг сообщений: 1377
Зарегистрирован: Пн май 11, 2009 14:15:00
Сообщений: 3059
Откуда: СПб
Рейтинг сообщения: 0
Медали: 1
Мявтор 3-й степени (1)
В том то и проблема, шина синхронная - а прерывания влияют.

_________________
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт апр 17, 2012 21:28:10 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13492
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Какие прерывания? На что влияют? И при чём тут 1-wire?


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт апр 17, 2012 21:30:47 
Друг Кота
Аватар пользователя

Карма: 81
Рейтинг сообщений: 1377
Зарегистрирован: Пн май 11, 2009 14:15:00
Сообщений: 3059
Откуда: СПб
Рейтинг сообщения: 0
Медали: 1
Мявтор 3-й степени (1)
ploop писал(а):
при чём тут 1-wire?

Это Дрон перепутал.
ploop писал(а):
Какие прерывания? На что влияют?

Вот на что:
*Trigger* писал(а):
Собрал часы, в них стоит DS1307. Периодически на индикаторах появляется белиберда в виде ненужных цифр (например, было 12 часов, но вдруг проскакивает 45 часов).

*Trigger* писал(а):
Ещё выяснил, чем больше частота прерываний, тем больше глюков.

Добавлено несколько минут спустя:
Сделал так: время из RTC читается 3 раза с задержкой 200 мс, если все три раза совпали - время считано правильно.

_________________
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт апр 17, 2012 21:55:52 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13492
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
С железом нет проблем? Может, дорожки куда подтравливают, или рядом цепь силовая...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт апр 17, 2012 21:58:10 
Друг Кота
Аватар пользователя

Карма: 81
Рейтинг сообщений: 1377
Зарегистрирован: Пн май 11, 2009 14:15:00
Сообщений: 3059
Откуда: СПб
Рейтинг сообщения: 0
Медали: 1
Мявтор 3-й степени (1)
Нет, дороги в порядке, силовых цепей рядом нет.

_________________
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Чт апр 19, 2012 09:34:01 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14062
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
микроLAN (ds18b20) очень критично к прерыванию,остановке обмена
I2C (ds1307) допускает полный останов обмена , но... за время останова содержимое регистров, естественно, изменится - так что надо "мурыжить" в разумных пределах.
возможны "глюки" за счет неотслеженных наложений прерываний в программе
только вот по "родному" даташиту полагается читать сразу весь "пакет" ОЗУ...дабы небыло непоняток с последующим чтением без предварительно указанного адреса.
есть еще приемчик "чтение по заданному адресу" - но это отступление от стандартного протокола для DS1307 8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Пт апр 20, 2012 23:47:37 
Поставщик валерьянки для Кота

Карма: 5
Рейтинг сообщений: 21
Зарегистрирован: Пт авг 29, 2008 16:28:19
Сообщений: 2108
Откуда: Киев
Рейтинг сообщения: 0
Ну почему же отступление, это вполне разумное решение, и для протокола i2c вполне себе норма.

Для DS3231 я вообще использовал циклическое чтение (начинал с середины пакета, проходит через конец в начало, и читал еще несколько байт). Так было удобно, потому что по середине были байты которые мне были не нужны.

_________________
Giggity giggity goo!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб апр 21, 2012 08:19:36 
Грызет канифоль

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Сб май 29, 2010 00:08:48
Сообщений: 293
Откуда: Харьков
Рейтинг сообщения: 0
Замерял длительность выполнения чтения времени и даты. примерно 3 млсек для TWI и 4 млсек для программного I2C. Плюс еще пара млсек для вывода значения на ЖКИ. Т.е. все достаточно быстро и должно протекать незаметно.
Вот такая нехитрая функция отображает время на жки индикаторе:
Код:
//выводит на жки текущее время 
void ind_real_time (char line, char row) {
     rtc_get_time(&hour,&minute,&sec);              // прочесть время из DS1307
     make_buf_rtc_time (hour,minute, sec);        // преобразовать в строку
     lcd_out  (line,  row, buf_rtc);                       // вывести значение на ЖКИ
}


Функция вызывается один раз в секунду, по флагу, устанавливаемому по прерыванию Т0.
Все работает как надо, но один непонятный момент наблюдается. Иногда индикация секунд как-бы приостанавливается на одну-две секунды. Т.е. 12:12:59 -> пауза -> 12:13:02. Думал , что возможно мк там где-то стопорится почему-то.
Для проверки вывел рядом со временем мигающее каждые полсекунды двоеточие ':'. Так во время паузы часов, это двоеточие продолжает мигать в нормальном режиме, т.е. мк работает нормально..
Вот и не пойму теперь в чем причина такого притормаживания секунд? Толи сама мс часов неисправна, хотя за четверо суток часы не ушли ни вперед ни назад, толи .....
Может кто сталкивался с подобным? А то у меня пока одно решение в голове - выкинуть эти секунды вообще..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб апр 21, 2012 08:28:37 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14062
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
речь идет о нарушении стандарта относительно aсk... 8)
ниже моя подручная шпоргалка :beer:
(к сожалению работаю толька на асме) :cry:


Вложения:
ds1307map.pdf [13.73 KiB]
Скачиваний: 552


Последний раз редактировалось BOB51 Сб апр 21, 2012 08:40:42, всего редактировалось 1 раз.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб апр 21, 2012 08:33:01 
Грызет канифоль

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Сб май 29, 2010 00:08:48
Сообщений: 293
Откуда: Харьков
Рейтинг сообщения: 0
BOB51 писал(а):
речь идет о нарушении стандарта относительно ask... 8)
ниже моя подручная шпоргалка :beer:


Спасибо. Но что с этим делать применительно к библиотекам КодВижна?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб апр 21, 2012 08:44:04 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14062
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
дописывать свои изменения или создавать собственную библиотеку :cry:
в этом, кстати, и заключается владение языками Си & прочими высокоуровневыми... :beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт май 08, 2012 01:52:40 
Родился

Зарегистрирован: Ср апр 07, 2010 19:00:32
Сообщений: 6
Рейтинг сообщения: 0
У меня вопрос:
Как реализовать настройку даты DS1307, я понимаю что есть функция rtc_set_date(); и значение переменных просто записывается в DS1307. Но как быть с переполнением? Например чтобы настроить день я решил поступить так:

Код:
if(PINB.4==0){date++; delay_ms(250);rtc_set_date(date,month,year);}

и таким способом дата стремиться к 255, конечно можно было не замораживается и приписать
Код:
if (date>31) date=1;

но как быть тогда, когда количество дней 30,29(при этом надо учитывать високосный год),28


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт май 08, 2012 07:21:29 
Друг Кота
Аватар пользователя

Карма: 81
Рейтинг сообщений: 1377
Зарегистрирован: Пн май 11, 2009 14:15:00
Сообщений: 3059
Откуда: СПб
Рейтинг сообщения: 0
Медали: 1
Мявтор 3-й степени (1)
Я решил эту проблему так: сначала ставим год, потом месяц. В начале программы создаём массив с максимальным числом дней в месяцах (в феврале - 28). Устанавливаем дату и, если месяц не равен 2, сравниваем её элементом массива: max_date[month-1]. Если месяц равен 2, то если год не делится на 4, то сравниваем с max_date[month-1], а если делится - то с max_date[month-1]+1.

_________________
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт май 08, 2012 15:45:08 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14062
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
????
в микросхемах RTC календарь прошит маской - он сам контролирует количесиво дней в месяце,
нужно только правильно их задать при вводе, но данная проверка - функции программы ввода данных с клавиатуры управления, а не ввода в RTC :shock:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт май 08, 2012 15:58:21 
Друг Кота
Аватар пользователя

Карма: 81
Рейтинг сообщений: 1377
Зарегистрирован: Пн май 11, 2009 14:15:00
Сообщений: 3059
Откуда: СПб
Рейтинг сообщения: 0
Медали: 1
Мявтор 3-й степени (1)
Писать в RTC нужно после завершения установки в функции, а не после каждого прибавления 1.

_________________
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт май 08, 2012 17:52:33 
Поставщик валерьянки для Кота

Карма: 5
Рейтинг сообщений: 21
Зарегистрирован: Пт авг 29, 2008 16:28:19
Сообщений: 2108
Откуда: Киев
Рейтинг сообщения: 0
RTC правильно считает время, только если значения в его памяти допустимые. Если поставить там 255, он спокойно это значение запишет, но может уже никогда не выйти на нормальный режим. Да, нужно самому проверять количество дней в месяце, и в т.ч. учитывать високосные года. И при переходе между 12/24 форматами, тоже нужно программно поправлять часы.

Там внутри нету никакого контроллера, простая логика, которая никак не проверяет правильность данных в памяти.

Хотя вроде особых сложностей нет, я в своё время за несколько часов это всё написал на ассемблере (не учитывая время на оптимизацию кода).

_________________
Giggity giggity goo!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вт май 08, 2012 21:18:50 
Родился

Зарегистрирован: Ср апр 07, 2010 19:00:32
Сообщений: 6
Рейтинг сообщения: 0
*Trigger* спасибо за разумное объяснение.
Сделал также, устанавливаю сперва год, потом месяц.
В начале массив
Код:
 char max_date[]={31,28,31,30,31,30,31,31,30,31,30,31};

А вот сам блок настройки даты с учетом количества дней в месяце
Код:
int i;
int y;
if(knop2==0) date++; delay_ms(100);
if(knop3==0) date--; delay_ms(100);
y=year;
i=((y*10)/4)%10;
if (month==2 && i==0)
    {
     if (date > max_date[month-1]+1) date=1;
     if (date==0) date = max_date[month-1]+1;
    }
else
    {
     if(date > max_date[month-1]) date=1;
     if(date==0) date = max_date[month-1];
    }
rtc_set_date(date,month,year);


Последний раз редактировалось dem13an Чт май 10, 2012 16:49:12, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Чт май 10, 2012 12:39:07 
Друг Кота
Аватар пользователя

Карма: 81
Рейтинг сообщений: 1377
Зарегистрирован: Пн май 11, 2009 14:15:00
Сообщений: 3059
Откуда: СПб
Рейтинг сообщения: 0
Медали: 1
Мявтор 3-й степени (1)
Это ещё зачем?
Код:
i=((y*10)/4)%10;

Пишем так:
Код:
if(knop2==0) date++; delay_ms(100);
if(knop3==0) date--; delay_ms(100);
if ((month==2) && ((year%4)==0))
    {
     if (date > max_date[month-1]+1) date=1;
     if (date==0) date = max_date[month-1]+1;
    }
else
    {
     if(date > max_date[month-1]) date=1;
     if(date==0) date = max_date[month-1];
    }
rtc_set_date(date,month,year);


И скобки в if не помешают. (month==2) && ((year%4)==0)

_________________
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 82 ]    , , 3, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y