| Микроконтролери и електроника 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+HID спецификацията (и евентуално CDC за после) няма да мине. Май това е направил оня пич с "The cheapest dual trace scope in the galaxy". |
||||||||||
| Автор: | npelov [ Нед Окт 31, 2010 11:21 am ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
10-тина, ама ако ги имам последователни, а аз ги нямам. повече ще са.
За хост още не си мечтая. Още повече 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 ] | |||||||||
| Заглавие: | ||||||||||
Мерси!
Първото нещо което направих е да направя копие и да махна всичко що не е за 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 ] | |||||||||
| Заглавие: | ||||||||||
2 файла си е постижение. Откъде може да го дръпна това. Колкото до подкарването - не беше чак толкова трудно. пуснах половината примерчета, но още се боря с най-"простото" да го разуча. Горе-долу схванах повечето, но всичко е направено така като че ли USB е главното, което контролера ще прави, а останалото - второстепенни функции. То самия протокол не е чак толкова труден за разбиране, но има доста конкретизиране - всяко устройство си е намерило място из класовете. И въпреки това пак HID спецификацията е нищожна в сравнение с 650-те страници USB 2.0 |
||||||||||
| Автор: | Цецо [ Пон Ное 01, 2010 11:02 am ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
В 90% от реализациите които съм срещал при малките контролери, USB то при малко по сериозен трафик така яде от ресурсите на контролера, че освен да мигаш диоди.... |
|||||||||||||||||||
| Автор: | npelov [ Пон Ное 01, 2010 11:02 am ] |
| Заглавие: | |
CCS беше някакво C. Предполагам че няма да е трудно да го конвертирам за Майкрочипското. Те главно константите се различават. |
|
| Автор: | npelov [ Пон Ное 01, 2010 11:05 am ] | |||||||||||||||||||||||||||
| Заглавие: | ||||||||||||||||||||||||||||
На мен ми хареса 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/ |
|