Страница 1 из 1
Как правильно послать STOP в I2C?
Добавлено: Пт июн 12, 2015 23:51:47
Jen0k
Курю ассемблер, паралельно колхожу TWI без богомерзких делеев, вводящих контроллер в кому.
Вот что наколхозил:
Вот тут
http://easyelectronics.ru/interface-bus-iic-i2c.html и тут
http://www.gaw.ru/html.cgi/txt/interface/iic/iic5_2.htm говорят, что правильно как у меня один в один.
Что я делаю не так? Или это протеус глючит?
Re: Как правильно послать STOP в I2C?
Добавлено: Сб июн 13, 2015 01:21:46
Rtmip
Стоп условие сформировано, что смущает? То, что дебуггер сначала считывает SDA=0, а потом пишет, что это был стоп?
Re: Как правильно послать STOP в I2C?
Добавлено: Сб июн 13, 2015 02:05:02
Jen0k
Rtmip
Ну, да. По идее, из вывода дебага получается, что начинает передаваться второй байт и после первого его бита идет стоп, разве не так? Я не знаю, может так и должно быть?
Re: Как правильно послать STOP в I2C?
Добавлено: Сб июн 13, 2015 13:26:50
ILYAUL
Код: Выделить всё
;**************************************************
;* ;;+Подпрограмма формирование STOP;;* *
;**************************************************
STOP:
outi TWCR,(1<<TWINT)|(1<<TWSTO)|(1<<TWEN);/ Формирование режима STOP
waitTWIStop:
lds temp,TWCR ;= Считываем регистр управления
sbrc temp,TWSTO ;= Проверяем бит STOP
rjmp waitTWIStop ;= Не установлен - повторяем проверку
ret
Re: Как правильно послать STOP в I2C?
Добавлено: Вс июн 14, 2015 01:14:39
Rtmip
Jen0k , все правильно, так и должно быть, иначе как вы будете ловить ошибки, в случае их появления?

А так, вы видите, что вы там "напередавали"

Re: Как правильно послать STOP в I2C?
Добавлено: Вс июн 14, 2015 23:16:45
Jen0k
Понял, оказывается зря панику поднял. Всем спасибо!