Например TDA7294

Форум РадиоКот • Просмотр темы - Всё по DS1307 и прочим часам Dallas (Maxim)
Форум РадиоКот
Здесь можно немножко помяукать :)





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

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


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



Начать новую тему Ответить на тему  [ Сообщений: 316 ]     ... , , , 15,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вс апр 01, 2018 15:09:05 
Открыл глаза

Зарегистрирован: Вт фев 19, 2008 10:14:47
Сообщений: 79
Откуда: SPb
Рейтинг сообщения: 0
Тут можно сказать: есть задача, есть разные пути её решения. Ни когда не знаешь заранее верного пути. Как можно заранее знать, что сам себе переусложнил задачу? Я бы остановился на первом варианте, если б он заработал. Быстро, просто и легко.

Но здесь я наверное показываю, что есть путь, есть поиск, решение, есть проблемы, есть и недостаток опыта, есть его приобретение, есть отсутствие помощи, как есть и мнения уже по факту свершения и ещё до фига чего-то.

Я не считаю, что я что-либо перемудрил. Нет "правильного" и "не правильного", есть "рабочее" или "не рабочее". Это важно! "Мудрость" тут вообще не при чём. Можно было сдаться, заныть, заплатить безбашенных денег "дяде". Но когда решение найдено, то это весомее миллионов слов и мнений.

Просто советую искать и не сдаваться. Опыт дело наживное.

И наверное хватит оффтопы разводить ))

_________________
Если в голове каша, значит ваш котелок варит!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Пт апр 06, 2018 13:38:23 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 287
Откуда: Чебоксары
Рейтинг сообщения: 0
Здравствуйте!!! Вот не задача. Ранее мной был написан код для изучения и тестирования работы с часами по TWI. На тот момент все отрабатывало на УРА.Затем я снова вернулся к своему грандиозному проекту для внедрения этих часов.Немнго усовершенствовал ранее написанный код и приступил к испытаниям.Но новая версия работает как-то не стабильно.Обмен с данными по TWI не стабильны.А именно то есть ACK то нет. Долго искал причину, перепробовал всякое,тем не менее решил проверить ранее написанный код. и обнаружилось,что тоже самое происходит и с проверенным кодом. В коде ниже я привел пример на функции чтения данных из часов. каждая сессия чтения отличается, то считывается 6 байт, то 2 байта где-то есть ACK где-то его нет, а где-то анализатор выдает Missing ACK/NACK. Я максимально убрал не нужное с кода, оставил минимум нужного, чтобы было проще анализировать.Я уже подумываю на то , что конкретно измучил свой МК и нужно его менять. Дальнейшая его судьба зависит от Вас :(
Спойлер
Код:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <avr/interrupt.h>
#define STOP_TWI TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWSTO)

struct time1
{
   uint8_t Secund;
   uint8_t Minute;
   uint8_t Hour;
   uint8_t Den;
   uint8_t Dat;
   uint8_t Mecyac;
   uint8_t Yahr;
}TIME_TWR;

void START_TWI(void)
{
   TWCR=(1<<TWEN)|(1<<TWSTA)|(1<<TWINT);
   while(!(TWCR&(1<<TWINT)));
}

void REPEATED_START_TWI(void)
{
   TWCR=(1<<TWEN)|(1<<TWSTA)|(1<<TWINT);
   while(!(TWCR&(1<<TWINT)));
}
void clear_TWINT_ACK(void)
{
   TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA);
   while(!(TWCR&(1<<TWINT)));
}

void clear_TWINT_NAK(void)
{
   TWCR=(1<<TWINT)|(1<<TWEN);
   while(!(TWCR&(1<<TWINT)));
}

void READ_time(struct time1 *TIME_TWR)
{
   START_TWI();
   TWDR=0xd0;
   clear_TWINT_ACK();
   TWDR=0x00;
   clear_TWINT_ACK();
   
   REPEATED_START_TWI();
   TWDR=0xd1;
   clear_TWINT_ACK();
   
   clear_TWINT_ACK();     
   TIME_TWR->Secund=TWDR;
   clear_TWINT_ACK();     
   TIME_TWR->Minute=TWDR;
   clear_TWINT_ACK();
   TIME_TWR->Hour=TWDR;
   clear_TWINT_ACK();
   TIME_TWR->Den=TWDR;
   clear_TWINT_ACK();
   TIME_TWR->Dat=TWDR;
   clear_TWINT_ACK();
   TIME_TWR->Mecyac=TWDR;
   clear_TWINT_ACK();
   TIME_TWR->Yahr=TWDR;
   clear_TWINT_NAK();
   STOP_TWI;
}


