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

 
 
> I2C в AVR
777777
сообщение May 27 2010, 05:54
Сообщение #1


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

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



Имеется система состоящая из Master receiver и Slave transmitter. Есл исходить из стандарта I2C, т количество передаваемых байт определяется мастером: при получении последнего байта он ставит NOT ACK, а передатчик получив его останавливает передачу. Мне же нужно чтобы количество передаваемых байт определялось передатчиком. С одной стороны, у него нет средств чтобы по своей инициативе остановить передачу - такты выдаются мастером. Но в описании Status Codes for Slave Transmitter Mode написано, что ведомый с передачей последнего байта может не установить TWEA и это будет означать, что передается последний байт. И есть status code 0xC8 означающий, что "Last data byte in TWDR has been transmitted (TWEA = “0”); ACK has been received". Так значит он может каким-то образом остановить передачу по своей инициативе? И как это происходит аппаратно, т.е. что выдается на шину?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение May 27 2010, 17:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(777777 @ May 27 2010, 11:54) *
Так значит он может каким-то образом остановить передачу по своей инициативе? И как это происходит аппаратно, т.е. что выдается на шину?
Остановить? Точно также как и master - выдачей NAK. Как это аппаратно в МК реализуется я не знаю - не знаток AVR. laughing.gif
Go to the top of the page
 
+Quote Post
777777
сообщение May 28 2010, 05:10
Сообщение #3


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

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



Цитата(rezident @ May 27 2010, 21:16) *
Остановить? Точно также как и master - выдачей NAK. Как это аппаратно в МК реализуется я не знаю - не знаток AVR. laughing.gif

NAK выдает получатель данных. В данном случае это мастер. А мне надо, чтобы передача прекращалась по инициативе передатчика - при каждой передаче количество данных может быть разным и это количество знает только передатчик. Получается, что есть только один способ - сделать его мастером. Но он не знает когда начинать передачу - об этом знает получатель. И мы пришли к противоречию ©
Go to the top of the page
 
+Quote Post
Kane
сообщение May 28 2010, 06:48
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 10-02-06
Пользователь №: 14 185



Попробуйте ввести "команду", по которой слейвом будет выдаваться количество байт на передачу. Мастер сначала запрашивает сколько может передать слейв. После чего считывает, полученное на предыдущем этапе, нужное количество байт.

Сообщение отредактировал Kane - May 28 2010, 06:49
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 28 2010, 09:02
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Kane @ May 28 2010, 09:48) *
Мастер сначала запрашивает сколько может передать слейв. После чего считывает, полученное на предыдущем этапе, нужное количество байт.
Или слейв первым байтом передает количество байтов в посылке. Некоторая неувязка будет с 0 - мастеру придется все же считать еще один байт, чтобы выдать NAСK.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 777777   I2C в AVR   May 27 2010, 05:54
|- - rezident   Цитата(777777 @ May 28 2010, 11:10) NAK в...   May 28 2010, 14:31
|- - ReAl   Цитата(777777 @ May 28 2010, 08:10) А мне...   May 29 2010, 20:53
|- - 777777   Цитата(ReAl @ May 30 2010, 00:53) Почему ...   May 30 2010, 04:33
|- - 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


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

 


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


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