Страница 68 из 103

Re: Часы Super Clock

Добавлено: Вс апр 02, 2017 20:42:27
Lion_A
Я бы сделал. Но дата перехода плавает от года к году. Как ее вычислять?

Re: Часы Super Clock

Добавлено: Вс апр 02, 2017 21:02:03
skorkin
Lion_A писал(а):дата перехода плавает... Как ее вычислять?
Предлагаю не вычислять, а просто забить в прошивку таблицу дат: каждое последнее воскресенье марта и октября, скажем на 20 лет вперед. И по ней переставлять. А по прошествию этого времени, если не пропадет интерес к данному проекту, выпустить новую прошивку с обновленной таблицей дат.

Re: Часы Super Clock

Добавлено: Вс апр 02, 2017 21:14:06
Lion_A
Подумаю.
Часы уже перевели, так что время есть.

Re: Часы Super Clock

Добавлено: Пн апр 03, 2017 22:14:52
Lion_A
Сделал автоматический перевод часов.
Файл interface.h

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

//Раскомментировать для автоперехода на летнее время
//#define AUTOMATIC_SUMMER_TIME
По умолчанию отключен. Время переводится последнее воскресенье марта и октября в 3:00.
Особо не тестил, так что просьба проверить в разных варияциях.
Добавил датчик движения на PB2 (выв. 42). Высокий уровень включает дисплей, после перепада на низкий запускается таймер до выключения.
Файл mSensor.h

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

//задержка до выключения при использовании датчика движения
#define DELAY_TO_OFF_LED    300   //сек.
Порт подтянут внутренней подтяжкой, так что в схеме ничего менять не нужно.

Re: Часы Super Clock

Добавлено: Ср апр 05, 2017 11:40:43
Andiss
Lion_A
Спасибо, перевод времени работает, никаких глюков не заметил.

Re: Часы Super Clock

Добавлено: Ср апр 05, 2017 17:31:00
fin45
Lion_A писал(а):Нет, в 3.7 ничего подтягивать не нужно. ..................

Добавлено after 13 minutes 36 seconds:
fin45 писал(а): вот такая информация у меня отображается на матрицах https://youtu.be/zY3p927cGAE
Что то не так. Название "Super Clock" должно нормально пробегать.
даже не знаю что подумать, первый раз такое, обычно все самоделки запускаются с первого раза. Буду искать ошибки или припой может где повис на плате. Может матрицы, распиновка вроде одинаковая

Re: Часы Super Clock

Добавлено: Ср апр 05, 2017 18:00:31
dadigor
fin45
1. Видно, что строка в принципе бежит, т.е. продвигается засветка, причем слева направо (наверное перевернута плата). Сначала приходит слева на пустой индикатор, в конце уходит вправо, очищая индикатор. Хороший признак. ))
2. Информация внутри светящейся колонки меняется, что говорит о ее продвижении, тоже хорошо.
3. Работают одноименные колонки (вертикали 2 и 5, считая на видео слева) во всех матрицах, интервал между ними три (т.е. каждая четвертая). Тут надо порыться, может быть здесь ключ к разгадке?
Мне кажется по прикидке, что такое может получиться, если повернуть на 180 матрицы при монтаже. Но выпаивать и проверять не буду, попробуйте сами.

Re: Часы Super Clock

Добавлено: Ср апр 05, 2017 18:12:05
fin45
подумал, и решил перевернуть матрицы на 180 гр. и все стало на место https://youtu.be/k-RaWGGIJcg.
Сейчас из датчиков запаян только BMP-180, а это значит, что пока не запаяю DS3231 я буду видеть только ошибку "квадратной шины".
Lion_A, я правильно мыслю?

P.S. пока писал сообщение что, и как. dadigor в это время дал вариант верный.

Всем спасибо! Собираю далее Ваши супер часики.

Re: Часы Super Clock

Добавлено: Ср апр 05, 2017 19:00:01
Lion_A
Да, все верно.

Re: Часы Super Clock

Добавлено: Ср апр 05, 2017 19:09:19
dadigor
Можно попробовать забить заглушки: в функции ds1307_init - закомментарить все, кроме настройки порта и прерывания

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

void ds1307_init(void)
{

// External Interrupt(s) initialization
// INT0: Off
// INT1: On
// INT1 Mode: Any change
// INT2: Off
GICR|=0x80;
MCUCR|=0x04;
GIFR|=0x80;

//настроим INT1 на вход и подтянем к плюсу
INT_DDR &= ~(1<<INT_INPUT);
INT_PORT |= (1<<INT_INPUT);
/*
#ifdef DS3231
twi_start();
twi_slaveAddress_W(0b1101000);  //передача адреса ds3231 + бит записи
twi_write(0x0E);                //записываем адрес регистра управления
twi_write(0x00);                //разрешим меандр с частотой 1Гц на SQW
twi_write(0x08);                //разрешим выход 32кГц
twi_stop();
#else
twi_start();
twi_slaveAddress_W(0b1101000);  //передача адреса ds1307 + бит записи
twi_write(0x07);                //записываем адрес регистра управления
twi_write(0b10010000);          //разрешим меандр с частотой 1Гц на SQW

twi_stop();
*/
}
#endif

}
в ds1307_get_time и ds1307_get_date закомментарить все тело и вставить

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

