Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

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

Пн янв 24, 2011 19:18:50

Попробовал все варианты. 25:25:25... Похоже, что DS-ка не работает вообще. Завтра, наверное поменяю.

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

Пн янв 24, 2011 19:27:09

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

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

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

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

Пн янв 24, 2011 19:59:40

Ваша программа у меня на железе не работает (25:25:25). С числами в регистрах пробовал, всё отлично.
Сейчас программа вот такая:
программа2.c
(8.4 KiB) Скачиваний: 295

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

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

Пн янв 24, 2011 20:15:56

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

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

Записывать в DS1307 нужно в двоичнодесятичном формате, тоесть если переменная x в двоичном то
Код:
y=bin2bcd(x);
а y уже записывать.

Если когда просто присваивать переменным значения без DS1307 и индикация работает значит дохлая DS1307.
Последний раз редактировалось Apparatchik Вт янв 25, 2011 18:53:02, всего редактировалось 1 раз.

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

Пн янв 24, 2011 20:17:39

Кстати DS1307 без батарейки может неработать, лучше её поставить, ну и кварц часовой самособой.

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

Пн янв 24, 2011 20:20:26

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

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

Пн янв 24, 2011 20:56:00

Кварц поменял на заведмо исправный. Всё так же. Кварц вне подозрения. Похоже, бракованная DS-ка.

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

Пн янв 24, 2011 21:03:10

Код:
bin2bcd
bcd2bin

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

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

Вт янв 25, 2011 01:42:46

bin это binary - двоичный
bcd это binary-coded-decimal - переводить? :)

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

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

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

Вт янв 25, 2011 18:49:08

*Trigger* писал(а):Вместо батарейки подключил вход для батарейки к плюсу питания.

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

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

Ср янв 26, 2011 22:35:29

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

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

Ср янв 26, 2011 22:41:43

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

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

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

Сб янв 29, 2011 15:47:10

Ещё вопрос: если установить время больше девяти часов (минут), то записанное в DS время на 6 больше установленного, если больше 19 - на 12 больше... и т. д.
Программа вот:
программа2.c
(6.45 KiB) Скачиваний: 314

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

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

Сб янв 29, 2011 16:39:30

Пожалуйста, помогите!!!

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

Сб янв 29, 2011 22:59:57

*Trigger* писал(а):Пожалуйста, помогите!!!

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

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

Сб янв 29, 2011 23:27:41

Изучил Вашу программу. Оказалось, что время на запись Вы задаёте в двоичном формате. Исправил в своей программе - всё отлично работает. А то тут говорили, что писать надо в двоично десятичном формате...
Спасибо огромное!!!

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

Сб янв 29, 2011 23:37:42

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

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

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

Сб янв 29, 2011 23:55:06

Я так и думал, что оно там есть.

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

Сб ноя 12, 2011 18:38:09

Что быстрее для мк в плане скорости исполнения использовать функции библиотеки BCD, или самому делить и умножать на 10? или одинаково?

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

Вт ноя 15, 2011 07:21:22

Надо глянуть, что в библиотеке.
Ответить