Обсуждаем контроллеры компании Atmel.
Ответить

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт апр 07, 2023 06:36:07

Я заметил такую странность за прошивкой от Сб сен 10, 2022 12:02:28
тов. Serzh2000 на стр.144
"анимация_ DS3231 коррекция минус 2 градуса.rar." Когда часы работают на максимальной яркости в дневном режиме то коррекции температуры нет , а когда в ночном минимальном то тогда происходит уменьшение температуры.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Ср май 10, 2023 12:51:40

После перепайки трех DS1307, вместе, с разными кварцами. У всех обнаружена неточность в пределах 3-5 секунд в час! Было принято решение, что вся партия, которая пришла с Алика, годится только в помойку (((. Выпаял все и заменил на модуль от Ардуинки с чипом на DS3231. За сутки была погрешность только минус 2 секунды, что для домашних часиков считается нормой. Также хочется спросить, у китайцев, а где же хваленная +-2ppm, по даташиту у этого модуля ))) наверное тоже на коленке делали, и вместо 2ppm получилось 2 секунды.
Заказал новую партию 1307, на сайте написано, что за год +-0,5 сек.) Это при том, что в даташите +-2,5 сек. в сутки. Опять сволочи в наглую врут.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Ср май 10, 2023 12:58:39

Мне в ДИПе глючные китайские попадались, все время отставали на 10-20сек в день, заменил на VS1307 - все стало норм. А так еще очень сильно от кварца зависит.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пн май 15, 2023 11:56:18

Мне все-таки интересно, почему DS1307, при выключенном питании, (то есть при питании только от батарейки 2032 и отсутствии питания +5), время шло нормально. А при полном питании ужасно спешили.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт май 18, 2023 21:08:37

jumbo писал(а):при питании только от батарейки 2032 и отсутствии питания +5), время шло нормально.

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

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вс май 21, 2023 23:59:49

codenamehawk писал(а):Время от температуры плавает.


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

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вт май 23, 2023 09:21:47

jumbo писал(а):К тому же разница на 3-5 секунд в час думаю от температуры не может быть,

У этого датчика изначально низкая точность, а изменение температуры сильно влияет на ход часов, так что даже коррекцию не ввести.
Вполне возможно, что температура влияет на кварц.
DS3231, в тех же условиях работает сильно точнее и да в нем есть встроенная термокомпенсация и не нужен внешний кварц.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб май 27, 2023 00:55:17

может кому не сложно может помочь, прошивку с первой страницы (или предпочтительнее мою ) на атмеге 8 переделать на атмегу 328 и выложить исходник. мои хотелки не влезают в атмегу 8, а ведь по большому счету отличие только в таймерах, но с этим у меня проблема. :facepalm:
Вложения
анимация_ DS3231.rar
(810.15 KiB) Скачиваний: 88

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вт авг 29, 2023 07:29:33

может кому не сложно , прошивку на атмега 48 переделать.динамику .у нас нет магазинов.ждать долго.зарание благадарен.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вт авг 29, 2023 11:55:38

Сформулировать вопрос надо точнее. А то если даже найдутся альтруисты типа помочь, так и не поймут задачи. Что подо что переделать? Нет у вас магазинов, продающих динамику? :shock:

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вт авг 29, 2023 13:20:17

ILHAT3777 писал(а):на атмега 48 переделать

не получится малой кровью нифига. Во всяком случае с содевижн авр. Там для 88 почти под завязку.
Т.е. либо портировать под авр студио например, либо резать функционал. Не исключено, что и то и другое.
С сохранением функционала только на асме можно, полагаю.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вт авг 29, 2023 14:35:45

Навряд ли кто то будет перелопачиать код только из за того. что у кого то нет нужного МК. В Китае полно этих Мег по вменяемым ценам, хоть 8/ 8L/ 8A, хоть 88.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Ср авг 30, 2023 13:16:27

Сформулировать вопрос надо точнее. А то если даже найдутся альтруисты типа помочь, так и не поймут задачи. Что подо что переделать? Нет у вас магазинов, продающих динамику? :shock:

там две прошивки динамика и статика кто собирал поймет

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Ср мар 13, 2024 08:29:41

Всем привет.Кто-нибудь может переделать прогу под настройки энкодером.кнопки задолбали уже.Оставить одну для перебора меню и подтверждения выбранной функции.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт мар 21, 2024 06:51:42

