Да, с схемотехнической точки зрения похоже все хорошо, т.к. один и2с без других прерываний работает нормально. Резисторы 5 КОм на обоих линиях, и2с на плате, длина линий очень небольшая.
Забежал к другу посмотреть на осциллографе, что происходит на шине.
Правильно ли я понимаю, что при попытке чтения из регистра нормально передается адрес устройства и адрес регистра , а после рестарта для чтения байта не приходит ответ от слейва?
Цитата
Вроде заработало, но, кажется, основная ошибка была совсем в другом...
Я посылал один пакет в след за другим сразу. Гипотеза, что слейв не успевал поймать старт после стопа. Может такое быть?
Поэтому он не подтверждал прием, срабатывало прерывание на ошибку. ошибка сбрасывалась, но что при этом с передачей происходит дальше я не знаю.
Поставил паузу перед отправкой. Но как то это стремно, контроллер тратит свеё время на ожидание...
Хотя меня тревожат сомненья что это не причина. Может просто условия изменились и пока ошибки не возникает...
Спасибо всем огромное, а особенно KnightIgor!!!
Кажись заработало! Тоже вставил такую задержку и стало работать!
Дома попробую с прерываниями.
С прерываниями работает на отлично!)
Сообщение отредактировал dfyz.s - Feb 13 2013, 18:24
Эскизы прикрепленных изображений