Отговори на тема  [ 52 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща
PIC32 (и не само) - USB комуникация? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение Re: PIC32 (и не само) - USB комуникация?
Един колега повдигна днес интересен въпрос за изчисляване на натоварването на CAN мрежата. В предишните коментари смятах 131 бита ( EID с 64 информационни бита ). Но има една уловка, която бях забравил:
Цитат:
“Stuff Error
CAN protocol uses a Non-Return–to-Zero (NRZ)
transmission method. This means that the bit level is
placed on the bus for the entire bit time. CAN is also
asynchronous, and bit stuffing is used to allow
receiving nodes to synchronize by recovering clock
information from the data stream. Receiving nodes
synchronize on recessive to dominant transitions. If
there are more than five bits of the same polarity in a
row, CAN will automatically stuff an opposite polarity
bit in the data stream.
The receiving node(s) will use
it for synchronization, but will ignore the stuff bit for
data purposes
. If, between the Start of Frame and
the CRC Delimiter, six consecutive bits with the
same polarity are detected, then the bit stuffing rule
has been violated. A Stuff Error then occurs, an Error
Frame is sent, and the message is repeated.”


Това означава, че в зависимост от стойността на битовете между Start of Frame и CRC полето CAN предавателя ще вмъкне по един допълнителен бит, ако намери 5 последователни бита с една и съща полярност ( този бит се премахва от съобщението в приемника ). Някои специфицират максимално дълго съобщение от базовите 131 бита + допълнителни 19 , или допълнителни 27 бита. Не знам кое от двете е вярно ( 150 бита или 158 бита ), но тази подробност може да намали с около 15% капацитета на мрежата, ако се случват често неподходящите комбинации от 5 еднакви последователни бита.

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Съб Фев 25, 2012 12:01 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: PIC32 (и не само) - USB комуникация?
Сглобих го, па и взе че тръгна USB-то. :supz:

В bulk transfer mode. Не било чак толкоз трудно. Ама "USB Complete" книжката МНОГО помогна да разбера кое-що, за което горещи благодарности! :prayer: Хванах libusb примера и го разчистих от плявата, като оставих само частта за PIC32.

Сега остава да свърша само моята си част, и всичко ще е на шест!


Чет Мар 01, 2012 1:25 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: PIC32 (и не само) - USB комуникация?
Току що тествах за реална скорост на трансфер. При 99% еднопосочен трафик (от компютъра към PIC32-ката), в Bulk Transfer. Изпраща и PIC32-ката успява да поеме блок от 1 022 840 байта (или почти мегабайт) в секунда.

Е, естествено PIC32-ката нищо не прави с тая информация по време на теста, освен да я прекара през буферите си. Единствено се опитва да изпраща статус какво е получила като брой байтове и в кой буфер. Ping-pong буферирането с по 2 буфера за вход много сериозно вдига трафика, защото докато PIC32-ката се разправя с полученото другия буфер приема следващото. Върху същия USB хъб има включени и флашка и PICKIT3, по време на теста - неактивни.

Та, толкоз относно въпросителните колко може да даде USB Full speed режима. По дефиниция 10% от времето е резервирано за системни месиджи, и остават 10.8 мегабита, от които аз "напълвам" 10.23.


Вто Мар 06, 2012 9:28 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение Re: PIC32 (и не само) - USB комуникация?
sparkybg написа:
Ping-pong буферирането..

Тоя термин винаги ме е дразнил, какво общо има между ping-pong и двоен буфер не знам, обаче западняшката литература е пълна с ping-pong простотии.

Иначе браво за трансфера, това на един endpoint ли ?

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Вто Мар 06, 2012 9:39 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: PIC32 (и не само) - USB комуникация?
Един ендпоинт, да.

То и мен ме дразни ping-pong-а, ама така са го решили. Най-малкото докато си изчистя съмненията дали не са го нарекли така с някаква задна мисъл, която не ми стига акъла да си представя. :) Пък накрая се оказва че "не били компютри, а компоти". :)


Вто Мар 06, 2012 9:45 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: PIC32 (и не само) - USB комуникация?
Е па то не личи ли ...
Иначе каква е скоростта по тоя CAN че HID не ти е ОК .. а иначе микрото не знам как са, ама на силабс USB работи повече от добре, и не забелязвам да е много бавно.


