Отговори на тема  [ 9 мнения ] 
Въпрос за I2C 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение Въпрос за I2C
Намерих основните команди за I2C за CCS. i2c_start, i2c_stop, i2c_poll, само че не знам как се прави адресиране. Може ли някой да хвърли малко светлина или да даде линк към някакви материали???


Вто Сеп 01, 2009 9:13 am
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Окт 11, 2006 8:19 pm
Мнения: 373
Местоположение: София/Edinburgh, UK
Мнение 
Ами разгледай готовите примери в ССS. Общо взето идеята е, че първия пакет от информация съдържа адреса на слейва. Така мастера изпраща пакет на всички, но само слейва с подходящия адрес слуша.

_________________
Българският портал за РОБОТИКА


Вто Сеп 01, 2009 9:27 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение 
Добре, а отделните слейв чипове могат ли да обменят инфо помежду си или трябва да използвам мултимастър режим???


Вто Сеп 08, 2009 8:33 am
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Яну 04, 2007 12:43 am
Мнения: 178
Мнение 
I2C е мултимастерна шина, така че термините слейв и мастер са валидни само за дадена транзакция. След като мастерът изпрати STOP състояние всяко едно от устройствата на шината може да стане мастер.
Тук http://www.nxp.com/acrobat_download/use ... 0204_3.pdf може да прочетеш от оригинала (навремето Philips въведе тази шина) за хардуера и протокола на I2C.


Вто Сеп 08, 2009 11:58 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение 
А да попитам още нещо. Значи, когато използвам и2ц_реад() или i2c_write(), чипа чака да получи инфо или да изпрати, и двете функции ли могат да зациклят???Т.е. ако чака да прочете данни с read() тази директива се изпълнява докато прочете нещо, а ако изполвам i2c_write, как мога да съм сигурен че другия чип е приел нещо???Понеже видях, че самата функция i2c_write() може да върне 1 или 0 за получена или не получена инфо, то при използването на примерно x=i2c_write(bla,bla), колко време ще чака докато реши че инфо не е приета. И второ ако слайв иска да изпрати инфо той трябва да изчака мастъра да пусне i2c_start(); или да му поиска инфо и тогава да праща. А самият слейв изпраща ли първи байт адрес или той по дифолт отива към мастер. И как мога да избегна това чакане мастер даподаде сигнал за инфо???


Нед Сеп 20, 2009 12:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение 
1.И двете функции могат да зациклят. Пускаш си един таймер в началото на комуникацията и ако до определено време няма отговор от слейв-а, значи нещо не е наред.
2.Ако другия чип е изпълнил подаденета му команда, трябва да върне ACK or NO ACK
3.Слейв не може сам да "иска да изпрати" инфо - мастера му казва "дай инфото" и слейв го дава.

Прочети дейташита на някой I2C еепром - там е обяснено много подробно и нагледно!


Нед Сеп 20, 2009 7:54 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение 
Ами ако трансфера е винаги един и същ - пр.: мастър праща 2 байта и после иска 2 байта, какъв е шанса да даде грешкаи да зацикли. Аз ако си зареждам таймер той като се препълни ще ми вдигне флаг за интеръпт и от там аз трябва с джъмп - GOTO да скачам след или преди транфера, което не ми харесва особено.


Вто Сеп 22, 2009 10:32 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение 
stoyanoff написа:
Ами ако трансфера е винаги един и същ - пр.: мастър праща 2 байта и после иска 2 байта, какъв е шанса да даде грешкаи да зацикли. Аз ако си зареждам таймер той като се препълни ще ми вдигне флаг за интеръпт и от там аз трябва с джъмп - GOTO да скачам след или преди транфера, което не ми харесва особено. И още нещо след извикван на интеръпт и скачане някъде в програмата и примерно повторно викане на функцията за трансфер ще се пълни стекаи в 1 момент при определен брой грешки всичко ще свърши(рестарт)


Вто Сеп 22, 2009 10:39 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Би било най-добре да оставиш тези вградени функции и да си направиш собствени, така ще имаш контрол върху всичко.

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Вто Сеп 22, 2009 3:54 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 9 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни