Цитата(777777 @ May 28 2010, 08:10)

А мне надо, чтобы передача прекращалась по инициативе передатчика - при каждой передаче количество данных может быть разным и это количество знает только передатчик. Получается, что есть только один способ - сделать его мастером. Но он не знает когда начинать передачу - об этом знает получатель. И мы пришли к противоречию ©
Почему к противоречию? К противоречию придём только тогда, когда окажется, что источник данных невозможно сделать мастером.
А сейчас есть только то, к чему я склоняюсь в последнее время -- сделать всех "с мозгами" мастерами, превратить для них шину во write-only, они ничего не читают, только пишут. Нужно "нынешнему мастеру" что-то -- он посылает "нынешнему слейву" короткую команду "хочу то-то" и уходит с шины. "Нынешний слейв" переключается в мастера и отправляет известное ему количество информации тому, кто попросил. По загрузке шины практически то же - вместо передачи RESTART + SLA_R имеем передачу STOP+START+SLA_W
Кстати, уходит и обсуждаемая рядом тема растяжки SCL ещё не готовым "нынешним слейвом" - шина свободна, он передаст когда сможет.
Write-only шины -- правильная вещь в некоторых случаях.