Страница 3 из 5

Re: DS1307 используя аппаратный I2C

Добавлено: Пн янв 24, 2011 19:18:50
*Trigger*
Попробовал все варианты. 25:25:25... Похоже, что DS-ка не работает вообще. Завтра, наверное поменяю.

Re: DS1307 используя аппаратный I2C

Добавлено: Пн янв 24, 2011 19:27:09
Apparatchik
*Trigger* писал(а):Попробовал все варианты. 25:25:25... Похоже, что DS-ка не работает вообще. Завтра, наверное поменяю.

Просимулируйте мой проэкт в протеусе. Уменя работает. Может ошибки в монтаже.
Если прошить контроллер "моей" прошивкой, то на выводе 7 DS1307 будут секундные импульсы (конечно если она исправна) и повесив туда светодиод с резистором можно их наблюдать.

Есчо правильность схемы можно проверить не читая с DS1307 , а просто присвоить hour min и sec какието значения и посмотреть что выводится. Чтение с дски нужно закоментировать.

Re: DS1307 используя аппаратный I2C

Добавлено: Пн янв 24, 2011 19:59:40
*Trigger*
Ваша программа у меня на железе не работает (25:25:25). С числами в регистрах пробовал, всё отлично.
Сейчас программа вот такая:
программа2.c
(8.4 КБ) 395 скачиваний

Управление работает. А вот чтение и запись - нет. Светодиод не мигает ни при какой программе.

Re: DS1307 используя аппаратный I2C

Добавлено: Пн янв 24, 2011 20:15:56
Apparatchik
*Trigger* писал(а):Ваша программа у меня на железе не работает (25:25:25). С числами в регистрах пробовал, всё отлично.
Сейчас программа вот такая:
программа2.c

Управление работает. А вот чтение и запись - нет. Светодиод не мигает ни при какой программе.

Записывать в DS1307 нужно в двоичнодесятичном формате, тоесть если переменная x в двоичном то

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

y=bin2bcd(x);
а y уже записывать.

Если когда просто присваивать переменным значения без DS1307 и индикация работает значит дохлая DS1307.

Re: DS1307 используя аппаратный I2C

Добавлено: Пн янв 24, 2011 20:17:39
Apparatchik
Кстати DS1307 без батарейки может неработать, лучше её поставить, ну и кварц часовой самособой.

Re: DS1307 используя аппаратный I2C

Добавлено: Пн янв 24, 2011 20:20:26
*Trigger*
Кварц может быть и плохой. Вместо батарейки подключил вход для батарейки к плюсу питания.

Re: DS1307 используя аппаратный I2C

Добавлено: Пн янв 24, 2011 20:56:00
*Trigger*
Кварц поменял на заведмо исправный. Всё так же. Кварц вне подозрения. Похоже, бракованная DS-ка.

Re: DS1307 используя аппаратный I2C

Добавлено: Пн янв 24, 2011 21:03:10
*Trigger*

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

bin2bcd
bcd2bin

Какая из них для перевода из двоичного в двоичнодесятичный, а какая из двоичнодесятичного в двоичный?

Re: DS1307 используя аппаратный I2C

Добавлено: Вт янв 25, 2011 01:42:46
Danko
bin это binary - двоичный
bcd это binary-coded-decimal - переводить? :)

двойка в середине это to на русском в

bin2bcd - двоичный в двоично-десятичный
bcd2bin - двоично-десятичный в двоичный

Re: DS1307 используя аппаратный I2C

Добавлено: Вт янв 25, 2011 18:49:08
Apparatchik
*Trigger* писал(а):Вместо батарейки подключил вход для батарейки к плюсу питания.

Для чистоты эксперемента может хоть к двум пальчикам подключить временно.

Re: DS1307 используя аппаратный I2C

Добавлено: Ср янв 26, 2011 22:35:29
*Trigger*
Ура!!! Работает!!!
Оказывается, нужно было подключить либо батарейку, либо посадить вход для батарейки на землю.
:beer:
PS. Это моя первая программа для МК. Светодиод не в счёт!!!

Re: DS1307 используя аппаратный I2C

Добавлено: Ср янв 26, 2011 22:41:43
Apparatchik
*Trigger* писал(а):Ура!!! Работает!!!
Оказывается, нужно было подключить либо батарейку, либо посадить вход для батарейки на землю.
:beer:
PS. Это моя первая программа для МК. Светодиод не в счёт!!!

Мои поздравления! Моя первая была примерно такая же только я через таймеры делал. Теперь Вам нужно осваивать динамическую индикацию.

Re: DS1307 используя аппаратный I2C

Добавлено: Сб янв 29, 2011 15:47:10
*Trigger*
Ещё вопрос: если установить время больше девяти часов (минут), то записанное в DS время на 6 больше установленного, если больше 19 - на 12 больше... и т. д.
Программа вот:
программа2.c
(6.45 КБ) 447 скачиваний

Причём со значениями в переменных такого нет. Это только при записи в DS/

Re: DS1307 используя аппаратный I2C

Добавлено: Сб янв 29, 2011 16:39:30
*Trigger*
Пожалуйста, помогите!!!

Re: DS1307 используя аппаратный I2C

Добавлено: Сб янв 29, 2011 22:59:57
Apparatchik
*Trigger* писал(а):Пожалуйста, помогите!!!

Глянул я на код вроде ничё неувидел, что-то там всё запутано. Но повторюсь работать с метками имхо геморой, нужно учится без них.
Я тут набросал Вам код. Индикатор обновляется по переполнению таймера и для установки времени отдельная функция. В протеусе всё работает.

Re: DS1307 используя аппаратный I2C

Добавлено: Сб янв 29, 2011 23:27:41
*Trigger*
Изучил Вашу программу. Оказалось, что время на запись Вы задаёте в двоичном формате. Исправил в своей программе - всё отлично работает. А то тут говорили, что писать надо в двоично десятичном формате...
Спасибо огромное!!!

Re: DS1307 используя аппаратный I2C

Добавлено: Сб янв 29, 2011 23:37:42
Apparatchik
*Trigger* писал(а):Изучил Вашу программу. Оказалось, что время на запись Вы задаёте в двоичном формате. Исправил в своей программе - всё отлично работает. А то тут говорили, что писать надо в двоично десятичном формате...
Спасибо огромное!!!

Писать нужно в двоичнодесятичном, но в файле ds1307.h уже есть преобразование. Это если использовать библиотеку с этой ветки тогда нужно самому преобразовывать.

Re: DS1307 используя аппаратный I2C

Добавлено: Сб янв 29, 2011 23:55:06
*Trigger*
Я так и думал, что оно там есть.

Re: DS1307 используя аппаратный I2C

Добавлено: Сб ноя 12, 2011 18:38:09
Apparatchik
Что быстрее для мк в плане скорости исполнения использовать функции библиотеки BCD, или самому делить и умножать на 10? или одинаково?

Re: DS1307 используя аппаратный I2C

Добавлено: Вт ноя 15, 2011 07:21:22
*Trigger*
Надо глянуть, что в библиотеке.