int main(void)
{
   TWBR=35;
   TWCR|=1<<TWEN;
   
   while(1)
   {
      READ_time(&TIME_TWR);
   }
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Пт апр 06, 2018 14:28:31 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 1
Код:
   START_TWI();
   TWDR=0xd0;
   clear_TWINT_ACK();

По-моему, уже тут ошибка. Зачем взводить TWEA бит, если это ЗАПИСЬ байта?

TWEA нужен при чтении данных. Когда он взведён - данные ещё будут читаться дальше, когда нет - значит, это был последний байт, после чего пойдёт стоп. Но при записи - зачем?

Ну и, чисто эстетически, две одинаковые функции старта не нужны.


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Пт апр 06, 2018 15:00:13 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 287
Откуда: Чебоксары
Рейтинг сообщения: 0
По-моему, уже тут ошибка. Зачем взводить TWEA бит, если это ЗАПИСЬ байта?

это результат опробования разных вариантов.
Ну и, чисто эстетически, две одинаковые функции старта не нужны.

эстетически да,понимаю...

вот с исправленными замечаниями:
Спойлер
Код:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <avr/interrupt.h>
#define STOP_TWI TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWSTO)

struct time1
{
   uint8_t Secund;
   uint8_t Minute;
   uint8_t Hour;
   uint8_t Den;
   uint8_t Dat;
   uint8_t Mecyac;
   uint8_t Yahr;
}TIME_TWR;

void START_TWI(void)
{
   TWCR=(1<<TWEN)|(1<<TWSTA)|(1<<TWINT);
   while(!(TWCR&(1<<TWINT)));
}


void clear_TWINT_ACK(void)
{
   TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA);
   while(!(TWCR&(1<<TWINT)));
}

void clear_TWINT_NAK(void)
{
   TWCR=(1<<TWINT)|(1<<TWEN);
   while(!(TWCR&(1<<TWINT)));
   
}

void READ_time(struct time1 *TIME_TWR)
{
   START_TWI();
   TWDR=0xd0;
   clear_TWINT_NAK();
   TWDR=0x00;
   clear_TWINT_NAK();
   
   START_TWI();
   TWDR=0xd1;
   clear_TWINT_NAK();
   
   clear_TWINT_ACK();
   TIME_TWR->Secund=TWDR;
   clear_TWINT_ACK();   
   TIME_TWR->Minute=TWDR;
   clear_TWINT_ACK();
   TIME_TWR->Hour=TWDR;
   clear_TWINT_ACK();
   TIME_TWR->Den=TWDR;
    clear_TWINT_ACK();
   TIME_TWR->Dat=TWDR;
   clear_TWINT_ACK();
   TIME_TWR->Mecyac=TWDR;
   clear_TWINT_ACK();
   TIME_TWR->Yahr=TWDR;
   
   STOP_TWI;
}



int main(void)
{
   TWBR=35;
   TWCR|=1<<TWEN;
   
   while(1)
   {
      READ_time(&TIME_TWR);
   }
}


Добавлено after 5 minutes 11 seconds:
При пошаговой отладке заметил,что происходит зацикливание в while(!(TWCR&(1<<TWINT))). флаг TWINT не выставляется.С чем это может быт связано? Не помню в какой статье, велась дискуссия по поводу цикла while(!(TWCR&(1<<TWINT))). Один из участников писал, что такой цикл использовать нельзя, так как если часы отвалятся,то можно в цикле зависнуть навсегда.В даташите именно так ожидают флаг. Мое предположение,что если часы отвалятся, флаг в любом случае установиться,но будет соответствующий код ощибки в регистре стутуса. Так где истина?


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Пт апр 06, 2018 20:08:22 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 1
У меня в этом цикле есть дополнительный счётчик, который при переполнении выскакивает из цикла. Тоже ввёл когда-то из-за подвисаний DS1307 (или чтобы работало при её отсутствиии).


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вс апр 08, 2018 09:47:37 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 287
Откуда: Чебоксары
Рейтинг сообщения: 0
выскакивает из цикла.

не понятно почему нужно вручную выходить из цикла.TWINT устанавливается аппаратно,но этого не происходит.Он же в любом случае должен устанавливаться,хоть есть часы на шине, хоть их нет.Не хочется верить,что модульTWI глючит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вс авг 19, 2018 20:49:10 
Родился
Аватар пользователя

