Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

USB с framework-a на Microchip
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=8249
Страница 1 от 1

Автор:  npelov [ Нед Окт 31, 2010 2:22 am ]
Заглавие:  USB с framework-a на Microchip

От известно време се боря с USB framework-a на Microchop и нищо не мога да вдяна. Може би защото съм свикнал да си структурирам програмите по друг начин... main.c е 45к. лудост. При такива малки програмки, които се компилират за секунда, две защо се боят да разделят всичко на достатъчно файлове. И документацията куца ... или пък аз съм неграмотен да си я намеря/прочета.

Би било прекалено лесно но дали сте попадали на стъпка-по-стъпка туториал в нета.

Малко да конкретизирам. Интересува ме HID - Generic вход/изход, endpoints, UPS примера. Мисля да започна с вход/изход. Избрах си FSUSB демо платката с PIC18F4550. Подкарах примерите само с един светодиод и тук/там някой пул ъп за да е по-просто. Обаче кода ми е пълна мъгла. Видях че трябва да има Include път:
Microchip\Include
USB Device - HID - Custom Demos\Generic HID - Firmware

Не ми става ясно къде трябва да ми е:
1. инициализацията
2. обработка на останалите (не USB) прекъсвания
3. останалия код не-свързан с USB в главния цикъл
4. USB вход/изход

Малко ми остава да продължа с четенето на USB спецификацията и направа на цялата USB комуникация от самото начало

Автор:  Цецо [ Нед Окт 31, 2010 10:51 am ]
Заглавие: 

Без да знам за какво точно иде реч - да ти кажа - на всички фирми, "безплатния" примерен код е такъв. Имам чувството, че го пишат някакви студенти в летния си стаж :)

Та съвета ми е - пускаш го колкото да се ориентираш кое как е и после го пренаписваш. Ако искаш да ти е мирна главата. Осбенно нещо такова като USB стек дето хич не е просто, колкото и да се пробват пройзводителите да те убедят, че е туряш чипа и ръгаш техния код и пускаш в продажба.

Автор:  head_up [ Нед Окт 31, 2010 11:04 am ]
Заглавие: 

USB-то по принцип е лудост, та ако искаш да работиш с него - отдели 10-ина дена здраво четене на спецификацията на 2.0, няма начин да не минеш през нея и след като относително добре я познаваш - намери класът, който ти трябва. изучи и него подробно, дет се вика на сън да те бутнат да знаеш какво прави. после си намери примерен код за стек и поддръжка на класа, който искаш да ползваш. тогава почни да четеш кода, вече разбирайки какво прави в отделните си части и да си дооправяш непознаването в него като използваш документацията на USB 2.0. Ще започнеш да виждаш тесните места в тоя код. И едва след като започнеш да виждаш тези издънки се опитвай да пишеш свой стек. Ако ще е за host хубаво изчети и спецификацията на host-a, то си зависи как е реализирана - и там има много, ама мнооого псувни. Изобщо да вземеш и да тръгне - Цецо ти го каза, НЯМА да стане. Особенно ако искаш да е за продукт.

Автор:  npelov [ Нед Окт 31, 2010 11:09 am ]
Заглавие: 

Цецо написа:
Осбенно нещо такова като USB стек дето хич не е просто, колкото и да се пробват пройзводителите да те убедят, че е туряш чипа и ръгаш техния код и пускаш в продажба.

Убедих се в това. Доста четох в USB спецификацията. Обаче да напиша отначало целия USB стек е крайно решение. Да пренапиша потребителската част и да отделя USB от всичко останало - е това си е предизвикателство. Доста по-малко работа от цялостно пренаписване и пак ще получа в крайна сметка същото. Само че още ме мъчат съмнения. Май без изяждане на USB+HID спецификацията (и евентуално CDC за после) няма да мине. Май това е направил оня пич с "The cheapest dual trace scope in the galaxy".

Автор:  npelov [ Нед Окт 31, 2010 11:21 am ]
Заглавие: 

head_up написа:
USB-то по принцип е лудост, та ако искаш да работиш с него - отдели 10-ина дена здраво четене на спецификацията на 2.0

10-тина, ама ако ги имам последователни, а аз ги нямам. повече ще са.

head_up написа:
Ако ще е за host хубаво изчети и спецификацията на host-a

За хост още не си мечтая. Още повече PIC18 нямат хардуерна поддръжка на хост/OTG. По това което съм чел до момента, спецификацията/изискванията за хоста са поне 3-4 пъти повече от тези за device.

Това, за което питах е дали някой е виждал някакво приятно, олекотено четиво за USB като цяло и microchip-ския фреймуърк. USB спецификацията, като всяка сериозна спецификация цели предимно пълнота и точност, отколкото "да ти свърши работа". Може би на всеки екип който разработва USB софтуер/хардуер се полага по един дето чете като луд спецификацията и я превежда на останалите.

Автор:  mountaineer [ Нед Окт 31, 2010 2:34 pm ]
Заглавие: 

Ето едно леко четиво:

http://www.beyondlogic.org/usbnutshell/usb-in-a-nutshell.pdf

30 страници е в PDF формат, иначе в сайта го имат разхвърляно и на html.