Danko, Здравствуйте. Собрал часы с модулем DS3231 и 24с32. Не сохраняют время после выключения. Модуль снят с рабочих часов.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт мар 21, 2024 08:54:10

steppo писал(а):с модулем DS3231 и 24с32. Не сохраняют время
DS3231 не тотально совместима с DS1307.
У нее иной адрес ячейки настроек, может в этом дело, нужно разбираться. И конечно, батарейка должна быть хорошая :)
Код:
void DS1307_init (void) {
        unsigned char tmphour, tmpmin, tmpsec1, tmpsec2;

        //rtc_init(0, 0, 0); // при первом запуске DS1307 его регистры не установлены
                             // (ручками установим их - биты: rs=0, sqwe=0, out=0)
     
        rtc_write(0x07,0x00); // для совместимости с M41T56 STMicroelectronics (для DS3231 адрес 0x0E)
                              // тоже самое, что и "rtc_init(0, 0, 0)"


Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт мар 21, 2024 17:33:43

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

для ds3231 во вкладку ds1307_twi.h вставить этот код ... и будет счастье
Код:
#define TWEN    2
#define TWIE    0
#define TWINT   7
#define TWEA    6
#define TWSTA   5
#define TWSTO   4
#define TWWC    3

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

void twi_stop(void) {
    TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
}

void twi_write(unsigned char _data)
{
    TWDR = _data;
    TWCR = (1<<TWINT)|(1<<TWEN);
   
    while (!(TWCR & (1<<TWINT))) {;}
}

unsigned char twi_read(unsigned char _ack) {
    unsigned char _data;

    if (_ack==1)
    {
        TWCR = (1<<TWEA)|(1<<TWINT) | (1<<TWEN);
    }
    else
    {
        TWCR = (1<<TWINT) | (1<<TWEN);
    }
    while (!(TWCR & (1<<TWINT)))
    {
    }
    _data = TWDR;
    return _data;
}
/*
void rtc_init(unsigned char rs,unsigned char sqwe,unsigned char out) {
    rs&=3;
    if (sqwe) rs|=0x10;
    if (out) rs|=0x80;
    twi_start();
    twi_write(0xd0);
    twi_write(7);
    twi_write(rs);
    twi_stop();
}
*/
void rtc_set_time(unsigned char hour,unsigned char min,unsigned char sec) {
    twi_start();
    twi_write(0xd0);
    twi_write(0);
    twi_write(sec);
    twi_write(min);
    twi_write(hour);
    twi_stop();
}

void rtc_set_date(unsigned char day,unsigned char date,unsigned char month,unsigned char year) {
    twi_start();
    twi_write(0xd0);
    twi_write(3);
    twi_write(day);
    twi_write(date);
    twi_write(month);
    twi_write(year);
    twi_stop();
}
   
void rtc_get_time(unsigned char *hour,unsigned char *min,unsigned char *sec) {
    twi_start();
    twi_write(0xd0);
    twi_write(0);
    twi_start();
    twi_write(0xd1);
    *sec=twi_read(1);
    *min=twi_read(1);
    *hour=twi_read(0);
    twi_stop();
}

void rtc_get_date(unsigned char *day,unsigned char *date,unsigned char *month,unsigned char *year) {
    twi_start();
    twi_write(0xd0);
    twi_write(3);
    twi_start();
    twi_write(0xd1);
    *day=twi_read(1);
    *date=twi_read(1);
    *month=twi_read(1);
    *year=twi_read(0);
    twi_stop();
}

unsigned char rtc_read(unsigned char address) {
    unsigned char data;
    twi_start();
    twi_write(0xd0);
    twi_write(address);
    twi_start();
    twi_write(0xd1);
    data=twi_read(0);
    twi_stop();
    return data;
}

void rtc_write(unsigned char address, unsigned char data) {
    twi_start();
    twi_write(0xd0);
    twi_write(address);
    twi_write(data);
    twi_stop();
}


модули DS3231 или DS1307 не сохраняют время при пропадании питания, они продолжают работать благодаря резервному питанию (батарейки)

24с32 это грубо говоря просто память, в ней текущее время не храниться. Она нужна , что бы хранить яркость нажатие кнопки , все что угодно к примеру сделать сто будильников вместо двух которые позволяют модули DS3231 или DS1307
Ответить