Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Часы реального времени + MSP430
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
ice126
Бросьте в меня примером на С по работе с часами реального времени по I2C.

Реально перелопатил много - не нашел.
Наверное туплю в плане адреса устройства. В даташите написано 0xA3, но у меня Протеус тупо зависает в ожидании завершения передачи.
Часы у меня PCF8563. МК в Протеусе MSP430F2132
Lagman
А вы читали даташит?
Цитата
Two slave addresses are reserved for the PCF8563:
Read: A3h (10100011)
Write: A2h (10100010)

И если ваша библиотека i2c умеет сама контролировать бит записи/чтения в адресе (7bit) устройства то надо опрашивать устройство с адресом 51h.
ar__systems
Не тратьте время на протеус.
ice126
Цитата(ar__systems @ Mar 8 2017, 15:03) *
Не тратьте время на протеус.

Согласен, есть в нем грешки. Уже неоднократно 100% рабочий код просто валил Протеус в фатал еррор или в зависание, но в любом случае в Протеусе проще играться, чем 1000 раз перепрошивать МК.

Цитата(Lagman @ Mar 8 2017, 14:57) *
А вы читали даташит?
И если ваша библиотека i2c умеет сама контролировать бит записи/чтения в адресе (7bit) устройства то надо опрашивать устройство с адресом 51h.

Так в даташите ж и написан адрес. Вот только я не могу понять, почему Вы рекомендуете 51h ?
jcxz
Цитата(ice126 @ Mar 8 2017, 15:27) *
Так в даташите ж и написан адрес. Вот только я не могу понять, почему Вы рекомендуете 51h ?

Может потому, что в 7-битном режиме I2C адрес 0xA3 невозможен? Не задумывались об этом?
Lagman
Цитата(ice126 @ Mar 8 2017, 16:27) *
Так в даташите ж и написан адрес. Вот только я не могу понять, почему Вы рекомендуете 51h ?

В i2c младший бит адреса (0 бит) показывает на вид операции - чтение (1) или запись (0).
51h = A3h >> 1

Но надо знать как работает ваш код с адресом устройства и от этого отталкиваться.
ice126
Цитата(jcxz @ Mar 8 2017, 18:24) *
Может потому, что в 7-битном режиме I2C адрес 0xA3 невозможен? Не задумывались об этом?

не так, чтоб задумывался... сложно после 10 лет прикладного снова на МК возвращаться.
Короче, победил частично. Часы работают, время устанавливается, а вот с будильником засада.
По-любому что-то намутил я. Скорее всего с BCD.
В 0х01 пишу 0х06 - бит будильника + бит прерывания
Ну а дальше в 0х09 пишу 0х01 - пусть на первой минуте будет прерывание.
Реакции никакой. Закипаю уже...
Даташит http://www.nxp.com/documents/data_sheet/PCF8563.pdf
Цитата(Lagman @ Mar 8 2017, 19:33) *
В i2c младший бит адреса (0 бит) показывает на вид операции - чтение (1) или запись (0).
51h = A3h >> 1
Но надо знать как работает ваш код с адресом устройства и от этого отталкиваться.

Спасибо, уже разобрался. осталось как-то будильник побороть. Обленился. Оно же проще каждый день одно и то же, а тут новое нужно осваивать.
Lagman
Цитата(ice126 @ Mar 8 2017, 20:37) *
В 0х01 пишу 0х06 - бит будильника + бит прерывания

не знаю не работал с этими часами, но тут смешались таймеры и будильники (alarm), решите что используете и посмотрите в каком состоянии ножка INT. Там очищать битики надо если ножка в 0.
ice126
Цитата(Lagman @ Mar 8 2017, 23:13) *
не знаю не работал с этими часами, но тут смешались таймеры и будильники (alarm), решите что используете и посмотрите в каком состоянии ножка INT. Там очищать битики надо если ножка в 0.

Спасибо, разобрался. Вдумчиво почитал даташит и дало результат.
Прерывание по будильнику проверил - работает. Вот только не знаю, будет ли ежедневно, если я не указал явно дни, тоесть стоят дни месяца и дни недели - дизейбл.
Ладно, на харде проверю - не маслать же Протеусу сутки sm.gif
Остался единственный вопрос, который на даный момент для меня не понятен. Какого черта после прерывания INT часов падает на землю? Или я как-то не так это все понимаю...
Вот так до прерывания от будильника

А это после прерывания. Я бы подумал, что где-то в коде управления на МК натупил, то по кнопке прерывание отрабатывает и возвращается в первоначальное положение.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.