[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: RD3AVJ 
Форум » форумы » Общие вопросы по Bascom-AVR » RV3029 и Bascom (Как записать/получить данные?)
RV3029 и Bascom
RD3AVJДата: Пятница, 19.09.2014, 22:30 | Сообщение # 1
Группа: Модераторы
Сообщений: 175

Статус: Offline
Коллеги добрый вечер!
Прошу помощи в освоении прецензионной RTC RV-3029. Никак не пойму, как подружить с Мегой. Данных в инете нет вообще. Единственное что нашел - безумный немец юзает это в своих приборах и выложил такой код:

В глубине души я понимаю, что в этом бреде есть здравое зерно, но въехать не могу(( Вот ссылка на этот ад: http://www.loetstelle.net/projekte2/rv3029bascom/rv3029bascom.php


 
RD3AVJДата: Суббота, 20.09.2014, 19:21 | Сообщение # 2
Группа: Модераторы
Сообщений: 175

Статус: Offline
Друзья, неужели никому не интересно исследовать I2c команды этого девайса? Чип то - сверхточные часы...

 
exersizzeДата: Воскресенье, 21.09.2014, 00:02 | Сообщение # 3
Группа: Администраторы
Сообщений: 719

Статус: Offline
Дык нету у никого такой дорогой микросхемы,  вот и не интересно)) Да и с доставаемостью проблема, сам знаешь.
Посмотрел "даташит" на микросхему, всего 2 страницы?! Или есть где-то более подробное описание?
Но из того что там приведено, есть полезная картинка со структурой микросхемы и организацией памяти


Так вот, согласно ей адреса времени и даты начинаются с восьмого байта: 08-секунды, 09-минуты и тд.
Код по ссылке вполне себе логичный и вроде даже рабочий:) часы кстати по принципу очень похожи на DS1307 ( http://avrproject.ru/publ....-1-0-11 )   данные также передаются в двоично-десятичном формате
Щас накатаю простой пример без использования юарта


 
exersizzeДата: Воскресенье, 21.09.2014, 00:51 | Сообщение # 4
Группа: Администраторы
Сообщений: 719

Статус: Offline
Ну не совсем без юарта, вставил для примера. В принципе можно выводить куда угодно
Код
$regfile = "m88def.dat"
$crystal = 1000000
$baud = 1200

'конфигурируем scl и sda пины
Config Sda = Portc.4                    ' I2C Data
Config Scl = Portc.5                    ' I2C Clock

'адреса записи и чтения микросхемы
Const Rv3029r = &HAD
Const Rv3029w = &HAC

'переменные для загрузки и получения времени и даты с RTC
Dim Time_array(8) As Byte

'переменные для хранения времени и даты
   Dim _day As Byte
   Dim _month As Byte
   Dim _year As Byte
   Dim _hour As Byte
   Dim _min As Byte
   Dim _sec As Byte

Waitms 250

'******************************************************************************************************
'грузим в переменные текущие время и дату

   _day = 21

   _month = 9

   _year = 14

   _hour = 0

   _min = 0

   _sec = 0

waitms 250

Time_array(1) = &H08                    'Startadress = &H08   <<адрес откуда начнется запись в память часов

Time_array(2) = Makebcd(_sec)                    'преобразование введенных данных в двоично-десятичный формат

Time_array(3) = Makebcd(_min)

Time_array(4) = Makebcd(_hour)

Time_array(5) = Makebcd(_day)

Time_array(6) = Makebcd(0)                    'здесь день недели

Time_array(7) = Makebcd(_month)

Time_array(8) = Makebcd(_year)

'преобразовали, поехали загружать

I2cstart

I2csend Rv3029w , Time_array(1) , 8                         'все согласно канонам I2C

I2cstop

'если все прошло удачно, время загружено в RTC и часы тикают.
'теперь можно считывать время и дату

Do

Time_array(1) = &H08                    'Startaddress der RTC Watch Page

I2cstart

  'даем команду I2C на чтение, отправляем начальный адрес и получаем от RTC подряд 7 байт
I2creceive Rv3029r , Time_array(1) , 1 , 7     

waitms 5

I2cstop
  'теперь обратно преобразовываем данные из двоично-десятичной в десятичный
_sec = Makedec(time_array(1))                     

_min = Makedec(time_array(2))

_hour = Makedec(time_array(3))

'Weekday = Makedec(time_array(4))

_day = Makedec(time_array(4))

_month = Makedec(time_array(6))

_year = Makedec(time_array(7))

'для примера отправим время и дату в терминал
Print _day ; "/" ; _month ; "/" ; _year ; "   " ; _hour ; ":" ; _min ; ":" ; _sec

Wait 1                    'повторяем чтение каждую секунду
Loop

End

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


 
RD3AVJДата: Воскресенье, 21.09.2014, 21:46 | Сообщение # 5
Группа: Модераторы
Сообщений: 175

Статус: Offline
Даташит - 22 страницы biggrin  http://docs-europe.electrocomponents.com/webdocs....add.pdf   Микросхема не редкая, а редко используемая))), но для построения часов точного времени самое оно. На Элитане относительно недорого, я там уже брал парочку, только в том проекте (не моем, с радиокота) был готовый скомпилированный файл, поэтому в алгоритме работы и не смог разобраться. Спасибо за помощь, как придут эти чипы - опробую. И вышлю заодно тебе поиграться)))
Бум пробовать! И еще раз спасибо за помощь!


 
Форум » форумы » Общие вопросы по Bascom-AVR » RV3029 и Bascom (Как записать/получить данные?)
Страница 1 из 11
Поиск: