ice126 0 7 марта, 2017 Опубликовано 7 марта, 2017 · Жалоба Бросьте в меня примером на С по работе с часами реального времени по I2C. Реально перелопатил много - не нашел. Наверное туплю в плане адреса устройства. В даташите написано 0xA3, но у меня Протеус тупо зависает в ожидании завершения передачи. Часы у меня PCF8563. МК в Протеусе MSP430F2132 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 8 марта, 2017 Опубликовано 8 марта, 2017 · Жалоба А вы читали даташит? Two slave addresses are reserved for the PCF8563: Read: A3h (10100011) Write: A2h (10100010) И если ваша библиотека i2c умеет сама контролировать бит записи/чтения в адресе (7bit) устройства то надо опрашивать устройство с адресом 51h. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 8 марта, 2017 Опубликовано 8 марта, 2017 · Жалоба Не тратьте время на протеус. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ice126 0 8 марта, 2017 Опубликовано 8 марта, 2017 · Жалоба Не тратьте время на протеус. Согласен, есть в нем грешки. Уже неоднократно 100% рабочий код просто валил Протеус в фатал еррор или в зависание, но в любом случае в Протеусе проще играться, чем 1000 раз перепрошивать МК. А вы читали даташит? И если ваша библиотека i2c умеет сама контролировать бит записи/чтения в адресе (7bit) устройства то надо опрашивать устройство с адресом 51h. Так в даташите ж и написан адрес. Вот только я не могу понять, почему Вы рекомендуете 51h ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 182 8 марта, 2017 Опубликовано 8 марта, 2017 · Жалоба Так в даташите ж и написан адрес. Вот только я не могу понять, почему Вы рекомендуете 51h ? Может потому, что в 7-битном режиме I2C адрес 0xA3 невозможен? Не задумывались об этом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 8 марта, 2017 Опубликовано 8 марта, 2017 · Жалоба Так в даташите ж и написан адрес. Вот только я не могу понять, почему Вы рекомендуете 51h ? В i2c младший бит адреса (0 бит) показывает на вид операции - чтение (1) или запись (0). 51h = A3h >> 1 Но надо знать как работает ваш код с адресом устройства и от этого отталкиваться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ice126 0 8 марта, 2017 Опубликовано 8 марта, 2017 · Жалоба Может потому, что в 7-битном режиме I2C адрес 0xA3 невозможен? Не задумывались об этом? не так, чтоб задумывался... сложно после 10 лет прикладного снова на МК возвращаться. Короче, победил частично. Часы работают, время устанавливается, а вот с будильником засада. По-любому что-то намутил я. Скорее всего с BCD. В 0х01 пишу 0х06 - бит будильника + бит прерывания Ну а дальше в 0х09 пишу 0х01 - пусть на первой минуте будет прерывание. Реакции никакой. Закипаю уже... Даташит http://www.nxp.com/documents/data_sheet/PCF8563.pdf В i2c младший бит адреса (0 бит) показывает на вид операции - чтение (1) или запись (0). 51h = A3h >> 1 Но надо знать как работает ваш код с адресом устройства и от этого отталкиваться. Спасибо, уже разобрался. осталось как-то будильник побороть. Обленился. Оно же проще каждый день одно и то же, а тут новое нужно осваивать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 8 марта, 2017 Опубликовано 8 марта, 2017 · Жалоба В 0х01 пишу 0х06 - бит будильника + бит прерывания не знаю не работал с этими часами, но тут смешались таймеры и будильники (alarm), решите что используете и посмотрите в каком состоянии ножка INT. Там очищать битики надо если ножка в 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ice126 0 9 марта, 2017 Опубликовано 9 марта, 2017 (изменено) · Жалоба не знаю не работал с этими часами, но тут смешались таймеры и будильники (alarm), решите что используете и посмотрите в каком состоянии ножка INT. Там очищать битики надо если ножка в 0. Спасибо, разобрался. Вдумчиво почитал даташит и дало результат. Прерывание по будильнику проверил - работает. Вот только не знаю, будет ли ежедневно, если я не указал явно дни, тоесть стоят дни месяца и дни недели - дизейбл. Ладно, на харде проверю - не маслать же Протеусу сутки :) Остался единственный вопрос, который на даный момент для меня не понятен. Какого черта после прерывания INT часов падает на землю? Или я как-то не так это все понимаю... Вот так до прерывания от будильника А это после прерывания. Я бы подумал, что где-то в коде управления на МК натупил, то по кнопке прерывание отрабатывает и возвращается в первоначальное положение. Изменено 21 июня, 2017 пользователем Herz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться