Ds1307 изменеие времени. Посоветуйте алгоритм.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Мучитель микросхем
Аватара пользователя
Сообщения: 422
Зарегистрирован: Ср дек 26, 2007 18:33:00

Сообщение v000va »

Есть Ds1307, вычитываю и пишу в неё нормально. Для установки времени есть три кнопки, по нажатию 1-й нужно чтоб увеличивалось число часов часы, 2-й минут, 3-секунд. Вычитаное из ds1307 значение времени храню в памяти. Мой алгоритм такой:
1. Проверяю нажата ли кнопка ->да
2. Считываю из памяти текщее значение времени
3. Увеличиваю на 1
4. записываю в DS1307

Фишка в том, что если просто увеличивать время по inc temp1 то после 09 достигается значение например 0А, которое нужно фиксировать и обнулять младшую часть + увеличивать старшую, чтоб было 10. К тому же при увеличении нужно контролировать для минут и секунд достижение 60, а для часов 24. Т.е. в общем получается довольно громоздко. Может кто-то посоветует более простой алгоритм записи времени в таймер?
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

чего ж тут посоветовать, кроме BCD-арифметики? ну оформите все в виде подпрограммы, чтобы с минимумом усилий инкрементировать числа по разной "базе"... не думаю, что это покажется вам менее громоздко, но все же....

я, когда делал часы на этом DS1307, делал инкремент/декремент времени вообще поразрядно , т.е. отдельно десятки и отдельно единицы... правда на Си, но особой красоты в программе не вышло - признаюсь...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина

Сообщение Krik99 »

У меня вот сколько выляется этот DS1307, в протэусе всё работает, а на железе не в какую, пишет 00:00. Не могли бы дать схему включения DS1307. И будет ли она работать без дополнительной батерейки на 3v? И какая минимальная частота у МК должна быть?
Изображение
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 422
Зарегистрирован: Ср дек 26, 2007 18:33:00

Сообщение v000va »

Набросал текст программы, выходит не так уж много кода. Буду делать как задумал. :))

Krik99 По поводу схемы: для линии SDA и SCL обязательно нужны резисторы подтяжки по 5В, батарейку 3В лучше поставьте. Кто-то мне говорил, что i2c без неё в этой ИМС хуже работает. За основу возьмите A P P L I C A T I O N N O T E A V R 3 0 0 если на asm пишете, там в pdf даже есть ссылка на обязательные резисторы. Если на Си пишете, то апноут есть на сайте Атмела. В этом же доке есть ссылка расчета задержек исходя из частоты проца.

По поводу Proteus, тоже в нем моделировал-моделирую, в нем программа нормально не работала, а на железе заработала. Так что всецело я Proyeus теперь не доверяю, мало-ли каких багов наделали программисты.
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк

Сообщение sachok »

Товарищи может у ковото есть исходник на Си для работи с ds1307.?
А то я учусь программировать и теперь мне в голову пришла идея сделать часы-календарь-термометр, термометр у меня получается, а с часами проблема. Если у ковото есть исходник то поделитесь пожалуйста.
Я не Сашок!!!
Контактная информация:
Реклама
Мявтор!
Аватара пользователя
Сообщения: 2057
Зарегистрирован: Чт ноя 30, 2006 12:27:46
Откуда: Челябинск

Сообщение dt_andrew »

скачиваеш исходники от "Усилителя с микроконтроллерным управлением"

на предпоследней страницы темы

и находиш там все что тебе нужно

как работать , алгоритм установки часов, вывод на ЖКИ и прочее
Удачи
Опытный кот
Аватара пользователя
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк

Сообщение sachok »

Написал я кусочек программки но есть проблемы. После того как секунды дойдут до 59 то на дисплее остаётся цифра 9.Что с этим делать? Можно ли сделать так что бы время и дата отображалась в таком формате, например:
время: 22:05:08
дата: 13.12.08
?
Я не Сашок!!!
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

sachok писал(а):Написал я кусочек программки но есть проблемы. После того как секунды дойдут до 59 то на дисплее остаётся цифра 9.Что с этим делать? Можно ли сделать так что бы время и дата отображалась в таком формате, например:
время: 22:05:08
дата: 13.12.08
?
читайте про строку формата для printf. думаю %.2u:%.2u:%.2u вам поможет
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вс май 11, 2008 19:12:34