Карма: 12
Рейтинг сообщений: 12
Зарегистрирован: Вт авг 07, 2018 14:38:23
Сообщений: 7
Откуда: г.Могилев-Подольский
Рейтинг сообщения: 0
Здравствуйте,уважаемые Кототроники.Сегодня весь день перечитывал здешние посты посвященные часам 1307. Девайс,скажу вам довольно капризный.И не оттого,что он такой уж и сложный,а потому что даташит многих нужных вещах просто не пишет.Китайские товары всегда идут с примечанием "догадайся,мол,сама".А часики у меня долго не запускались,периодически дохли и воскресали,теряли время при выключении питания.Пришлось не раз курить даташит и предпринимать всяческие танцы с бубном,пока набрался некоторый опыт.Итак изложу все по-порядку.В проекте я пользуюсь контроллером АТМега16А,там на порту С пин0 и 1 есть аппаратный TWI (I2C).Он довольно капризный и пришлось немало поиграться пока я его оживил.Примеры кода я приведу в БАСКОМ-АВР,поскольку в нем и пишу.
1.Когда вы пишете шапку программы, правильно укажите скорость работы кристалла.У меня TWI работает только при 4000000 Гц.На скоростях ниже часы 1307 перестают быть видимыми.Кстати этот же фокус работает и для термометра DS18B20.Если с ним программа связаться не может - понизьте такты.И обязательно не забудьте ту же частоту выставить на фюзах контроллера
2.В Баскоме в шапке программы обязательно подключите библиотеку I2C_Twi.lbx если у вас аппаратный TWI.Эта библиотека есть в штатном дистрибутиве Баскома.
3.Правильно пропишите конфигурацию порта и пинов,на которых работает TWI. У меня в АТмеге16а TWI сидит на пинах 0 и 1 портаС. Потому в шапке пишу DDRC=&Bxxxxxx00 x - здесь определяет назначение пина 1 на ввод,0 на вывод.как вам нужно,но PinC.0 и PinC.1 выставлены здесь в нули на ввод.Если вы выставите их в 1,TWI не заработает и будете долго искать причину "поломки"
4.Определяю состояние уровней на пинах порта С при старте PortC=0,т.е все линии посажены в нуль.
5."Знакомлю" программу,где у нее пины SCL и SDA. Config SCL=PortC.0 Config SDA=PortC.1
6.Если TWI (или I2C) работают неуверенно,немного притормаживаю скорость обмена config I2Cdelay=10
7.Запускаю систему TWI,чтобы правильно выставила уровни на пинах С0 и С1 I2CInit.
8.Указываю программе скорость тактирования пина SCL Config TWI=100000
Все.Если у вас технически все подключено правильно,можете приступать к работе.Не забудьте,что пины SCL и SDA должны быть подтянуты к питанию резисторами 5..10Ком.

