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

 
 
6 страниц V  « < 4 5 6  
Reply to this topicStart new topic
> AT90USB1286, виртуальный COM-порт
aesok
сообщение Jan 20 2009, 15:01
Сообщение #76


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(Xenia @ Jan 20 2009, 16:53) *
Возможно ли такое в принципе, а если да, то каким образом делается? Ведь наш МК является ведомым, зависящим от посылок со стороны хоста. Как ему сигнализировать о том, что у него будет временный напряг с приемом?


Я не знаю есть ли какой специальный механизм для этотго в CDC. Для Bulk ендпоинт это реализуеться посылкой NAK в ответ на OUT пакет.

Цитата
8.5.2 Bulk Transactions
....
When the host is ready to transmit bulk data, it first issues an OUT token packet followed by a data packet
(or PING special token packet, see Section 8.5.1). If the data is received without error by the function, it
will return one of three (or four including NYET, for a device operating at high-speed) handshakes:
• ACK indicates that the data packet was received without errors and informs the host that it may send
the next packet in the sequence.
• NAK indicates that the data was received without error but that the host should resend the data because
the function was in a temporary condition preventing it from accepting the data (e.g., buffer full).

• If the endpoint was halted, STALL is returned to indicate that the host should not retry the transmission
because there is an error condition on the function.


Анатолий.
Go to the top of the page
 
+Quote Post
tAmega
сообщение Jan 20 2009, 15:02
Сообщение #77


Местный
***

Группа: Свой
Сообщений: 474
Регистрация: 20-01-09
Из: НН
Пользователь №: 43 639



Механизм есть. Он описан в спецификации CDC, там описаны запросы. Общая идея, есть запросы SET LINE CODING. Хост запрашивает скорость, число бит и т.д. в т.ч. тип управления потоком аппаратный или программный. Когда хост узнает, что управление потоком будет аппаратное, он запрашивает как именно будет управляться поток. Форматы запросов и ответов есть в спецификации на CDC.

Сообщение отредактировал tAmega - Jan 20 2009, 15:03


--------------------
пользователь отключен
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jan 20 2009, 16:16
Сообщение #78


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(tAmega @ Jan 20 2009, 18:02) *
Механизм есть. Он описан в спецификации CDC, там описаны запросы. Общая идея, есть запросы SET LINE CODING. Хост запрашивает скорость, число бит и т.д. в т.ч. тип управления потоком аппаратный или программный. Когда хост узнает, что управление потоком будет аппаратное, он запрашивает как именно будет управляться поток. Форматы запросов и ответов есть в спецификации на CDC.


SET_LINE_CODING передает от хоста в МК dwDTERate, bCharFormat, bParityType, bDataBits; т.е. скорость в бодах, формат, четность и число стоп-бит. Все это передается затем, чтобы МК повторил эти установки на своем RS-232-порту, т.к. для обмена по USB эти данные не нужны.
GET_LINE_CODING запрашивает эти же данные (обычно те же самые, что были раньше пререданы хостом командой SET_LINE_CODING).
Есть еще SET_CONTROL_LINE_STATE, посредством которого хост может выразить желание изменить уровни DSR и RTS. И это всё!
Никакого аппаратного хендшейкинга здесь нет!

Практика показывает, что все эти три команды подаются только при открытии USB-порта (виртуальный COM), а в процессе передачи никогда не подаются. Поэтому нет и никакой возможности подать сигнал о том, что линии изменили полярность в процессе передачи. Т.е. раз хост не спрашивает, то и ответить ему не представляется возможным.

====================================================================

Цитата(aesok @ Jan 20 2009, 18:01) *
Я не знаю есть ли какой специальный механизм для этотго в CDC. Для Bulk ендпоинт это реализуеться посылкой NAK в ответ на OUT пакет.


ACK'ом или NAK'ом можно отвечать на запросы от НУЛЕВОГО эндпоинта, на специфические ЗАПРОСЫ. Однако поток данных идет по эндпоинту RX_EP и не требует никаких ответных реплик. Там только бит FIFOCON устанавливают, чтобы показать, что буффер опустошен. Никаких посылок оттуда я посылать не могу, т.к. они не предусмотрены протоколом.
А в процессе передачи данных никаких запросов по нулевому эндпоинту нет вообще, а потому и отвечать не на что.

Сообщение отредактировал Xenia - Jan 20 2009, 16:26
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 20 2009, 16:32
Сообщение #79


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Никаких посылок оттуда я посылать не могу, т.к. они не предусмотрены протоколом.


И не надо. Просто не выгребаете данные из RX_EP и хост будет курить бамбук сколько надо. Это поддерживает сам USB-контроллер, посылая в ответ на пакеты хоста NAK, если нет места в приемном буфере. Хост, соответственно, будет перепосылать пакет, пока девайс не ответит ACK.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 20 2009, 16:37
Сообщение #80


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Xenia @ Jan 20 2009, 19:16) *
Там только бит FIFOCON устанавливают, чтобы показать, что буффер опустошен.

Механизм NAK'ов в USB работает на любых ендпоинтах. Не ставьте FIFOCON, железка будет посылать хосту NAK'и и поток затормозится.