Вто Мар 06, 2012 11:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: PIC32 (и не само) - USB комуникация?
Бе то личи, ама що не "double buffering" ами ping-pong? :) С тоталната обърквация с термините и постановката на самото USB, просто ми дойде малко в повече. До снощи борих защо тъпото libusbdotnet не ми изкава DataReceived event, а то искало непълен или нулев USB пакет като маркер за край на трансфер. Пак USB Complete книжката помогна. После пък се зачудих "Трансфер" хардуерна или софтуерна хава ли е и прочие истории. И така докато стигна до простичкия извод че всичкото "USB Stack" на Microchip е едно голямо писане за едно голямо нищо. Сега вече ми е просто, ама продължавам да твърдя че всичко около USB е правено и документирано от болни мозъци. Платените VID например са тотална тъпанарщина.

Скоростта на CAN-а е мегабит максимум, доволна част от което се губи. В 90% от случаите и HID би вършил работа. Просто исках максимума. Правя си прости библиотеки за dotnet и PIC32 в момента, за да върви като stream. Тройно буфериране, един вид. RX и TX буфери, от които като ми трябва чета. От страна на PC-то - същото. Тогава библиотеката ще върви и с UART/COM порт, и с ethernet, и с квото се сетиш. Един вид универсален прост комуникационен интерфейс, който ще ползвам и по-нататък, евентуално. Ако не мина на PIC на RX62 де, ама той и за там ще може да се направи. Много съм им се наточил на тия гадини.


Сря Мар 07, 2012 12:06 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение Re: PIC32 (и не само) - USB комуникация?
sparkybg написа:
Бе то личи, ама що не "double buffering" ами ping-pong ?

Дедо Боре разправяше, че като бил в Китай и питал защо нещо си не е направено така, ами иначе, обикновено отговора бил тук е така, та затова и ги кръстил Такай . По дедукция същата работа и с ping-pong, ако ги питаш защо точно ping-pong вдигат рамене и ти казват тук е така . Иначе личи, като загубиш сума време да се кьориш в сорс кодове се разбира, че значи double buffer..... ма тук е така :)

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Сря Мар 07, 2012 12:59 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: PIC32 (и не само) - USB комуникация?
Ами не ми се види множко, при нас ако се нe лъжа на силабса 5 МB го докарваме с HID драйвер, но не знам тая пиковска история USB1 или 2 поддържа.


Сря Мар 07, 2012 9:38 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: PIC32 (и не само) - USB комуникация?
USB Full speed поддържа. 12 мегабита демек. При тая скорост HID-а е ограничен до 64к в секунда (по един 64 байтов пакет на всяка милисекунда).


Сря Мар 07, 2012 9:58 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение Re: PIC32 (и не само) - USB комуникация?
ToHu написа:
Ами не ми се види множко, при нас ако се нe лъжа на силабса 5 МB го докарваме с HID драйвер, но не знам тая пиковска история USB1 или 2 поддържа.

Става, с 10 endpoint-a :)

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Сря Мар 07, 2012 10:36 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: PIC32 (и не само) - USB комуникация?
Като как HID с 10 ендпоинта? В "оная" книжка пише че HID устройствата са ограничени до един изходящ и един входящ endpoint?

Или 10 виртуални HID устройства? И пак на full speed става 640к в секунда, а не 5 мегабайта?

Ако е High speed вече е друго де. 1024 байта за трансфер на всеки 125us, ако се не лъжа?


Сря Мар 07, 2012 11:09 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: PIC32 (и не само) - USB комуникация?
Абе възможно е да съм малко в грешка, защото едно време не бяхме с HID драйвери, но тоя тест по спомен го правихме сравнително скоро та мисля че HID си беше ... ако дойде хищника ще каже.

Едит.
Признавам оглупявам явно, тоя проц който ползваме няма как да поддържа 5 MB сега го погледнах, , той е Full Speed, явно са били 5 Mb.


Сря Мар 07, 2012 11:15 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: PIC32 (и не само) - USB комуникация?
Едно допълнително въпросче ми се явява. Накарах datareceived ивента да ми се задейства при край на транзакция - като пратя непълен или нулев пакет към PCто. Обаче не мога да накарам примерно като сендна към устройството 100 килобайта, пък устройството приеме например 4 килобайта от тях, софтуера на PC-то да отчита това. В момента като изпратя много данни към устройството и то не ги приеме всичките, libusb-то ми връща че устройството не е приело нищо.

Какво трябва да направя от гледна точка на устройтвото, така щото libusb-то да се усети че все пак част от данните са приети от устройството? Някакви системни месиджи ли трябва да изпращам от устройството към PC-то? Опитах задам на PIC32-ката да приеме непълен пакет, например от 10 байта, обаче не става. Все ми връща че нищо не е изпратено след изтичане на времето за таймаут.


Нед Мар 11, 2012 3:31 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение Re: PIC32 (и не само) - USB комуникация?
Бе дай кода, дето мъчиш... кой ще ти гадае


Пон Мар 12, 2012 4:59 am
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 52 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 0 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни