Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
Orsomum
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 619
1

Статья DiHalta о i2c мультимастере. Вопрос.

30.03.2016, 17:06. Просмотров 2876. Ответов 4
Метки нет (Все метки)

почитал статью нашего уважаемого Ди http://iosyitistromyss.ru/avr-uchebnyj- ... c-y2s.html

у него описано абсолютная большая часть случаев.
чтение/запись/арбитраж.
всё это хорошо но опущен один момент: когда контроллеры шлют и читают друг другу свои переменные в рамках одной сессии.
допустим.
контроллеру 1 нужны от контроллера 2 переменные x,z. при этом y не нужен. отлично.
контроллер 1 запускает шину и2ц запрашивает контроллер 2 как слейва передаёт ему команду(или страницу памяти с которой он начинает считывать) что ему нужны только x и z.
для y соответственно нужна другая команда.
с точки зрения контроллера 1 алгоритм как для обычного мастера при обращении к памяти или часам реального времени.

а вот как быть с алгоритмом контроллера 2 в слейв режиме? в статье байт принимается... и всё. сессия заканчивается. дальше идёт обработка этого байта. и начинается новая сессия уже как мастером.
я так думаю что для контроллера 2, в запросе адреса с которого начинаем считывать, от контроллера 1 - суть есть команда- какие переменные собственно передавать. по сути надо из контроллера 2 сделать аналог памяти eeprom или тех же самых часов реального времени.

приём произвольного количества байт Ди расписал вроде как подробно.

я перечитал статью вдоль и поперёк, но этот момент остался нераскрытым.

для чего мне это нужно: есть плата с клавиатурой и экраном(контроллер мега32). запущена оболочка меню. есть вторая плата(мега8). оболочке меню надо показать несколько переменных из меги8 в разных строках и местах(разные группы).
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2016, 17:06
Ответы с готовыми решениями:

вопрос про I2C
Всем привет кто знает помогите пожалуйста с вопросом по работе с микросхемой часов DS1307...

Вопрос по I2C на STM32F1xx.
В AN2824 есть такие функции чтения/записи. Status I2C_Master_BufferRead(I2C_TypeDef* I2Cx,...

I2C в режиме мастера на STM32F103. Вопрос.
Кто пользовал I2C в режиме мастера на STM32F103? Подскажите пожалуйста. Я не совсем понял, адрес...

Начал делать интерфейсный модуль по схеме DIHalta
Начал сегодня делать интерфейсный модуль вот этот:...

Статья
Здравствуйте люди добрые, помогите пожалуйста, найти следующий статьи очень нужно. ...

4
DY HOTT
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 4,000
30.03.2016, 18:55 2
Протокол определяет только КАК передаются байты из устройства в устройство. ну и адресацию самих устройств. А уж как они между собой договариваются между тем что и как слать это уже дело не протокола, а того, что над ним. Как напишешь так и будет. Можешь как епром организовать ,можешь еще как то. Можешь хоть флаги передавать, там где для епром передается адрес страницы, а тут будут какие именно переменные отдавать.
0
Orsomum
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 619
30.03.2016, 19:11 3
Цитата Сообщение от DY HOTT
Протокол определяет только КАК передаются байты из устройства в устройство. ну и адресацию самих устройств. А уж как они между собой договариваются между тем что и как слать это уже дело не протокола, а того, что над ним. Как напишешь так и будет. Можешь как епром организовать ,можешь еще как то. Можешь хоть флаги передавать, там где для епром передается адрес страницы, а тут будут какие именно переменные отдавать.
ненене - то что это надстройка сверху - это понятно.
дело в том ЧТО писать в процедуре слейва при обращении к нему мастера было ПРАВИЛЬНО?
Код
void SlaveControl(void)
{
y2s_Do &= y2s_Frii;         // Освобождаем шину
UDR = y2s_InBuff[0];         // Выгружаем принятый байт
}
освобидили шину и всё. это статья.
а в режиме епром шина в какой момент освобождается? то что буфер наполняется байтами понятно, но в каком месте процедуры подставлять? Как правильно расписать точки выхода при отсуствии байт если мастер домогается больше чем есть буфер?

то есть как правльно расписать конкретно одну процедуру void SlaveControl(void). а уж свич-кейсы допишу.
0
DY HOTT
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 4,000
31.03.2016, 23:32 4
В режиме епрома память отдает шину когда ей говорят NACK насколько помню. Т.е. она шлет байты, мастер ей ACK ACK ACK. А когда прекратил потреблять шлет ее NACK и она освобождает шину.

А вот чем слейв может послать мастера. А вот это не помню, почитай описание самого протокола. Знаю что слейв может прижать линию и не давать ее дергать, если не успевает прожевать. Ну или, как вариант, задать некий кадр данных и выдавать его гарантированно, просто забивать нулями если пуст.
0
Orsomum
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 619
03.04.2016, 11:33 5
Цитата Сообщение от DY HOTT
В режиме епрома память отдает шину когда ей говорят NACK насколько помню. Т.е. она шлет байты, мастер ей ACK ACK ACK. А когда прекратил потреблять шлет ее NACK и она освобождает шину.

А вот чем слейв может послать мастера. А вот это не помню, почитай описание самого протокола. Знаю что слейв может прижать линию и не давать ее дергать, если не успевает прожевать. Ну или, как вариант, задать некий кадр данных и выдавать его гарантированно, просто забивать нулями если пуст.
почитал про и2ц. это так. порыл по программным слейвам и2ц. - вроде всё просто и понятно.
у меня не укладывается алгоритм в голове с применением к вашей библиотеке.

тут понятно только то что требуется добавить процедуру и там делать подготовку файлов
0
03.04.2016, 11:33
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2016, 11:33

Статья на конференцию
Здравствуйте! Не могу найти актуальную тему для статьи на "научную" конференцию, подкиньте идеи?

Статья о комментариях
Здравствуйте . Читал статью о том как сделать комментарии для сайта и не понял что должно быть на...

Статья по информатике
Здравствуйте! Не могу найти актуальную тему для статьи на "научную" конференцию, подкиньте идеи?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.