|
I2C в AVR |
|
|
|
 |
Ответов
|
May 29 2010, 20:53
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(777777 @ May 28 2010, 08:10)  А мне надо, чтобы передача прекращалась по инициативе передатчика - при каждой передаче количество данных может быть разным и это количество знает только передатчик. Получается, что есть только один способ - сделать его мастером. Но он не знает когда начинать передачу - об этом знает получатель. И мы пришли к противоречию © Почему к противоречию? К противоречию придём только тогда, когда окажется, что источник данных невозможно сделать мастером. А сейчас есть только то, к чему я склоняюсь в последнее время -- сделать всех "с мозгами" мастерами, превратить для них шину во write-only, они ничего не читают, только пишут. Нужно "нынешнему мастеру" что-то -- он посылает "нынешнему слейву" короткую команду "хочу то-то" и уходит с шины. "Нынешний слейв" переключается в мастера и отправляет известное ему количество информации тому, кто попросил. По загрузке шины практически то же - вместо передачи RESTART + SLA_R имеем передачу STOP+START+SLA_W Кстати, уходит и обсуждаемая рядом тема растяжки SCL ещё не готовым "нынешним слейвом" - шина свободна, он передаст когда сможет. Write-only шины -- правильная вещь в некоторых случаях.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
May 30 2010, 04:33
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(ReAl @ May 30 2010, 00:53)  Почему к противоречию? К противоречию придём только тогда, когда окажется, что источник данных невозможно сделать мастером. А сейчас есть только то, к чему я склоняюсь в последнее время -- сделать всех "с мозгами" мастерами, превратить для них шину во write-only, они ничего не читают, только пишут. Нужно "нынешнему мастеру" что-то -- он посылает "нынешнему слейву" короткую команду "хочу то-то" и уходит с шины. "Нынешний слейв" переключается в мастера и отправляет известное ему количество информации тому, кто попросил. По загрузке шины практически то же - вместо передачи RESTART + SLA_R имеем передачу STOP+START+SLA_W Да, я тоже думал сделать так. Но... страшно  Цитата(ILYAUL @ May 30 2010, 01:47)  1. Это короткое будет START SLA+W и дальше "Я Х О Ч У Э Т О" , слейв всё таки должен как -то в потоке данных расшифровывать , когда данные , а когда "ХОЧУ" т.е он должен анализировать каждый принимаемый байт и определять к данным или "ХОЧУ" он относится. Т.е на анализ уйдёт кучка времени. 2. Он ещё как-то должен выяснить , а кому собственно послать то? Значит , либо мастер передаёт свой SLA , либо став мастером "бывший" слейв начинает выяснять , кто хотел данные , ау! Почему каждый? Можно сделать первый байт командным и в нем кодировать "что хочу" и "кто хочет". Кроме того, можно сделать чтобы контроллер отвечал на несколько адресов, для этого в регистр TWAMR записывается битовая маска, показывающая, какие биты будут игнорироваться при сравнении с приходящим адресом. Например, если записать 0x1e, то он будет отвечать на 16 адресов, а младшие 4 бита могут быть любыми. Их можно использовать для передачи адреса запрашивающего устройства ("кто хочет").
|
|
|
|
Сообщений в этой теме
777777 I2C в AVR May 27 2010, 05:54  Kane Попробуйте ввести "команду", по которой ... May 28 2010, 06:48   Сергей Борщ Цитата(Kane @ May 28 2010, 09:48) Мастер ... May 28 2010, 09:02  rezident Цитата(777777 @ May 28 2010, 11:10) NAK в... May 28 2010, 14:31    ReAl Цитата(777777 @ May 30 2010, 07:33) Да, я... May 30 2010, 19:04 ILYAUL Ваш slave работает в режиме "Ведомый передатч... May 28 2010, 21:32 777777 Как мило, оказывается модераторы перенесли тему в ... May 29 2010, 04:40 ILYAUL ЦитатаА вдруг FF будет среди байтов данных?
Я дума... May 29 2010, 16:46 ILYAUL ЦитатаНужно "нынешнему мастеру" что-то -... May 29 2010, 21:47 rezident 777777, почитайте спецификацию ACCESS.bus. Может ч... May 30 2010, 19:08 ILYAUL ЦитатаНо сейчас висит на основном процессоре десят... May 31 2010, 06:48 rezident Цитата(ILYAUL @ May 31 2010, 12:48) Поэто... May 31 2010, 15:30 ReAl Цитата(ILYAUL @ May 31 2010, 09:48) Какая... May 31 2010, 21:33  ILYAUL Цитата(ReAl @ Jun 1 2010, 01:33) "Ка... Jun 1 2010, 08:05   ReAl Цитата(ILYAUL @ Jun 1 2010, 11:05) Я напр... Jun 1 2010, 09:07 defunct ReAl:
А Вы учитываете, что в Multimaster придется... Jun 2 2010, 20:33 ASDFG123 Подскажите по I2C интерфейсу в атмега 16, Нужно ... Jun 22 2013, 17:48 IF_P Цитата(ASDFG123 @ Jun 22 2013, 20:48) Под... Jul 9 2013, 09:58
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|