Например TDA7294

Форум РадиоКот • Просмотр темы - #Часы реального времени DS1307 от Dallas Semiconductor#
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн авг 25, 2025 01:43:33

Часовой пояс: UTC + 3 часа


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



Начать новую тему Ответить на тему  [ Сообщений: 82 ]  1, , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб дек 04, 2010 21:02:05 
Встал на лапы

Зарегистрирован: Пт окт 08, 2010 15:43:55
Сообщений: 108
Рейтинг сообщения: 0
Предлагаю здесь разместить максимум информации об часах реального времени DS1307 от Dallas Semiconductor.

На данный момент меня интересует программый доступ к м/с в среде CodeVision AVR на примерах (тоесть примеры кодов программ установки времени/даты, считывание)

P.S. Спасибо за внимание, надеюсь на ваше активное участие! :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб дек 04, 2010 21:10:40 
Мучитель микросхем
Аватар пользователя

Карма: 2
Рейтинг сообщений: 3
Зарегистрирован: Ср фев 14, 2007 12:07:58
Сообщений: 493
Откуда: Москва
Рейтинг сообщения: 0
Хм, а F1 в CvAVR чем не устраивает?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб дек 04, 2010 22:33:43 
Встал на лапы

Зарегистрирован: Пт окт 08, 2010 15:43:55
Сообщений: 108
Рейтинг сообщения: 0
Fasterpast писал(а):
Хм, а F1 в CvAVR чем не устраивает?


1. Если бы это было на русском... :cry:
Хотелось бы ваших более подробных примеров и с комментариями на русском.

2. Насколько я понял данный пример в F1 отражает только чтение из м\с ?
Мне непонятно как задать предустановку?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб дек 04, 2010 22:48:51 
Мучитель микросхем
Аватар пользователя

Карма: 2
Рейтинг сообщений: 3
Зарегистрирован: Ср фев 14, 2007 12:07:58
Сообщений: 493
Откуда: Москва
Рейтинг сообщения: 0
Код:
void rtc_set_time(unsigned char hour, unsigned char min, unsigned char sec)


      this function sets the current time of the RTC.
The hour, min and sec parameters represent the values of hour, minutes and seconds.


void rtc_get_date(unsigned char *date, unsigned char *month, unsigned char *year)


      this function returns the current date measured by the RTC.
The *date, *month and *year pointers must point to the variables that must receive the values of date, month and year.


void rtc_set_date(unsigned char date, unsigned char month, unsigned char year)


      this function sets the current date of the RTC.

Из хелпа... Что тут может быть не понятно?
Функция rtc_set_time - установка времени. Часы минуты секунды.
rtc_set_date - установка даты. Число месяц год
rtc_get_date - получить дату... Вместо *date, *month итд, нужно подставить перменные в которых в вашей проге хранится дата.
ну и т.д.
По-моему в CvAVR всё элементарно как раз...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вс дек 05, 2010 00:49:12 
Встал на лапы

Зарегистрирован: Пт окт 08, 2010 15:43:55
Сообщений: 108
Рейтинг сообщения: 0
Написал пример для доступа к DS1307 на чтение, прошу проверить правильность и помощь в написание процедуры предустановки даты/времени путём кнопок подключённых к свободным линиям PORTD.

Код:
#include <tiny2313.h>

#asm
.equ __i2c_port=0x12     // подключил к порту PORTD
.equ __sda_bit=0
.equ __scl_bit=1
#endasm

#include <i2c.h>
#include <ds1307.h>

void main (void)
{
unsigned char  lcddate, lcdmonth, lcdyear;   // объявление переменных даты
unsigned char  lcdhour, lcdminute, lcdsecond;  // объявление переменных время
i2c_init();
rtc_init (0,1,0);  // инициализация часов, непонял о чём говорят значения в скобках?


rtc_get_date (&lcddate, &lcdmonth, &lcdyear); // читаем дату
rtc_get_time (&lcdhour, &lcdminute, &lcdsecond); // читаем время
}


P.S. сильно не пинайте, имхо незнаю ни одного языка программирования и только сегодня начал осваивать CvAVR.


Последний раз редактировалось Tom91 Вс дек 05, 2010 12:08:58, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вс дек 05, 2010 02:33:43 
Поставщик валерьянки для Кота

Карма: 5
Рейтинг сообщений: 21
Зарегистрирован: Пт авг 29, 2008 16:28:19
Сообщений: 2108
Откуда: Киев
Рейтинг сообщения: 0
rtc_get_date (&lcddata, &lcdmonth, &lcdyear); // читаем дату
rtc_get_time (&lcdhour, &lcdminute, &lcdsecond); // читаем время

