Например TDA7294

 Форум РадиоКот • Просмотр темы - Часы на Atmega8515 и ds1307
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вс фев 25, 2018 04:56:25



Часовой пояс: UTC + 3 часа [ Летнее время ]


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



Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу 1, 2, 3  След.
Автор Сообщение
Не в сети
 Заголовок сообщения: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Вт янв 16, 2018 13:25:15 
Прорезались зубы
Аватар пользователя

Карма: 4
Зарегистрирован: Чт ноя 21, 2013 15:05:26
Сообщений: 229
Откуда: Украина
Рейтинг сообщения: 0
Собрал часики на Atmega 8515 и ds1307, отладил в протеусе, все хорошо и гладко. Часы идут, лампочки мигают, реле щелкает, только это все в протеусе. А вот в железе все не так... :(
Дело в том, что с программным I2C, я никогда не работал. Использую чужие библиотеки найдены на просторах.
На реальной плате, они тоже идут. Только вот когда я записываю время, а потом считываю, получаю абракадабру.
К примеру : Запишу 12: 25, после перезагрузки получается 00:12. Хотя протеус, таких чудес не показывает.
Опытным путем выяснил, для того чтобы после перезагрузки, получить те же 12:25 , надо записать 12 в года, то есть 2012й год. А 25 в часы, но в часы 25 не запишешь, ведь их только 24. Но это же бред и т.д и тп....

Прошу помощи

Выкладываю Проект в Atmel Studio и Протеус.
Проекты не оптимизированы не смейтесь. :)))


Вложения:
clock_2018.rar [130.43 KiB]
Скачиваний: 42
Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Вт янв 16, 2018 14:18:22 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 49
Зарегистрирован: Ср янв 02, 2013 09:37:35
Сообщений: 2459
Откуда: ХМАО
Рейтинг сообщения: 0
Опытным путем выяснил, для того чтобы после перезагрузки, получить те же 12:25 , надо записать 12 в года, то есть 2012й год. А 25 в часы, но в часы 25 не запишешь, ведь их только 24. Но это же бред и т.д и тп....

Не правда… чудес не бывает.
Регистры RTC разделены на младшие и старшие… значение времени 12:25:00 будут иметь в регистрах RTC такие вот значения: Регистр #h00 = #h00; регистр #h01 = #h25; регистр #h02 = #h12.


Вернуться наверх
 Профиль  
 
JLCPCB Prototype, Бесплатная доставка первого заказа + $2 на прототип ПП!

Крупнейший производитель печатных плат в Китае, 290,000+ заказчиков, 8,000+ он-лайн заказов в день.

Цена за 10 плат: $2 за 2-х слойную, $15 за 4-х слойную, $74 за 6-ти слойную.

LCSC Parts: Экономия до 50%, большой выбор компонентов в наличии, отправка заказа в день оплаты.

Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Ср янв 17, 2018 08:59:50 
Прорезались зубы
Аватар пользователя

Карма: 4
Зарегистрирован: Чт ноя 21, 2013 15:05:26
Сообщений: 229
Откуда: Украина
Рейтинг сообщения: 0
Разве я не так записываю данные?? По моему идентично...


Вернуться наверх
 Профиль  
 

Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Ср янв 17, 2018 09:36:15 
Встал на лапы

Карма: 1
Зарегистрирован: Вс дек 25, 2016 09:34:54
Сообщений: 107
Рейтинг сообщения: 0
Обратите внимание на функции rtc_get_time и rtc_get_date, что то уж слишком много старт-стоп.


Вернуться наверх
 Профиль  
 

Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Ср янв 17, 2018 12:30:50 
Родился

Карма: 2
Зарегистрирован: Сб янв 22, 2011 01:38:02
Сообщений: 10
Рейтинг сообщения: 0
у меня такое было при севшей батарейке.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Ср янв 17, 2018 22:45:30 
Прорезались зубы
Аватар пользователя

Карма: 4
Зарегистрирован: Чт ноя 21, 2013 15:05:26
Сообщений: 229
Откуда: Украина
Рейтинг сообщения: 0
Батарейка = 2.8, вроде по даташиту, нормально.

