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

 
 
> Mega16+Twi+Multimaster = не работает арбитраж
DI HALT
сообщение Nov 19 2010, 15:49
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 17-12-07
Пользователь №: 33 346



Итак, ситуевина. Есть шина i2c на ней висят два мастера и одна еепромка.

Мастеры одновременно (ресеты обьединены) начинают ломиться в еепромку на запись. Но в разные адреса.

М1 ломится в 0А по адресу страницы 00 0F и пишет туда байт 'B'
M2 ломится в 0А по адресу страницы 00 FF и пишет туда байт 'B'

Исходя из правил арбитража М2 арбитраж должна проиграть и свалить с поляны. Однако, что происходит на самом деле:

Итак, осциллограммка для привлечения внимания.


Красный квадратик отмечает место, где идет конфлик уровней. Как видим, запись прошла в ЕЕПРОМ по адресу 00 0F - Еепром подтверждает это.

Что же о процессе думают два контроллера? Я писал в буфер лог работы конечного автомата прерывания TWI (тупо TWSR) и выдавал потом в уарт. Получил такую картину:

М1: 08 18 28 28 28
M2: 08 18 28 28 28

Расшифровка если кто не помнит:
08 - передан СТАРТ
18 - Передан адрес девайса и получен АСК
28 - передан первый байт (00) и получен АСК
28 - передан второй байт (0F vs FF) и получен ACK
28 - передан последний байт 'B' и получен АСК
- дальше будет стоп.

Хотя по логике шины должно быть так

М1: 08 18 28 28 28
M2: 08 18 28 38 ...........08 18 28 28 28

38 - проигрыш арбитража и старт(опционально) после освобождения шины

Почему М2 продолжил передачу, хотя пролажал арбитраж на целой тетраде? Аппаратный глюк контроллера? И как с этим жить?

З.Ы.
Пример сугубо учебно демонстрационный и не стоит задавать вопросы "зачем нужно много мастеров, да еще в таком синхроне".

UPD ах да, по одиночке они спокойно пишут каждая в свой адрес. А вот когда вместе, то вот такое вот садомазо.

Сообщение отредактировал DI HALT - Nov 19 2010, 15:57


--------------------
Байки промышленного ремонтника в цикле рассказов Последний Герой Труда. Ну и, кроме того, в моём блоге еще есть что почитать.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DI HALT   Mega16+Twi+Multimaster = не работает арбитраж   Nov 19 2010, 15:49
- - ILYAUL   Цитата(DI HALT @ Nov 19 2010, 18:49) Поче...   Nov 19 2010, 16:03
- - DI HALT   Обана, т.е. после передачи адреса Slave может нача...   Nov 19 2010, 16:08
|- - ILYAUL   Цитата(DI HALT @ Nov 19 2010, 19:08) Обан...   Nov 19 2010, 16:11
- - DI HALT   Стоп. Первый сценарий тут не катит. Он для того сл...   Nov 19 2010, 16:19
- - ILYAUL   ДА, похоже. А что на осциллограмме данных второго ...   Nov 19 2010, 16:27
- - DI HALT   Похоже тут прокладка виновата У меня контроллер...   Nov 19 2010, 16:50
- - ILYAUL   ЦитатаСейчас разбирусь Сообщите , плиз , пройдёт и...   Nov 19 2010, 17:02
- - DI HALT   Гы. Прикольно. Ресеты четко синхронно. Разница там...   Nov 19 2010, 17:07
- - ILYAUL   А введите програмную задержку на 40 mc/ или фьюзам...   Nov 19 2010, 17:35
- - DI HALT   Да я проще - сейчас засинхроню оба МК один от друг...   Nov 19 2010, 18:58
|- - ILYAUL   Цитата(DI HALT @ Nov 19 2010, 21:58) 08 1...   Nov 19 2010, 19:18
- - ReAl   Так это без времён, только статусы. С временами бы...   Nov 19 2010, 19:37
- - DI HALT   Так точно. Первый оттарабанил. Только он дал стоп,...   Nov 19 2010, 20:41
|- - ILYAUL   Ну так может , рестарт спасёт?   Nov 19 2010, 22:49
- - DI HALT   Ну я на рестарт и запрограммировал в случае адрес ...   Nov 19 2010, 22:55
|- - ILYAUL   Цитата(DI HALT @ Nov 20 2010, 01:55) Ну я...   Nov 19 2010, 22:57
- - DI HALT   Можно еще число попыток сделать ограниченным. Хотя...   Nov 20 2010, 17:17
|- - ILYAUL   Цитата(DI HALT @ Nov 20 2010, 20:17) Можн...   Nov 20 2010, 18:48
- - ReAl   Традиционно I2C EEPROM просто не отвечают ACK-ом н...   Nov 20 2010, 22:07


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

 


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


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