*sec = 0x00;             //считываем секунды
*min = 0x00;             //считываем минуты
*hour = 0x00;          //считываем часы

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

*date = 0x00;            //считываем число
*month = 0x00;           //считываем месяц
*year = 0x00;            //считываем год
Давно в этих кодах разбирался, уже не помню, нужно ли прерывание от часов для их хода, или оно только для будильника. Попробуйте, если не терпится посмотреть, может быть запустится. Вместо нулей можно забить что-то значащее, оно только меняться не будет естстно ))

Re: Часы Super Clock

Добавлено: Ср апр 05, 2017 19:40:03
fin45
не буду Вам доставлять лишнее неудобство, кроме DS3231(который либо на таможне либо....) все датчики есть, подожду немного, потом просто куплю один чип( правда в нашей деревенской глуши его за копейки не купить)

P.S. первый раз выписал часовой модуль у китайца, он заказ не отправил( прошло 2 недели, открыл спор)второй раз в другого китайца.

Изображение

Re: Часы Super Clock

Добавлено: Ср апр 05, 2017 23:41:09
dadigor
Попробуйте прошивку без 3231
No_RTC.rar
(70.07 КБ) 136 скачиваний

Re: Часы Super Clock

Добавлено: Чт апр 06, 2017 09:29:15
fin45
dadigor, спасибо за помощь! Залил прошивку No_RTC , увидел много нового. https://youtu.be/-N5iR98hEsk

Re: Часы Super Clock

Добавлено: Чт апр 06, 2017 10:07:11
dadigor
Это конечно совсем неправильная прошивка, могут вылезти всякие бяки )) так что особо ей не доверяйте, сделана только для Вас - для проскакивания первой ошибки I2C и просмотра кое-какого функционала. К примеру, обязательно будут проблемы при попытке установки будильника ((
Кстати, непонятно что там со средней матрицей - неполная засветка (например цифра 7 в давлении, ноль в температуре)?

Re: Часы Super Clock

Добавлено: Чт апр 06, 2017 13:47:27
fin45
......"со средней матрицей", да заметил но свалил на прошивку она ведь тестовая, а может контакт плохой в разъеме. Пока на матрицах останавливаться не буду, заказал матрицы 60*60. Сейчас DHT22 DS18B20 подключать буду.

Добавлено after 1 hour 58 minutes 41 second:
fin45 писал(а):......Сейчас DHT22 DS18B20 подключать буду.
подключил, температура(внеш, внутр), влажность и давление отображается, буду ждать часы

Re: Часы Super Clock

Добавлено: Чт апр 06, 2017 15:59:50
dadigor
заголовок проходит - значит не контакт

Re: Часы Super Clock

Добавлено: Пт апр 07, 2017 15:13:34
upavlenko
Какая МС часов ds1307 или ds3231 можно определить программно.

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


#define false 0
#define true  1
static unsigned char _ds1307 = false;
static unsigned char _ds3231 = false;
unsigned char ds1307(void) { return _ds1307; }
unsigned char ds3231(void) { return _ds3231; }

void rtc_Autodetect(void)                             //  Autodetection
{
unsigned char temp1;
unsigned char temp2;
  temp1 = rtc_read(0x11);                             //  сохранение ячеек
  temp2 = rtc_read(0x12);                             //    0x11 и 0x12  ds1307
  rtc_write(0xAA, 0x11);                              // пишем AAh
  rtc_write(0x55, 0x12);                              //  пишем 55h
  // Регистры температуры ds3231 работают только на чтение (read-only), записать их нельзя.
  if (rtc_read(0x11) == 0xAA && rtc_read(0x12) == 0x55) 
  {
    _ds1307 = true;                                   // это ds1307
    rtc_write(temp1, 0x11);                           // restore
    rtc_write(temp2, 0x12);
  }
  else 
  {
    _ds3231 = true;                                   // это ds3231
  }
}

Re: Часы Super Clock

Добавлено: Пт апр 07, 2017 16:19:12
fin45
dadigor, если возможно выложи отредактированный файлик ds1307.c из исходника "No_RTC".

Re: Часы Super Clock

Добавлено: Пт апр 07, 2017 17:24:23
почемучка
Lion_A писал(а):Добавил датчик движения на PB2 (выв. 42).
Спасибо за Д.Д. Датчик уже в пути. Скоро буду тестить. По мне даже очень нужная функция.

Re: Часы Super Clock

Добавлено: Пт апр 07, 2017 17:32:32
dadigor
upavlenko Точно! 0х55 и 0хАА академично, считается, что ошибка менее вероятна при последовательной передаче данных, а также при случайной инициализации ячеек памяти. Но я в свое время писал туда 0х12 и 0х34, что потом и вычитывал. Это было, когда я еще работал и мы заменили 1307 на 3231 в новых версиях разрабатываемых контроллеров. В принципе такое распознавание не очень нужно, если пишешь для себя, сам компилируешь и знаешь что где у тебя установлено, но для универсальной прошивки очень удобно.

fin45 Прилагаю по Вашей просьбе мою варварскую правку авторского файла, надеюсь он не обидится.На самом деле там ничего нового по отношению к моему посту чуть выше. (Ср апр 05, 2017 19:09:19)

attachment удален по Вашей же просьбе ))