Рабочий код запускаем как обычно
I2CStart 'стартуем обмен с устройствами на шине TWI (I2C)
I2Cwbyte &HD0 'вызываем часы 1307 по их адресу &HD0
I2C wbyte 0 'выставляем регистр адресов на самый первый (нулевой по даташиту) регистр.Это регистр секунд
I2C wbyte 5 'Пишем в него что-нибудь в двоично-десятичном формате.Важно только,чтобы старший бит был равен 0,потому что он запускает часы 1307
Waitms 100 'даю схеме малость "опомниться" после проведенных манипуляций иначе у нее могут быть "заскоки".В иностранных программах этот "отдых" бывает даже до 500 миллисекунд.Я выставил 100.Пока хватает.Если в вашем экземпляре часов бывают каламбуры записи-чтения,пробуйте увеличивать интервалы между доступами к регистрам.
A=Minut 'некой байтовой переменной А присваивается значение Минут из подпрограммы настройки времени
A=MakeBCD(A) 'Дальше эта переменная конвертируется в двоично-десятичный вид функцией MakeBCD
I2Cwbyte A 'Конвертированная переменная А записывается в регистр минут часов 1307 и указатель адресов в микросхеме 1307 автоматом передвигается на регистр часов.
Записав данные в регистр минут снова даем схеме передышку Waitms 100 и по тому же образцу пишем часы,потом все остальное.Хотя и вроде не обязательно,но я также заношу ноль в регистр управления &HD7.Все.Заканчиваю настройку часов командой I2CStop.
А теперь про "фокусы" схемы.
1.Следите,чтобы напряжение на батарейке было в допустимых пределах.Иначе либо не читает,либо не пишет,либо вообще ее не видно.
2.В микросхеме по-видимому есть куча триггеров.которые должны находиться в каком-то определенном состоянии.По разным причинам,а особенно из-за пиковых всплесков напряжения на шине питания,статического электричества эти триггеры оказываются расстроенными и микросхема "защелкивается".Вроде все есть.все подключено,все в пределах,а она "сдохла".Путем танцев с бубном случайно удалось выяснить,что кратковременное замыкание вывода Vbat на землю действует как "сброс" и схема начинает отвечать на обращения.Долго не было понятно,почему регистры не держат настроек времени после выключения основного питания.Чего только не перепробовал.Помогло одно.Линии SCL и SDA отпаял от ведущего контроллера,чтобы его не повредить,потом SCL и SDA часов замкнул между собой накоротко и кратковременно "стукнул" по ним напряжением +5 вольт от шины питания.Ныне,тьху-тьху микросхема ожила и работает как в "былой молодости".Все пишет,все считает и хранит.Правда конфуз выловился некий и это уже внешними примочками не решить.Видно грешит внутренняя математика.Когда количество минут выставляю на 59 за ними на дисплее следует 60,61... и часы не меняются.Я рот разинул от удивления ... Если минуты при настройке выставляются в 58 все идет как по-салу.Вот пока... Успехов всем Кототроникам в их кропотливом хобби.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Пн авг 20, 2018 00:08:32 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Во-первых, на 4МГц (вроде там 6 нулей Вы нарисовали) TWI не рассчитан, частоты там на порядок меньше.. А DS1307 по даташиту вообще 100 кГц, ЕМНИП. Вот DS3231 может и на 400 кГц работать, но уж точно не на 4 МГц.
Во вторых, после 59 минут точно идут 00. Специально прямо сейчас поверил. А вот если зачем-то установить в большее, чем 60, значение, то будут и дальше увеличиваться, пока не выскочат-таки в нормальный диапазон.
В третьих, DS1307 - одно из самых простых устройств на шине I²C, и каких-либо сюрпризов от него ждать не приходится. Всё чётко по даташиту.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Пн авг 20, 2018 09:42:12 
Родился
Аватар пользователя

Карма: 12
Рейтинг сообщений: 12
Зарегистрирован: Вт авг 07, 2018 14:38:23
Сообщений: 7
Откуда: г.Могилев-Подольский
Рейтинг сообщения: 0
Спасибо за замечания и за Ваши интересные посты из коих я многому поучился.По канону все должно быть так как Вы и пишете,но мои экземпляры 1307 почему-то капризны и не хотят работать в таких режимах.Более того я написал здесь в посте config TWI=100000 и скажу Вам честно,микруха работать перестала.Один нуль удалил,получилось config TWI=10000 (!).Только так она пашет как ни в чем не бывало.Я думаю,что у ребят,постивших здесь о своих проблемах с 1307,тоже попались китайские микрухи "с фокусами",нетрадиционалы по даташиту" так сказать.так что у кого микруха имитирует "дохлость" попробуйте оживить ее сбросом и подбором режимов тактирования.Вещи все-таки китайские,а там не все "по-закону".И еще,уважаемый WiseLord,я хотел бы посоветоваться у Вас насчет 5807М FM радио.Сделал я его,но работает что-то оно неуверенно.Похоже там нет автоподстройки частоты,со временем станция уплывает в шумы.На какой ветке мы можем с Вами побеседовать на сию тему? Спасибо за ответ.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Пн авг 20, 2018 12:27:05 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Если не ошибаюсь, там в регистрах был какой-то бит, отвечающий за это.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Пн авг 20, 2018 12:40:07 
Родился
Аватар пользователя

Карма: 12
Рейтинг сообщений: 12
Зарегистрирован: Вт авг 07, 2018 14:38:23
Сообщений: 7
Откуда: г.Могилев-Подольский
Рейтинг сообщения: 0
Вы имеете ввиду схему 5807М я так понял.Там действительно в третьем регистре есть бит TUNE.Выставив его в 1 добиваемся точной настройки на станцию,после чего он автоматом сбрасывается в 0 и за привязкой к частоте ничто уже более не следит.Или я что-то накосячил в познаниях?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Пт окт 26, 2018 17:51:30 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Здравствуйте, коты. Вопрос по кварцу. Нормально, что часы 1307 убежали на 3 минуты за месяц? Как сделать точнее? Перебирать кварцы или как то можно подстроить? Температура и питалово стабильны. Есть и 3231, но уже всё сделано в железе.

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Пт окт 26, 2018 18:08:13 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Особо никак. Либо подбирать кварц получше, либо программно корректируйте, скажем, каждой ночью на 6 секунд.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Пт окт 26, 2018 22:55:04 
Открыл глаза