Упс, опередили smile.gif
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jan 20 2009, 16:46
Сообщение #81


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Rst7 @ Jan 20 2009, 19:32) *
И не надо. Просто не выгребаете данные из RX_EP и хост будет курить бамбук сколько надо.


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

А то я приметила что флэшка (виртуальный диск) тоже начинает внезапно томозить, когда в нее закачиваешь длинный файл. Я еще сильно удивлялась, как ей удается сопротивляться внешнему накачиванию данными. Ведь у нее скорость записи медленнее, чем скорость передачи по USB2.0.
Go to the top of the page
 
+Quote Post
aesok
сообщение Jan 20 2009, 17:05
Сообщение #82


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(Xenia @ Jan 20 2009, 19:16) *
ACK'ом или NAK'ом можно отвечать на запросы от НУЛЕВОГО эндпоинта, на специфические ЗАПРОСЫ. Однако поток данных идет по эндпоинту RX_EP и не требует никаких ответных реплик. Там только бит FIFOCON устанавливают, чтобы показать, что буффер опустошен. Никаких посылок оттуда я посылать не могу, т.к. они не предусмотрены протоколом.
А в процессе передачи данных никаких запросов по нулевому эндпоинту нет вообще, а потому и отвечать не на что.


Странно!!!!

На странице 221 "Universal Serial Bus Specification" параграфе "8.5.2 Bulk Transactions" написано и нарисованно что можно отвечать NAK для Bulk endpoint (также как и на Control/Interrupt endpoint). Это на Isochronous нет ACK/NAK/STALL. А откуда у вас информация что NAK работает только на controll endpoint?

Я так понимаю Вы работаете с Bulk ендпоинт. Тогда требуеться минимум действий. Расмотрим Bulk OUT endpoint, параграф "22.14 OUT endpoint management" даташита AT90USB64/128.

Когда приходит OUT пакет выставляться 2 бита:
RXOUTI - флаг прерывания по причине прихода пакета, который сразу можно сбросить и
FIFOCON - FIFO Control Bit - говорящий о том что буфер занят
пришедшим пакетом. Пока Вы не сбросите этот бит вы можете к какой угодно
скорость читать данные из этого буфура, при этом USB контроллер будет
отвечать NAK-ом на все попытки хоста передать следующий пакет. Как только Вы
полностью прочитаете буфер, Вы сбрасываете бит FIFOCON в 0. И теперь при
очередной попытке хоста передать пакет, контроллер запишет его в
освободившийся буфер, ответит хосту ACK, и выставит биты RXOUTI и FIFOCON.
И.т.д....

Другими словами сбрасывайте бит FIFOCON после того как полностью обработали пришедщий пакет, все остальное хост с USB контролером в mege все сделают сами.


Анатолий.

Сообщение отредактировал aesok - Jan 20 2009, 17:48
Go to the top of the page
 
+Quote Post
Dx!
сообщение Apr 29 2009, 15:21
Сообщение #83


Частый гость
**

Группа: Участник
Сообщений: 108
Регистрация: 6-02-09
Из: Новочеркасск
Пользователь №: 44 469



Цитата(Xenia @ Nov 21 2008, 15:23) *
Народ! Кто-нибудь из вас пробовал писать прошивку для USB САМОСТОЯТЕЛЬНО? А то от демонстрационного проекта буквально уши вянут.

Тоже думал уже сильно "переосмыслить" примеры, но, как всегда, велосипед уже изобретен.
http://www.fourwalledcubicle.com/LUFA.php
Куда как болие прямой USB стек от фанатов. Под WinAVR. C кучей DEMO. Понравился.
Go to the top of the page
 
+Quote Post
Visor
сообщение Nov 2 2009, 12:39
Сообщение #84


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(Xenia @ Apr 4 2008, 18:13) *
На WinXP работает, а на Vista не загружается драйвер. Что делать?

Ну вот, новая "радость" на наши головы - Windows 7. smile3046.gif
Не работает под ней.
Go to the top of the page
 
+Quote Post
manul78
сообщение Nov 7 2009, 12:42
Сообщение #85


Местный
***

Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719



Цитата(Visor @ Nov 2 2009, 15:39) *
Ну вот, новая "радость" на наши головы - Windows 7. smile3046.gif
Не работает под ней.


Да уж... только с XP разобрался, опять новые веяния... Благо "семерка" еще не доминирует... пока...

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

Давайте пробовать вместе. Я использую AT90USB162 и основательно мной "раскуроченные" на кирпичики Атмеловские
демки... Использую в основном HID, думаю "семерка" должна поддерживать без проблем со стороны МК, а вот со стороны
PC возможно уже другие драйвера для HID... Не знаю... Надо пробовать. smile.gif


--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
Go to the top of the page
 
+Quote Post
Visor
сообщение Nov 8 2009, 03:13
Сообщение #86


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(manul78 @ Nov 7 2009, 19:42) *
Использую в основном HID ...

С HID не знаю, не пробывал, здесь мы мучаем CDC.
Речь конкретно о at90usbxxx_cdc.inf .
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 14:29
Рейтинг@Mail.ru


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