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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> 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
ILYAUL
сообщение Nov 19 2010, 16:03
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(DI HALT @ Nov 19 2010, 18:49) *
Почему М2 продолжил передачу, хотя пролажал арбитраж на целой тетраде? Аппаратный глюк контроллера? И как с этим жить?

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

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

Выполнение арбитража может развиться 3 различными сценариями. Вы прямо точно попали в первый сценарий
1. Два или более ведущих осуществляют однотипный обмен с одним и тем же slave.
В этом случае никто из них не сможет распознать конфликт на шине.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
DI HALT
сообщение Nov 19 2010, 16:08
Сообщение #3


Участник
*

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



Обана, т.е. после передачи адреса Slave может начаться любой бардак и никто это не отследит? Т.е. получается принимают такой вариант как маловероятный и забивают.


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


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(DI HALT @ Nov 19 2010, 19:08) *
Обана, т.е. после передачи адреса Slave может начаться любой бардак и никто это не отследит? Т.е. получается принимают такой вариант как маловероятный и забивают.

laughing.gif Повидимому считается, что в данном случае Вы должны учитывать такую возможность и программно "рулить" арбитражем


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
DI HALT
сообщение Nov 19 2010, 16:19
Сообщение #5


Участник
*

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



Стоп. Первый сценарий тут не катит. Он для того случая, когда мои оба мастера шлют абсолютно идентичные посылки. Да, они не поймут ,что пишут синхронно, но это и не важно - т.к. все пройдет корректно.

Там есть и второй сценарий, он как раз мой:

2.Два или более ведущих обращаются к одному и тому же ведомому с различными _данными_ или различными типами обмена (чтение/запись). В этом случае распределение приоритетов произойдет во время передачи битов _данных_ или бита направления. Ведущий, потерявший приоритет, может либо переключиться в режим неадресованного ведомого, либо дождаться освобождения шины и сформировать состояние СТАРТ для ее захвата.

Т.е. на этапе передачи данных и происходит косяк.


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


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



ДА, похоже. А что на осциллограмме данных второго ведущего?


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
DI HALT
сообщение Nov 19 2010, 16:50
Сообщение #7


Участник
*

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



Похоже тут прокладка виновата smile.gif

У меня контроллеры стартуют с интервалом в 40мс оказывается. И вторая пачка тоже проходит ,сама по себе, независимо от первой. И на одном захвате осцила они не влезают. Решил поглядеть полную картину за 500мс и увидел это. Не то оптимизатор так изза одного байта шалит, не то SUT биты по разному стоят. Сейчас разбирусь.

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


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


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
Сейчас разбирусь

Сообщите , плиз , пройдёт или нет арбитраж- интересно


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
DI HALT
сообщение Nov 19 2010, 17:07
Сообщение #9


Участник
*

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



Гы. Прикольно. Ресеты четко синхронно. Разница там видна, но на пределе чувствительности осциллографа.

Фуз биты в обоих контроллерах бит в бит. Код одинаковый, прям один и тот же хекс загрузил в оба. А второй стартует позже первого на 40мс. Это внутренний RC так долго раскачивается? О_о


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


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



А введите програмную задержку на 40 mc/ или фьюзами "поиграться"


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
DI HALT
сообщение Nov 19 2010, 18:58
Сообщение #11


Участник
*

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



Да я проще - сейчас засинхроню оба МК один от другого.

В общем, сейчас все более менее правдоподобно. ОДин МК продул сразу арбитраж еще на уровне адреса слейва. Видимо неудачно ткнулся в период. Второй МК спокойно записал байт в еепромку. Первый, сразу же по окончании работы второго тоже пытался в еепромку сунуться, дал старт и SLA, но получил NACK и отпал. Видать еепромка долго жует.

08 18 28 28 28 победитель
08 38 08 20 проигравший.

20 код отсутствия ответа на адрес слейва.

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


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


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(DI HALT @ Nov 19 2010, 21:58) *
08 18 28 28 28 победитель
08 38 08 20 проигравший.

20 код отсутствия ответа на адрес слейва.

Он же должен тутже перейти в slave - почему он 08 получил т.е сформировал START


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
ReAl
сообщение Nov 19 2010, 19:37
Сообщение #13


Нечётный пользователь.
******

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



Так это без времён, только статусы.
С временами было бы
Код
08 18 28 28 28 победитель
08 38             08 20 проигравший.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
DI HALT
сообщение Nov 19 2010, 20:41
Сообщение #14


Участник
*

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



Так точно. Первый оттарабанил. Только он дал стоп, тут же второй влепил старт.

Вот он этот момент передачи управления от одного к другому


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


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Ну так может , рестарт спасёт? laughing.gif


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

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

 


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


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