Зарегистрирован: Вт фев 19, 2008 10:14:47
Сообщений: 79
Откуда: SPb
Рейтинг сообщения: 0
Для корректировки времени я заводил 3-и байта в EEPROM и делал в меню возможность их настройки. Каждый байт определяет свою задержку. Старший - 10 миллисекунд, средний - 100 микросекунд и младший - 1 микросекунду. Значения байтов выступают при этом множителями. Диапазон значений 0-99. Паузу выбирал в две секунды и делал коррекцию 4-е раза в сутки (можно раз в сутки). Выбор значений взвалил на пользователя, т.к. учесть (рассчитать по алгоритмам) значения практически не возможно, т.к. много всяких процессов и неопределённостей. Дал команду остановки хода, взвёл 3-х байтный таймер, дождался отклика что ход остановлен, вывел сообщение о коррекции, дождался истечения таймера, запустил ход, обновил значение времени. Со своей стороны смог только обеспечить временное окно, когда наиболее безопасно проводить коррекцию хода. В итоге за месяц погрешность не превысила 1-й секунды. При этом точность хода корректировалась ещё только на среднем байте. Младший остался в более долгосрочной перспективе. Синхронизировал по "Satellite Time Reader" с сотового телефона, каждый раз после коррекции подкручивал секунды так, что б засвечивались одновременно (муторно не выполнимо).

_________________
Если в голове каша, значит ваш котелок варит!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Сб окт 27, 2018 09:23:08 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
DrLirhium, спасибо за идею. Только сделаю "железную" коррекцию. Измерю поточнее на сколько конкретно часы спешат и последнюю секунду в сутках сделаю соответственно длиннее. Железные таймеры все заняты. Сделал на захвате протокол общения с датчиком темпер.-влажности DHT22-таймер1, ещё ШИМ и софт таймер. Asm, Mega8.

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Чт янв 10, 2019 11:45:47 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 243
Зарегистрирован: Ср янв 16, 2008 08:34:04
Сообщений: 2471
Откуда: KMV
Рейтинг сообщения: 0
Подскажите пожалуйста по инициализации DS3231!
Что записывать в регистры 0EH, 0FH? Просто сколько не смотрю в даташит, то в регистр 0EH максимум требуется "пнуть" преобразование температуры.

_________________
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Чт янв 10, 2019 13:30:15 
Открыл глаза

Зарегистрирован: Вт фев 19, 2008 10:14:47
Сообщений: 79
Откуда: SPb
Рейтинг сообщения: 0
Согласно написанному в даташите на страницах 13 и 14 расписываем биты в байте 0EH и 0FH, конвертим в HEX и скармливаем. В зависимости от вАшей ситуации меняем биты, конвертим в HEX и обновляем. Сложного ничего нет, просто надо прочитать и понять.

Сам не юзал 3231, возился с 1338. В ней, в моём случае (мне надо только включить SQW на 1Гц, для обновления значений на дисплее) регистр 07H = 00010000 или 0x10 в HEX.

_________________
Если в голове каша, значит ваш котелок варит!


Последний раз редактировалось DrLithium Пт янв 11, 2019 01:55:32, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Чт янв 10, 2019 13:37:35 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4220
Откуда: Ижевск
Рейтинг сообщения: 0
serg_svd писал(а):
DS3231
$0E-ещё разрешает, при необходимости, вывод разных частот в зависимости от битов RS1,0 и INTCN
$0F- можно запретить вывод 32кГц


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Чт янв 10, 2019 15:05:27 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 243
Зарегистрирован: Ср янв 16, 2008 08:34:04
Сообщений: 2471
Откуда: KMV
Рейтинг сообщения: 0
Короче сам виноват :)
Я подразумевал только пуск часов, безо всяких выходов и прочего. Просто после рассматривания даташита было у меня мнение, что вообще не надо инициализировать микросхему, если просто юзать часы без выходов и прерываний.

_________________
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Пн окт 05, 2020 15:08:35 
Собутыльник Кота
Аватар пользователя

Карма: 14
Рейтинг сообщений: 115
Зарегистрирован: Сб май 21, 2016 11:04:52
Сообщений: 2957
Откуда: Беларусь
Рейтинг сообщения: 0
Может было уже у кого. ds1307. При подаче внешнего питания, время идет. При отключении внешнего питания время сбрасывается на время компиляции. В чем может быть проблема?

Добавлено after 7 minutes 42 seconds:
и начинают идти занового в момента времени компиляции. Т.е "натиканное" время часы не помнят. Исходное время для них - это установленное при программировании. Странно вообще.


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

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


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

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


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

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


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