Кстати, это китайский модуль, с памятью на борту. Его я перепаял слегка, убрав цепь заряда батареи.

Добавлено after 15 minutes 30 seconds:
много старт-стоп.


Попробовал удалить все, оставив старт вначале и стоп в конце. Еще хуже... :facepalm:

Добавлено after 1 hour 32 minutes 6 seconds:
Поиграв с асками в функции rtc_get_time, удалось записать часы и минуты как положено. Но часы на микросхеме так и не идут. Хотя генератор работает, ведь такты отслеживаются контроллером.

Добавлено after 20 minutes 59 seconds:
:cry: Такое ощущение, что часы идут, но пишу и читаю я не те ячейки. Соответственно я и не могу заметить прибавление минут. :kill: Неделю убил над этим мусором. Проще было бы плату вытравить на какую ни будь тини 2313 с аппаратным интерфейсом :facepalm:


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Ср янв 17, 2018 23:07:14 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 49
Зарегистрирован: Ср янв 02, 2013 09:37:35
Сообщений: 2459
Откуда: ХМАО
Рейтинг сообщения: 0
Лучше написать свою библиотеку или пользоваться заведомо проверенной. Если хочешь, могу на словах расписать пошагово, алгоритм обмена для понимания.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Ср янв 17, 2018 23:27:43 
Прорезались зубы
Аватар пользователя

Карма: 4
Зарегистрирован: Чт ноя 21, 2013 15:05:26
Сообщений: 229
Откуда: Украина
Рейтинг сообщения: 0
Я бы написал свою, если бы понимал как это все работает. Кучу форумов протаранил. А чтобы понимать, надо прочесть реально рабочий код. Я даже видео смотрел. Да, вроде все понимаешь, но когда берешься за код, как натупишь...

Недавно разобрался с программным СПИ, и все ногодрыгом сделал. А тут завал


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Ср янв 17, 2018 23:32:24 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 49
Зарегистрирован: Ср янв 02, 2013 09:37:35
Сообщений: 2459
Откуда: ХМАО
Рейтинг сообщения: 0
нет там ничего сложного – всё просто… завтра опишу на словах.
Надеюсь как «выглядит» передача и приём байта, а так же СТОП и СТАРТ это для тебя понятно. Или и это расписывать?


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Чт янв 18, 2018 01:06:22 
Прорезались зубы
Аватар пользователя

Карма: 4
Зарегистрирован: Чт ноя 21, 2013 15:05:26
Сообщений: 229
Откуда: Украина
Рейтинг сообщения: 0
Угу... Каша такая себе.

Добавлено after 1 hour 26 minutes 24 seconds:
Наткнулся на рабочий код и подсунул его в свой проект. В протеусе не работает. Чуть не удалил проект, но потом взял и прошил контроллер, работает.

Спасибо всем, кто откликнулся.

Вот все что получилось...


Вложения:
soft_i2c_ds1307.rar [97.96 KiB]
Скачиваний: 37
Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Чт янв 18, 2018 15:23:29 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 49
Зарегистрирован: Ср янв 02, 2013 09:37:35
Сообщений: 2459
Откуда: ХМАО
Рейтинг сообщения: 2
Напоминалочка (немного общей теории):

SDA – Линия данных.
SCL – Линия тактового сигнала.
Интерфейс позволяет объединить до 128 различных устройств. Шинные формирователи всех устройств выполнены по схеме с открытым коллектором (или стоком). Высокий логический уровень формируется за счёт подтягивающих резисторов к плюсу питания.

Поскольку шина является последовательной, все данные передаются по линии SDA поразрядно (старший бит первым). Каждый передаваемый разряд сопровождается импульсом на линии тактового сигнала SCL. Причем сигнал на линии SDA должен быть стабильным всё то время, пока на шине SCL присутствует сигнал лог. 1. Единственным исключением из этого правила являются два особых состояния шины СТАРТ и СТОП.

