реклама на сайте
подробности

 
 
> Tiny2313+USI = I2C, Кто-нибудь смог завести?
MTh
сообщение Jul 12 2008, 20:24
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771



Столкнулся с такой проблемой:
Есть Мега 8 с TWI на борту.
Есть Tiny2313 c USI на борту.
Надо заставить их общаться по интерфейсу I2C.

С мегой никаких проблем: TWI завелся, проверен на DS1307 - ACK есть, на данный момент больше ничего не интресует.
Проблема в Тини. USI не хочет отправлять ACK.

Долго рылся в инете, нашел вот это: http://www.avrfreaks.net/index.php?name=PN...t=usi+slave+i2c

Там выложен пример кода и для Меги (Мастер) и для Тини-ведомый (Code for Sharing.rar), и автор утверждает что все работает.

Я адаптировал этот код к CV AVR - ACKов нет...
Путем дебагинга с помощью светодиодов выяснил что тинька не узнает свой адрес. Судя по коду и даташиту - все нормально.

Где я не прав?
Прикрепленные файлы
Прикрепленный файл  Code_for_Sharing.rar ( 489.38 килобайт ) Кол-во скачиваний: 104
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MTh
сообщение Jul 14 2008, 15:25
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771



Так, все проблема решена....
Я проверял наличие устройств на шине при помощи (ADDRESS>>1)|READ. (Кто с TWI работал поймет)
В Вашем коде вкралась некая неточность:
Если я с девайса попытаюсь читать просто послав адрес, то ничего не найду... А если писать - то пожалуйста - устрйство присутствует.
В вашем устройстве это не критично, но вообщем, неверно... Например EEPROM после такого поиска "глюкнет".

Но в любом случае спасибо за помощь, подтверждение того что USI таки работает и 100% рабочий код, дало мне повод посидеть еще пару вечерков и таки додавить!
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 14 2008, 22:52
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(MTh @ Jul 14 2008, 21:25) *
Так, все проблема решена....


Аминь 08.gif

Цитата
В Вашем коде вкралась некая неточность:
Если я с девайса попытаюсь читать просто послав адрес, то ничего не найду... А если писать - то пожалуйста - устрйство присутствует.


Странно... Вроде как там есть отправка ACK по приёму своего адреса...


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
MTh
сообщение Jul 14 2008, 23:20
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771



Цитата(AHTOXA @ Jul 15 2008, 01:52) *
Аминь 08.gif
Странно... Вроде как там есть отправка ACK по приёму своего адреса...

Есть-то есть, только что произойдет если буфер отправки (TX на Slave) будет пуст? У Вас в обработчике OVERFLOW в подпрограмме обработки адреса стоит return... А непосредественная отправка ACK уже после... Другими словами, если я выдаю адрес с командой чтения.... то АСКа не будет - прога до этого места тупо не дойдет.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 16:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016