Перейти к содержанию

Помогите перейти на аппаратный TWI


Гость химик

Рекомендуемые сообщения

После

// TWI stop  
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);

поставь

while (!(TWCR & (1<<TWINT))) {};

и сообщи об результатах :smile:

может принудительная отправка NACK нужна протеусу.

Теперь завило на этой строке

while (!(TWCR & (1<<TWINT))) {};

при инициализации часов в функции rtc_write.

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 29
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

В общем дурья моя бошка только вас запутал...

Предыдущие наши изменения вычеркиваем, то есть после стопов убираем

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);

Ссылка на комментарий
Поделиться на другие сайты

В общем дурья моя бошка только вас запутал...

Предыдущие наши изменения вычеркиваем, то есть после стопов убираем

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);

Большое спасибо, работает!

Вопрос, это изменение /*****************/ только для часов, или для других устройств тоже самое?

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...