Состояния СТАРТ и СТОП формируются ведущим в начале и в конце передачи данных соответственно. Между этими состояниями шина считается занятой, и другие ведущие не должны пытаться управлять ею. Если ведущий хочет начать передачу нового блока данных без потери/восстановления контроля над шиной, он может сформировать состояние СТАРТ до формирования состояния СТОП. Формируемое таким образом состояние называется «повторный СТАРТ» (ПОВСТАРТ), а шина считается занятой до последующего формирования состояния СТОП. Поскольку такое поведение ничем не отличается от поведения после формирования состояния СТАРТ, в дальнейшем оба эти состояния (СТАРТ и ПОВСТАРТ) будут обозначаться как СТАРТ, кроме тех случаев, где их необходимо различать.
Состояния СТАРТ и СТОП формируются путем изменения уровня сигнала на линии SDA при ВЫСОКОМ уровне на линии SCL. Состоянию СТАРТ соответствует смена уровня с «1» на «0», а состоянию СТОП наоборот, с «0» на «1».

Так как устройство по сути формирует логический ноль путём прижатия линий к «земле», то управление данным действием производится с помощью регистра DDRn.N порта МК. В твоём конкретном случае линия SDA это DDRD.1; SCL это DDRD.0.
В дальнейшем (в примерах) необходимо помнить, что устанавливая лог. 0 в регистр SDA_N (DDRD.1), на линии SDA формируется лог 1. А если устанавливаем лог. 1 в регистр SDA_N, то на линии SDA формируется лог 0. Это так же относится и к линии SCL (SCL_N).
Создаём переменную «Loop», переменную «Data» в SRAM или в рабочих регистрах.

Мой пример будет описывать алгоритм для шины 100 кГц, без реализации проверки занятости SCL (для медленных устройств), а так же отсутствует арбитраж для систем MultiMaster.


Да чуть не забыл… вовремя запуска МК необходимо проверять работу тактирования DS1307 и если она остановлена (по разным причинам), то переходить к подпрограмме установке начальной конфигурации и запуска.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Чт янв 18, 2018 19:03:25 
Встал на лапы

Карма: 1
Зарегистрирован: Вс дек 25, 2016 09:34:54
Сообщений: 107
Рейтинг сообщения: 0
Наткнулся на рабочий код и подсунул его в свой проект. В протеусе не работает. Чуть не удалил проект, но потом взял и прошил контроллер, работает.
Все нормально в протеусе работает.
Вам не кажется, что слишком часто опрашиваете ds1307?


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Чт янв 18, 2018 20:51:44 
Прорезались зубы
Аватар пользователя

Карма: 4
Зарегистрирован: Чт ноя 21, 2013 15:05:26
Сообщений: 229
Откуда: Украина
Рейтинг сообщения: 0
Сегодня, весь день занимаюсь оптимизацией и сборкой проекта. Почти полностью перелопатил свой г..но код. Добавились еще три реле, и всякие там мелочи. В некоторых местах показывалась лишняя информация и глюки. В общем, вот...


Знаете что это? Это микроклимат курятника :)))
Включает и выключает свет, в нужное время, тем самым прибавляя количество яиц в холодильнике. :))

Добавлено after 37 minutes 56 seconds:
Напоминалочка (немного общей теории):


Я признателен вашим трудам. :) Расжевывать и раскладывать по полкам, это не легкий труд. Спасибо огромное. :beer:
Я думаю, еще не раз загляну в вашу напоминалку.

Добавлено after 4 minutes 36 seconds:
[uquote="DJZEM",url="/forum/viewtopic.php?p=3285978#p3285978"]
Вам не кажется?


Надо как то сделать опрос раз в секунду,
Типа - Дотикали до секунды, опрос и сброс счетчика. И так по кругу.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Пт янв 19, 2018 11:47:37 
Встал на лапы