По нета май се намират пренаписани кодове, ама са бая ограничени. По едно време се занимавах с такива, обаче накрая излезе по-лесно да поизчистя микрочепските спагети.

Автор:  npelov [ Нед Окт 31, 2010 3:19 pm ]
Заглавие: 

Мерси!

mountaineer написа:
По едно време се занимавах с такива, обаче накрая излезе по-лесно да поизчистя микрочепските спагети.


Първото нещо което направих е да направя копие и да махна всичко що не е за PIC18Fxxxx. main.c стана от 56к на 41к. Идиотско е тия всичките работи да ги напъхат в един файл, вместо да ги наредят в поддиректории - по една за всеки контролер.

Автор:  kiiid [ Пон Ное 01, 2010 12:39 am ]
Заглавие: 

Да... USB си е направо самоубийство. Те Майкрочип добре са се постарали ама то самия протокол като е куц...
В момента се сещам за два три лесни начина за подкарване на USB:
1. Слагаш USB-UART конвертор чипче. Такива има доста и са дребни пари. Даже и Майкрочип пуснаха такова.
2. Пробвай PIC18 Simulator от www.oshonsoft.com. Там има BASIC дето пича доста се е постарал да го развие. Поддържа и USB на доста високо ниво от гледна точка на програмиране.
3. Пробвай USB с нещо друго. Аз например често наблягам за чиповете на Cypress за тая цел понеже в PSoC Designer целия USB стек е вкаран (скрит от тебе, не както Майкрочипския стек) и отгоре остават само няколко реда, предимно инициализации за да се подкара
:)

Автор:  valioman [ Пон Ное 01, 2010 10:41 am ]
Заглавие: 

Аз пък си ползвам стека на CCS .. точно 2 файла единия ти е дескриптора на класа който се ползва а другия ти е самото USB и функциите му .... течно след 15 мин успях да подкарам HID девайс ... за дебъг ползвах Proteusa преди да го ръгна на реално устройство.

Автор:  npelov [ Пон Ное 01, 2010 10:56 am ]
Заглавие: 

valioman написа:
Аз пък си ползвам стека на CCS .. точно 2 файла единия ти е дескриптора на класа който се ползва а другия ти е самото USB и функциите му .... течно след 15 мин успях да подкарам HID девайс ... за дебъг ползвах Proteusa преди да го ръгна на реално устройство.

2 файла си е постижение. Откъде може да го дръпна това. Колкото до подкарването - не беше чак толкова трудно. пуснах половината примерчета, но още се боря с най-"простото" да го разуча. Горе-долу схванах повечето, но всичко е направено така като че ли USB е главното, което контролера ще прави, а останалото - второстепенни функции. То самия протокол не е чак толкова труден за разбиране, но има доста конкретизиране - всяко устройство си е намерило място из класовете. И въпреки това пак HID спецификацията е нищожна в сравнение с 650-те страници USB 2.0

Автор:  Цецо [ Пон Ное 01, 2010 11:02 am ]
Заглавие: 

npelov написа:
valioman написа:
Горе-долу схванах повечето, но всичко е направено така като че ли USB е главното, което контролера ще прави, а останалото - второстепенни функции.


:) Добро утро :)

В 90% от реализациите които съм срещал при малките контролери, USB то при малко по сериозен трафик така яде от ресурсите на контролера, че освен да мигаш диоди....

Автор:  npelov [ Пон Ное 01, 2010 11:02 am ]
Заглавие: 

CCS беше някакво C. Предполагам че няма да е трудно да го конвертирам за Майкрочипското. Те главно константите се различават.

Автор:  npelov [ Пон Ное 01, 2010 11:05 am ]
Заглавие: 

Цецо написа:
npelov написа:
valioman написа:
Горе-долу схванах повечето, но всичко е направено така като че ли USB е главното, което контролера ще прави, а останалото - второстепенни функции.


:) Добро утро :)


На мен ми хареса HID bootloader-a, който заема 4к. памет. Оня пич с осцилоскопа е направил целия осцилоскоп на малко повече от 1к. Даже bootloader-a ако го компилираш с lite версията на C18 не се хваща (някои оптимизации не са включени).

Автор:  Цецо [ Пон Ное 01, 2010 11:16 am ]
Заглавие: 

А не говорех за памет. То съвременните контролери това поне го имат достатъчно (горе долу). Имах предвид процесорно време, особенно в хай-приорити областта.

Автор:  npelov [ Пон Ное 01, 2010 11:27 am ]
Заглавие: 

Цецо написа:
А не говорех за памет. То съвременните контролери това поне го имат достатъчно (горе долу). Имах предвид процесорно време, особенно в хай-приорити областта.


Доколкото разгледах спецификацията, ако не ти трябва bandwidth не е чак толкова трудоемко. Примерно ако имаш температура и трябва да я ъпдейтваш на PC-то на всяка секунда - занимаваш процесора с каквото ти се иска и бълваш NACK, че си зает на всички заявки. Като си свършиш работата отговаряш. За останалото се грижи хардуера на микроконтролера. Е, не съм изчел подробно спецификацията на PIC18F4550 (оставих я за накрая щото без солидни знания за USB е безсмислено), но така ми се видя на пръв поглед. Може и да греша.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/