Сообщение AndreiVV »

sachok писал(а):дисплее остаётся цифра 9.Что с этим делать?
очистите экран перед выводом
sachok писал(а):Можно ли сделать так что бы время и дата отображалась в таком формате, например:
время: 22:05:08
дата: 13.12.08
?
можно

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

sprintf(lcd_buffer,"Time:%02u:%02u:%02u",hour,min,sec);
         lcd_gotoxy(0,0);        
         lcd_puts(lcd_buffer);
            
         sprintf(lcd_buffer,"Date:%02u.%02u.%02u",day,month,year);
         lcd_gotoxy(0,1);        
         lcd_puts(lcd_buffer);
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 163
Зарегистрирован: Ср дек 05, 2007 18:55:07
Откуда: Санкт-Петербуг

Сообщение Иван23 »

вот видел http://radiokot.ru/forum/viewtopic.php?t=9760 и к стати вниманию админов и модераторов листая форум находил много похожих тем,даже с одинаковым названием, может их в одно слить?
Опытный кот
Аватара пользователя
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк

Сообщение sachok »

Если сделать так как предложил AndreiVV то всё работает на УРА. СПАСИБО всем!
Я не Сашок!!!
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк

Сообщение sachok »

Что бы не плодить темы напишу здесь. Есть необходимость сделать часы которые должны считать до 3000 - 4000 часов. можно ли такое чудо на DS1307 сделать или она просто как часы реального времени будет после достижения 23:59:59 сбрасываться на "0"?
Я не Сашок!!!
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

sachok писал(а):Что бы не плодить темы напишу здесь. Есть необходимость сделать часы которые должны считать до 3000 - 4000 часов. можно ли такое чудо на DS1307 сделать или она просто как часы реального времени будет после достижения 23:59:59 сбрасываться на "0"?
будет сбрасываться. но в ней и календарь есть - при сбросе суток прибавится день в календаре. так что вы сможете вычислить общее количество прошедших часов математически
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

А можно и взять с вывода 1307 сигнал 1 Гц и считать по прерыванию.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Pooher писал(а):А можно и взять с вывода 1307 сигнал 1 Гц и считать по прерыванию.
ага :))
а еще можно поставить ПЛИСину с внешним генератором и снимать с нее сигнал 1Гц :))
или к наручным часам подключить и оттуда снимать контактами сигнал 1 Гц 8)
Опытный кот
Аватара пользователя
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк

Сообщение sachok »

я хотел использовать ds1307 для того что бы отказаться от прерываний:)
Я не Сашок!!!
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

А можно и взять с вывода 1307 сигнал 1 Гц и считать по прерыванию.
я хотел использовать ds1307 для того что бы отказаться от прерываний Smile
Ну ет я скорее пошутил, чем посоветовал :))
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Родился
Сообщения: 3
Зарегистрирован: Чт май 14, 2009 06:34:18
Откуда: Kieff

Сообщение R2D2 »

Доброго времени суток Уважаемые!
По необходимости пришлось, столкнулся вышеупомянутыми часами (DS1307), и недавно освоенным семейством MSP430. и как всегда возникли свои НО: MSP430 питается от трех вольт, а DS1307, от пяти. При всем этом выводы данного контроллера не поддерживают пяти вольтовою логику.
Что я сделал:
- часики посадил на 5В (точнее 4,7В).
- подтягивающие резисторы линий шины I2C подключил к напряжению питания 3В. Земля общая.
Процесс записи данных в часы, проходит без проблем, а при попытке считать данные, не поступает сигнал АСК после байта адреса (0D1h). На двух микросхемах проверял, результат тот же.
Где собака зарыта? Из-за чего такое может быть, подскажите пожалуйста.
P.S. Если возникнет вопрос, почему именно такой набор микросхем?
Отвечу на перед: Партия сказала надо!
... кто сказал что железо не трамбуется!?
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

R2D2 писал(а):...MSP430 питается от трех вольт, а DS1307, от пяти.
В простейшем случае выводы соединяют через гасящие резисторы, некоторые применяют для такого сопряжения полевики, кто-то - буферы (скажем, 74AHC125), а как то же самое сделать кошерно, можно почитать вот здесь.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»