Карма: 1
Зарегистрирован: Вс дек 25, 2016 09:34:54
Сообщений: 107
Рейтинг сообщения: 0
DJZEM писал(а):
Знаете что это? Это микроклимат курятника :)))
Включает и выключает свет, в нужное время, тем самым прибавляя количество яиц в холодильнике. :))
Да, на что горазд ум человека. Китайскую лампочку (теплый свет) на 10Вт включил и забыл.
DJZEM писал(а):
Надо как то сделать опрос раз в секунду,
Типа - Дотикали до секунды, опрос и сброс счетчика. И так по кругу.
За чем раз в секунду? В первоначальном варианте у вас лучше было, свои часы на таймере. А с ds1307 синхронизировать раз там в 1 час.
По моему чем меньше ds1307 дергаешь тем точнее она идет.
У самого такой китайский модуль имеется, сразу кварц с материнки впаял, иначе убегали не знаю на сколько. И с кварцем от материнки бегут, за 411 часов на 123 секунды убежали. Вот здесь игрался с таким модулем.

Проектом потом не забудьте поделиться.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Пт янв 19, 2018 20:45:28 
Прорезались зубы
Аватар пользователя

Карма: 4
Зарегистрирован: Чт ноя 21, 2013 15:05:26
Сообщений: 229
Откуда: Украина
Рейтинг сообщения: 0
Китайскую лампочку


Но ведь, я же не ради экономии. Сама суть то в приближении к летнему времени. Именно такой себе микро при микро климат.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Пт янв 19, 2018 22:18:29 
Это не хвост, это антенна
Аватар пользователя

Карма: 14
Зарегистрирован: Пт ноя 11, 2016 06:48:09
Сообщений: 1394
Откуда: край интернета... самый край :(
Рейтинг сообщения: 0
Dimon456 писал(а):
По моему чем меньше ds1307 дергаешь тем точнее она идет.
Dimon456 писал(а):
бегут, за 411 часов на 123 секунды убежали.
Нафига такой микросхема? пойду лучше ещё тинек под часы нашью :)) :)) :))

_________________
- "Идет, как по маслу" не всегда значит хорошо. Литератор Берлиоз вам бы подтвердил.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Сб янв 20, 2018 00:32:44 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 49
Зарегистрирован: Ср янв 02, 2013 09:37:35
Сообщений: 2459
Откуда: ХМАО
Рейтинг сообщения: 0
[quote="Dimon456"]Нафига такой микросхема?

Не, сама микра хорошая… :) кварц нужно с умом выбирать и всего лишь. А если с этим трудности, то советую лучше использовать DS3231… это почти аналог только с плюшками… у неё кварц встроен внутри… там же имеется термометр значение которого можно юзать… но в основном он используется для коррекции частоты в зависимости от температуры… в данной микре есть ещё и два аппаратных будильника… в общим тикают значительно точнее чем DS1307. :)


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Сб янв 20, 2018 00:53:45 
Прорезались зубы
Аватар пользователя

Карма: 4
Зарегистрирован: Чт ноя 21, 2013 15:05:26
Сообщений: 229
Откуда: Украина
Рейтинг сообщения: 0
DS3234 еще круче, и к тому же SPI проще TWI, но...

Но я его лепил из того что был.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Сб янв 20, 2018 10:24:32 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 49
Зарегистрирован: Ср янв 02, 2013 09:37:35
Сообщений: 2459
Откуда: ХМАО
Рейтинг сообщения: 0
и к тому же SPI проще TWI

:))
Оба интерфейса просты когда знаешь как они работают!


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Часы на Atmega8515 и ds1307
СообщениеДобавлено: Сб янв 20, 2018 15:15:06 
Встал на лапы

Карма: 1
Зарегистрирован: Вс дек 25, 2016 09:34:54
Сообщений: 107
Рейтинг сообщения: 0
Ivanoff-iv писал(а):
Нафига такой микросхема? пойду лучше ещё тинек под часы нашью :)) :)) :))
Не все тинки имеют RTC. Наверное можно присобачить к меги 3В батарейку, детектор пропадания питания, перевести в какой нибудь повер-довн режим для снижения энергопотребления от батареи, чтоб таймер RTC только работал. Предложи решение, довольно интересно.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу 1, 2, 3  След.



Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

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


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