Гость химик Опубликовано 17 Ноября, 2011 в 17:52 Жалоба Поделиться Опубликовано 17 Ноября, 2011 в 17:52 После // TWI stop TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO); поставь while (!(TWCR & (1<<TWINT))) {}; и сообщи об результатах :smile: может принудительная отправка NACK нужна протеусу. Теперь завило на этой строке while (!(TWCR & (1<<TWINT))) {}; при инициализации часов в функции rtc_write. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость torip3ng Опубликовано 17 Ноября, 2011 в 18:08 Жалоба Поделиться Опубликовано 17 Ноября, 2011 в 18:08 скинь свой проект, посмотрю уже завтра. что там не так, может с что-то где-то напутано. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость химик Опубликовано 17 Ноября, 2011 в 18:13 Жалоба Поделиться Опубликовано 17 Ноября, 2011 в 18:13 Библиотеку rtc я всю перекопировал в с. файл, для отладки. RTC.rar Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость torip3ng Опубликовано 18 Ноября, 2011 в 11:25 Жалоба Поделиться Опубликовано 18 Ноября, 2011 в 11:25 В общем дурья моя бошка только вас запутал... Предыдущие наши изменения вычеркиваем, то есть после стопов убираем while (!(TWCR & (1<<TWINT))) {}; Я ж забыл сказать (посмотрел даташит и вспомнил) что принятие последнего байта от часов будет выглядеть чуть иначе: //TWI Read byte TWCR = (1<<TWEA)|(1<<TWINT) | (1<<TWEN); while (!(TWCR & (1<<TWINT))) {}; *sec=bcd2bin(TWDR); TWCR = (1<<TWEA)|(1<<TWINT) | (1<<TWEN); while (!(TWCR & (1<<TWINT))) {}; *min=bcd2bin(TWDR); /**********************/ TWCR = (1<<TWINT) | (1<<TWEN); while (!(TWCR & (1<<TWINT))) {}; *hour=bcd2bin(TWDR); Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость химик Опубликовано 18 Ноября, 2011 в 15:10 Жалоба Поделиться Опубликовано 18 Ноября, 2011 в 15:10 В общем дурья моя бошка только вас запутал...Предыдущие наши изменения вычеркиваем, то есть после стопов убираем while (!(TWCR & (1<<TWINT))) {}; Я ж забыл сказать (посмотрел даташит и вспомнил) что принятие последнего байта от часов будет выглядеть чуть иначе: //TWI Read byte TWCR = (1<<TWEA)|(1<<TWINT) | (1<<TWEN); while (!(TWCR & (1<<TWINT))) {}; *sec=bcd2bin(TWDR); TWCR = (1<<TWEA)|(1<<TWINT) | (1<<TWEN); while (!(TWCR & (1<<TWINT))) {}; *min=bcd2bin(TWDR); /**********************/ TWCR = (1<<TWINT) | (1<<TWEN); while (!(TWCR & (1<<TWINT))) {}; *hour=bcd2bin(TWDR); Большое спасибо, работает! Вопрос, это изменение /*****************/ только для часов, или для других устройств тоже самое? Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость torip3ng Опубликовано 18 Ноября, 2011 в 16:05 Жалоба Поделиться Опубликовано 18 Ноября, 2011 в 16:05 для других тоже. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти