Обявления

Для полноценной работы рекомендуется пройти регистрацию.

Рекламные сообщения будут удаляться вместе с пользователем. Что есть реклама - буду решать я.

Часы на ГРИ ин-14 (Atmega8-168)

Здесь только проекты на ATmega

Часы на ГРИ ин-14 (Atmega8-168)

Сообщение Denis_K » 11 фев 2018 15:59

... на схем.нет попалась мне год-два назад статья http://cxem.net/mc/mc282.php. Сделал быстро плату, взял исходник из статьи, а он не "работает" или у меня ума не хватает заставить его работать... Автор не хочет категорически выходить на контакт.
В исходнике не могу наладить работу с часами реального времени, остальное вроде бы работает...
Ах да, исходник написан в какой то другой среде, отличной от синтаксиса GCC, поэтому я перевел как знал... может просто чего то упустил?
Вложения
IN-14clock.rar
Вот исходник
(126.27 КБ) Скачиваний: 13
Denis_K
Частенько бываю
 
Сообщения: 59
Зарегистрирован: 16 июн 2017 13:48
Откуда: Краснодарский край

Re: Часы на ГРИ ин-14 (Atmega8-168)

Сообщение Denis_K » 18 фев 2018 21:36

Не пойму с DS1307 происходит только инициализация, остальные функции похоже не работают... обмен данными по I2C проходит сначала, а потом тишина.
Denis_K
Частенько бываю
 
Сообщения: 59
Зарегистрирован: 16 июн 2017 13:48
Откуда: Краснодарский край

Re: Часы на ГРИ ин-14 (Atmega8-168)

Сообщение IYra » 19 фев 2018 19:33

Denis_K писал(а):Не пойму с DS1307 происходит только инициализация, остальные функции похоже не работают... обмен данными по I2C проходит сначала, а потом тишина.

Сравнил два файла I2c.c
IN-8_Clock
Код: Выделить всё
#define I2C_SDA_PIN            PD1                         //линия SDA
#define I2C_SCL_PIN            PD0                         //линия SCL

IN-14clock
Код: Выделить всё
#define I2C_SDA_PIN            PINC1                         //линия SDA
#define I2C_SCL_PIN            PINC0                         //линия SCL

Может надо
Код: Выделить всё
#define I2C_SDA_PIN            PC1                         //линия SDA
#define I2C_SCL_PIN            PC0                         //линия SCL
IYra
Живу тут
 
Сообщения: 654
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

Re: Часы на ГРИ ин-14 (Atmega8-168)

Сообщение Denis_K » 19 фев 2018 23:08

Да пробовал и так и так. Работает что PC1, что PINC1...
При попытке настроить время в меню оно меняется, но не прописывается в ds-ку, так же сразу пытается показать истинное время из памяти ds, но тут же устанавливается на индикаторах 85 85. Может где-то по основной программе не вписано про чтение - запись? хотя вроде бы есть...
Denis_K
Частенько бываю
 
Сообщения: 59
Зарегистрирован: 16 июн 2017 13:48
Откуда: Краснодарский край

Re: Часы на ГРИ ин-14 (Atmega8-168)

Сообщение IYra » 20 фев 2018 19:10

Denis_K писал(а):Да пробовал и так и так. Работает что PC1, что PINC1...

И все равно лучше придерживаться оригинала.
Запустил в Протеусе оригинал - на И2с раз в секунду идет обмен.
На исправленном - нет обмена. Только в начале строка инициализации и зачем-то добавлена строка
считывания времени. После этого затык. А что если убрать вначале rtc_get_date(&D, &m, &Y);
Оригинал
Код: Выделить всё
   /*******************************настройка переферии******************************/
   i2c_init(); // иництализация протокола i2c

   rtc_init(0, 1, 1); // иництализация DS1307

   ow_set_bus(&PINB, &PORTB, &DDRB, PB5); // иництализация протокола 1-wire


Исправленный
Код: Выделить всё
   i2c_init(); // иництализация протокола i2c

   rtc_init(0, 1, 1); // иництализация DS1307

   rtc_get_date(&D, &m, &Y);

   ow_set_bus(&PIND, &PORTD, &DDRD, PIND4); // иництализация протокола 1-wire
IYra
Живу тут
 
Сообщения: 654
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

Re: Часы на ГРИ ин-14 (Atmega8-168)

Сообщение Denis_K » 20 фев 2018 22:45

на И2с раз в секунду идет обмен

это выход тактовой частоты с 1307... выставляется при инициализации rtc_init(0, 1, 1), кстати пробовал если rtc_init(0, 0, 1) то выхода нет, как и положено по ДШ. Значит И2С работает и инициализация тоже проходит. Мне кажется что-то не так с считыванием и записью даты дс1307...

Добавлено спустя 12 часов 50 минут 43 секунды:
IYra, здравствуйте. А вообще нормально что инициализация включена в основной программе? я так понимаю с циклом... а запись - чтение однократно. Или так и должно быть?
Denis_K
Частенько бываю
 
Сообщения: 59
Зарегистрирован: 16 июн 2017 13:48
Откуда: Краснодарский край

Re: Часы на ГРИ ин-14 (Atmega8-168)

Сообщение IYra » 21 фев 2018 20:40

Denis_K писал(а):А вообще нормально что инициализация включена в основной программе? я так понимаю с циклом... а запись - чтение однократно. Или так и должно быть?

Инициализация происходит однократно вначале до цикла while
Оригинал (оставил для наглядности только I2c)
Код: Выделить всё
   /*******************************настройка переферии******************************/
   i2c_init(); // иництализация протокола i2c

   rtc_init(0, 1, 1); // иництализация DS1307

   _delay_ms(100);
   /********************************************************************************/
   
   sei();       // включаем прерывания

   set = 10;

   out[0] = 10; out[1] = 10; out[2] = 0; // ндикация текущего режима отображения при включении
   out[3] = vid+1; out[4] = 10; out[5] = 10;

   _delay_ms(2000);

   set = 0;

   rtc_get_date(&d, &m, &y); //чтение даты для нормальной работы режимов отображения

   while(1){
                             // чтение даты
        }



такой порядок в оригинале и желательно его придерживаться (вплоть до задержек _delay)
IYra
Живу тут
 
Сообщения: 654
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург


Вернуться в ATmega



Кто сейчас на конференции

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