В процедуры чтения нужно передавать указатели на переменные - т.е. адрес переменной, чтобы функция записала по этому адресу число, и оно оказалось в Вашей переменной. И еще, у Вас очепятка в названии функции: "date".
Для процедур записи всё выглядело бы так, как Вы написали:

rtc_set_date (lcddata, lcdmonth, lcdyear);
И т.п.
----------
Кроме того, Вам лучше (даже нужно) изменить тип Ваших переменных с unsigned int на unsigned char (беззнаковое 8-битное целое), т.к. такой именно такой тип используют функции.
В случае установки даты (rtc_set_date) или времени, Ваша программа сама преобразует число из int в char, но при работе с указателями возникнут проблемы, поэтому тип нужно обязательно поменять.
----------
Что означают значения в скобках rtc_init(...) я Вам сказать не могу, т.к. у меня нет СVAVR и хелпа соответственно. Аналогично обстоят дела и с написанием обработки кнопок порта D.

_________________
Giggity giggity goo!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вс дек 05, 2010 02:45:45 
Сверлит текстолит когтями
Аватар пользователя

Карма: 6
Рейтинг сообщений: 3
Зарегистрирован: Чт мар 05, 2009 19:51:55
Сообщений: 1122
Откуда: Дырасполь
Рейтинг сообщения: 0
А вот такая тема ?
viewtopic.php?f=20&t=5560

_________________
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вс дек 05, 2010 11:53:13 
Встал на лапы

Зарегистрирован: Пт окт 08, 2010 15:43:55
Сообщений: 108
Рейтинг сообщения: 0
Foks, так если у вас нет СVAVR, чем вы пользуетесь?
P.S. Отредактировал код выше, по замечаниям Foks'а, за что ему спасибо. :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вс дек 05, 2010 14:22:05 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 33
Зарегистрирован: Пт июн 04, 2010 17:40:13
Сообщений: 544
Откуда: Непокорный город-герой Севастополь
Рейтинг сообщения: 0
Здаровенько котяры! Вот такая у меня проблемка вырисовалась. Сделал часы реального времени на DS1307 по даташиту, подключил к микроконтроллеру, инициализировал. Подключил выход частоты через транзисторный ключ к светодиоду. Выставил в программе частоту 1 Гц, но светодиод просто горит и не моргает с частотой 1 Гц. Выкладываю печатки часов и индикатора секунд в SL5. На основную плату и плату индикации можно не смотреть - они рабочие. Может где-то косячок? Или я что-то не учёл?
Вложение:
4asiki.lay [167.66 KiB]
Скачиваний: 806

И программа по инициализации и запуску генератора в CVAVR. Стандарт визарда.
Вложение:
4asiki.c [2.84 KiB]
Скачиваний: 840

_________________
Даже у стен есть уши...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вс дек 05, 2010 16:33:57 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 33
Зарегистрирован: Пт июн 04, 2010 17:40:13
Сообщений: 544
Откуда: Непокорный город-герой Севастополь
Рейтинг сообщения: 0
Всё разобрался! Требовалось всёго-навсего установить начальное время!

_________________
Даже у стен есть уши...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Пт янв 07, 2011 01:10:32 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вт май 27, 2008 23:23:24
Сообщений: 238
Рейтинг сообщения: 0
Подскажите как написать функцию считывания в переменную дня недели?
Для каких целей нужен вывод SQW/OUT?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Пт янв 07, 2011 10:21:52 
Сверлит текстолит когтями
Аватар пользователя

Карма: 13
Рейтинг сообщений: 41
Зарегистрирован: Пн окт 13, 2008 11:45:54
Сообщений: 1287
Откуда: РФ, Крым, г.Бахчисарай
Рейтинг сообщения: 0
Sounds писал(а):
Для каких целей нужен вывод SQW/OUT?
ответ здесь http://piclist.ru/D-DS-DS1307-RUS/D-DS-DS1307-RUS.html

Sounds писал(а):
Подскажите как написать функцию считывания в переменную дня недели?
Код:
day = rtc_read(0x03);  // чтение

rtc_write(0x03, day);  // запись

_________________
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
----------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб янв 08, 2011 00:21:01 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вт май 27, 2008 23:23:24
Сообщений: 238
Рейтинг сообщения: 0
Может я тупой, но я так и не понял для чего нужен вывод SQW/OUT?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб янв 08, 2011 00:34:10 
Сверлит текстолит когтями
Аватар пользователя

Карма: 13
Рейтинг сообщений: 41
Зарегистрирован: Пн окт 13, 2008 11:45:54
Сообщений: 1287
Откуда: РФ, Крым, г.Бахчисарай
Рейтинг сообщения: 0
В обычном исполнении не зачем. Просто оставьте в воздухе.

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

Sounds писал(а):
я так и не понял для чего нужен вывод SQW/OUT?
для контроля частоты например. Или скажем Вы собрали устройство у которого очень важно чтобы часы шли, а как определить работает ли генератор в часах т.е. попросту идут часы или стоят ?

Для настольных часов с будильником Вы просто проспите на работу, а для какого нибудь теплонагревателя это может быть катастрофой. Можете сами придумать страшный пример.

_________________
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
----------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб янв 08, 2011 00:51:29 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вт май 27, 2008 23:23:24
Сообщений: 238
Рейтинг сообщения: 0
Спасибо за разъяснения!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб янв 08, 2011 12:44:15 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср дек 30, 2009 18:36:00
Сообщений: 79
Откуда: БЕЛАРУСЬ
Рейтинг сообщения: 0
Sounds писал(а):
Может я тупой, но я так и не понял для чего нужен вывод SQW/OUT?

Я, например, с него вывел мигающее двоеточие.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Сб янв 08, 2011 22:36:37 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Вт фев 16, 2010 12:10:38
Сообщений: 268
Откуда: Воронеж, Россия
Рейтинг сообщения: 0
Знатоки, подскажите: "У DS1307 день недели вычисляется автоматически или надо устанавливать вручную?"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вс янв 09, 2011 11:27:46 
Сверлит текстолит когтями
Аватар пользователя

Карма: 13
Рейтинг сообщений: 41
Зарегистрирован: Пн окт 13, 2008 11:45:54
Сообщений: 1287
Откуда: РФ, Крым, г.Бахчисарай
Рейтинг сообщения: 0
Нет это обычный счетчик от 1 до 7. То что выставишь то и будет считать.

Я в своих часах его вообще не использую, а вычисляю.

Формула есть на Википедии.

Кусок кода из моих часов (Си CVAVR):
Код:
// в данной версии данные хранятся не в двоичной, а в двоично-десятичной системе
unsigned char
myhour, mymin, mysec,    // текушее время
mydate, mymonth, myyear, // текущий календарь
myday;                   // день недели


// ---------- вычислить день недели по дате ----------
void date2day(void) {
unsigned int y, m;

   y = bcd2bin(myyear);
   m = bcd2bin(mymonth);

   if (m > 2) { m -= 2;       }
   else       { m += 10; y--; }

   myday = (unsigned char)((bcd2bin(mydate) + y + (y>>2) + ((31 * m) / 12)) % 7);
   
   if (myday == 0) myday = 7;
}//----------

_________________
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
----------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вс янв 09, 2011 13:07:43 
Мудрый кот
Аватар пользователя

Карма: 25
Рейтинг сообщений: 79
Зарегистрирован: Вт окт 05, 2010 01:08:57
Сообщений: 1800
Рейтинг сообщения: 0
Danko Ты не поверишь, но по твоей вине, до вчерашнего дня, считал что в 1307 нет "дня недели". :)))

а чем хуже формула которую раньше применял?
// формула для вычисления дня недели по дате (ru.wikipedia.org)
// a = (14 - месяц) / 12
// y = год - a
// m = месяц + 12 * a - 2
//ДеньНедели = (7000 + (день + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12)) ОСТАТОК 7

Вот еще одна формула вычисления дня недели.
dayOfWeek = (year+(int)(year4)+ mounth + day) % 7;

где - dayOfWeek - число от нуля до 7, соответсвует дню недели
(0 - вс,1-пн, ...)
year - год
(int)(year/4) - целая часть от четверти года(математики, простите за int)
mounth - число, соответствующее месяцу
январь - 4(високосный) 5(невисокосный)
февраль - 0(високосный) 1(невисокосный)
март - 1
апрель - 4
май - 6
июнь - 2
июль - 4
август - 0
сентябрь - 3
октябрь - 5
ноябрь - 1
декабрь - 3
day - число дня в месяце

Итак, в моем примере
dayOfWeek = (1980 + 495 + 0 + 17 ) % 7 = 0(воскресенье)

_________________
KIT


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #Часы реального времени DS1307 от Dallas Semiconductor#
СообщениеДобавлено: Вс янв 09, 2011 14:44:33 
Сверлит текстолит когтями
Аватар пользователя

Карма: 13
Рейтинг сообщений: 41
Зарегистрирован: Пн окт 13, 2008 11:45:54
Сообщений: 1287
Откуда: РФ, Крым, г.Бахчисарай
Рейтинг сообщения: 0
формула с википедии полная и по ней можно расчитать день недели для любого года. Я решил зачем мне дни недели 1917 года и я упростил формулу. Сокращенная формула работает с 2001 года и на ближайшие 100 лет.

_________________
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
----------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 82 ]  1, , , ,  

Часовой пояс: 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