| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Борба с PIC32 http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=8814 |
Страница 1 от 2 |
| Автор: | head_up [ Пет Апр 22, 2011 12:45 am ] | ||
| Заглавие: | Борба с PIC32 | ||
тъй, боря се с един pic32mx460F512L. Първи впечатления - дървения, много мрънкане отнесе. На второ гледане може и да ми се понрави. Т.е. почва да ми харесва, нещо като мазохизъм. Имам два прости въпроса: -> първият е относно MPLAB 8.66 - не дава да си сложа брейкпоинт. Значи след много мъки и рестартирания на средата + чистене някак си успявам да сложа един - махам го и после пак не мога да сложа. Ползвам дебъгера, който идва с PIC32 Starter Board-a, т.е. един Господ знае какво точно е. Обаче по това, което гуглето казва излиза, че и с други дебъгери се появява тоя проблем - някой намират за решение да правят проекта на ново всеки път. Е, на мен не ми харесва - как се решава това по-елегантно? Не може, за да дебъгва човек нормално да му се налага всеки път да прави това - триене ръчно, нов проект и всичката акробатика! -> втория въпрос е относно делители и таймерна система. Много, ама много ми се иска да имам таймер да цъка на 1us и едновременно с това да ползвам ядрото на макс - 80МХз. Е, да, ама в това животно всичкото делител е на степени на 2-ката. Както и да го суча това не се постига по друг начин освен, ако не смъкна ядрото на 64МХз, делителя за периферията на 2 и на всеки каквото му трябва... А не искам да правя и това - има ли някакво научно решение или да си държа таймерите на 0.1us за инкремент и да се съобразявам с това? Защото за 32 битов таймер ме устройва, но за 16 битовия ми идва късо времето - трябват ми доста повече, поне 3-4 пъти. Но не мога да си позволя 2 32 битови, защото не ми стигат за всички цели. Та с тази дилема ми е трудно да живея по празниците Другото - абе то всичко хубаво, ама микрочип дали имат намерения да фиксват бъговете в тая серия процесори - не може да изкарат 4 ревизии и от 66 (документирани) бъга да фикснат има няма 10! Малко ми звучи несериозно. Иначе с тия екзампъли дето са ги дали - благодат, за часове човек се учи как да ползва този процесор. Старта е в пъти по-бърз от другото, до което съм се докоснал. Освен със средата - не е отместена и на бит от 6-та версия, все си е саката. Но това са си мои разбирания
|
|||
| Автор: | head_up [ Пет Апр 22, 2011 1:01 am ] |
| Заглавие: | |
Сам ще си отговарям, но ще съм доволен и на чуждо мнение Учудващо, но след опит за поставяне на брейкпоинт средата учтиво ми покава среден пръст с горното съобщение. Нищо, брейкпойнта се явява като неактивен и не се спира на него. Пак хубаво. Ако сложа колкото ме интересува брейпойнти (в случая 3) и мълчаливо се съглася с предупреждението, те продължават да си седят неактивни. Обаче - правя един ресет на процесора и ... чудо! Въпреки, че брейкпойнтите продължават да бъдат неактивни - на тях се спира! Ай ся - това нормално ли е?! |
|
| Автор: | relsys [ Пет Апр 22, 2011 2:49 pm ] |
| Заглавие: | |
Абе ще почна да отговарям и аз, нали си взех МХ695.... ама засега само съм го пойнал на една смотана платка от Комет. То 6 TQFP на нея, няма къде да пойнеш кварца дет се вика... Аз обаче няма да го мъча под MPLAB... |
|
| Автор: | head_up [ Пет Апр 22, 2011 3:03 pm ] |
| Заглавие: | |
@relsys, подозрително биеш към едни продукти, от които упорито бягам |
|
| Автор: | relsys [ Пет Апр 22, 2011 7:13 pm ] | |||||||||
| Заглавие: | ||||||||||
Не, не бия на никъде. Просто споделям колко до никъде съм стигнал и аз ... от мързел ... Иначе, всеки сам има право да си избира, колко трудно иска да му бъде. Колкото до "продуктите", проекта върху който ще работя с акумулаторите от другата тема, ще е разработен с тях върху PIC24 и PIC32. Когато стане готов, /надявам се най-късно септември/ ще поканя всеки от вас който има интерес, да му хвърли един поглед от по-близо. |
||||||||||
| Автор: | ¶ [ Пет Апр 22, 2011 8:09 pm ] | ||||||||||||||||||||||||||||||||||||
| Заглавие: | Re: Борба с PIC32 | ||||||||||||||||||||||||||||||||||||
Нещо има гнило в твоя телевизор. Имам и 3-те им PIC32 SK, всички си работят като пушка, на машината ми е MPLAB 8.60. Ако си включил оптимизациите не винаги можеш да зададеш точка на прекъсване, щото там където искаш може и да няма код. Затова си пускаш листинга (View/Dissasembly Listing ) и гледаш има ли код точно там където искаш да има точка на прекъсване.
Периферията може да се клочи 1:1 с ядрото, т.е. имаш си делител 1:1. Аз съм си направил следното за по-лесни настройки:
А по време на работа можеш да проверяваш делителите на периферията и честотата на процесора:
И кои са тези "сериозни" бъгове, които искат немедленна фиксация За картинката, ами в документацията си пише, че има ограничение от 6 хардуерни точки на прекъсване, ако си напляскал 6, е нормално да ти излиза тази картинка. Софтуерните са неограничени, само че не знам как се използват. |
|||||||||||||||||||||||||||||||||||||
| Автор: | head_up [ Съб Апр 23, 2011 12:44 am ] | |||||||||
| Заглавие: | ||||||||||
Благодаря за съпорта На първо време - няма други поставени брейкпойнти, само един да кажем (макар, че успях да ги докарам за опита до 3) - положението е както го описах, брейкпойнта седи като неактивен след горното предупреждение, но след като ресетна процесора макар брейкпойнта все още да е неактивен - изпълнението се спира там. Т.е. все едно брейкпойнта е валиден, обаче средата всеки път ми вади онова съобщение и ми маркира брейкпойнта, като че не мога да го ползвам - и то номера със спирането става след рестарт на процесора. Странно е. За сега го преживявам - поне мога да спра изпълнението някъде, но ... не е добре де, създава дискомфорт. Ползвам това по принцип - т.е. 80МХз:
Но това не дава възможност броячите да работят на 1us такт! Т.е не и при 40 клок на периферията - виж при 64->32 може, но не искам да смъквам ядрото. В най-добрият случай при 80МХз - 1.25us ми е сравнително удобно или 0.1 us, което става само при 32 битов таймер, не и за 16 битовите, защото ми скъсява времето много. W/e с повече старание и при 1.25, и при 0.1 ще го докарам, но е криво като трябва да въртя времената на код, който разчита на "точно време". Относно бъговете имаше няколко "отклонения" в работата на UART-а, по-точно за OERR и флага за празно RX фифо, когато се оказва, че флага нямало да бъде валиден - на мен данните ми трябват колкото и да са, ако ще и да съм загубил някой байт - работим по заобиколките, както препоръчват. Не се зачетох във всичките им проблеми, но не мисля, че е редно, която и да е фирма да пусне 4 ревизии и да оправи 1/6 от бъговете. Не знам дали ще има някой друг проблем да ме засегне, те повечето и могат спокойно да се "фикснат". Обаче като им свикне човек няма ядове, почват да ми харесват - както казах мазохизъм |
||||||||||
| Автор: | ¶ [ Съб Апр 23, 2011 4:25 am ] | |||||||||||||||||||||||||||
| Заглавие: | ||||||||||||||||||||||||||||
Ако от такъв бъг се плашиш
Ами това ( пак на TMS320F281x ):
Както и да е. Отностно едната ти микросекунда: PIC32 има един допълнителен 32-битов брояч ( регистър #9, Core Timer, CT ) в коопроцесор 0 ( CP0 ), който може да се спира, пуска и да генерира прекъсвания като всеки друг таймер. Обикновено се използва за Core Timer и се тактува на всеки два такта на ядрото. В твоя случай при 80MHz такт на ядрото, CT ще се тактува с 40MHz, зареждаш в период регистъра му 40 и ще ти генерира прекъсване точно на 1us. Имай в предвид, че регистрите на коопроцесор 0 не са в адресното п-во на ядрото, те си имат собствен регистров файл и комуникацията между коопроцесора и ядрото става с инструкциите mtc0 и mfc0 ( move to CP0 & move from CP0 ). Ще видиш подробно описание на коопроцесора в DS61113C, секция MCU. Периода на CT се задава с друг регистър от CP0, регистър #11, Compare. Таймерa се стартира/спира с бит 27 ( Disable Count, DC ) на регистър #13, Cause, от CP0, a прекъсването се забранява/разрешава с бит 0 на IEC0 . Не забравяй, че прекъсването ще бъде активно докато не презапишеш Compare регистъра. Стана ми интересно какво точно правиш та държиш непремнно на едната микросекунда ? П.П. Едно време използвах най-вече PC-та с AMD професори, и имах много ядове с най-различни видове софтуер, от MPLAB до Protel. Откакто съм минал на Intel професори ядовете ми са намалели в пъти. Даже ми става чудно как пък един елементарен SK няма да тръгне, моите ги изпробвах преди малко на 3-те нормални лаптопа, на единия Малчо ( 10" дисплей ) и на едната настолна машина, все MPLAB 8.60, ми няма проблем със задаване на точките на прекъсване. Не ми се слиза в мазето да ги изпробвам на MPLAB X под Ubuntu |
||||||||||||||||||||||||||||
| Автор: | head_up [ Съб Апр 23, 2011 12:17 pm ] |
| Заглавие: | |
Ееее, ти ме взе за закуска Абе за правенето - портвам си един код, който спокооойно си работи на LPC, C0, на уж по-добра платформа - микрочипско дело. И тъй като в LPC-тата таймерите са адски добре развити, т.е. делители на входа за каквато ти душа поиска стойност, компараторите за прекъснвания - без спиране/рестартиране на брояча като freerun, 1 таймер за 3 PWM (и повече), всичкото накичено на 2 таймера и няма проблем, тук ми се налага да разхвърлям по различните броячи функционалност същестуваща при 1us и като гледам ще глътна всичките 5 16 битови, срещу 2 на LPC-то. Та както казах - за едно ми идва късо времето, за друго не. Ще взема да го ползвам тоя таймер на ядрото, където викаш, има идея да брой - ако може делителя му да е на 40, не обърнах внимание - благодаря |
|
| Автор: | head_up [ Съб Апр 23, 2011 2:06 pm ] |
| Заглавие: | |
Ей, това с CoreTimer наистина спаси ситуацията. Голямо "благодаря", ¶, току виж всичко се наредило |
|
| Автор: | head_up [ Пет Апр 29, 2011 3:53 pm ] |
| Заглавие: | |
може ли някой да удари едно рамо с MPLABa - има неща от него, които колкото и дребни да са, ме побъркват. Ок, с клавишните комбинации си ги докарах да са както ми харесват, но някой може ли да ме осветли как да направя променливите (по-точно масиви) да излизат по дефолт в хекс формат - сега се показват в аски код и докато ги мина всичките на хекс ми се отщява да дебъгвам. Второто - има ли бързи клавишни комбинации за извеждане на Locals, Watch и т.н. - не успях да намеря начин да правя това, нито пък гуглето се оказа полезно в случая. И странно защо, но понякога ми изчезва StepOver - просто става неактивно - това има ли логично обяснение и оправяне или и него да го минавам с някоя благословия |
|
| Автор: | ¶ [ Пет Апр 29, 2011 6:41 pm ] |
| Заглавие: | |
Като отвориш Watch джама, кликваш с десния бутон на променливата, избираш Properties, след което за Default Type Format избираш Hex. Отделно ако кликнеш с десния бутон върху първия ред ( Virtual, Symbol Name и т.н. ) можеш да избереш да ти показва съдържанието в повече от един формат ( Dec, Hex, ASCII и т.н. ) MPLAB мисля, че ти пази настройките на прозорците ако използваш Workspace, ако само създаваш Proejct без Workspace май не ги пази. Ама не съм сигурен, отдавна не съм използвал голи проекти и не помня какво беше там. |
|
| Автор: | head_up [ Пон Май 09, 2011 10:20 am ] |
| Заглавие: | |
Отново въпрос: имам си един проект за пик32, чиято компилация иска разни суичове към гцц-то, като -Os -fomit-frame-pointer -mips16. Ако изключим, че -fomit-frame-pointer ми е не ясно какво прави и гуглето мълчи, то за останалата част от проекта - не искам да има опримизация, нито да ми го тика в mips16 и това нещо, което не разбирам. Ок, мога да експортна мейкфайл и да приложа желаните суичове вътре както ми трябват. Но после не мога да накарам MPLAB-a след това да го ползва. Как става тая магия ?! |
|
| Автор: | ¶ [ Пон Май 09, 2011 3:39 pm ] | |||||||||
| Заглавие: | ||||||||||
Май си скаран с помощната информация или пък не я четеш Не ти трябват make файлове, на всеки файл в проекта можеш да зададеш различни опции, един да е оптимизиран, друг да не, един да е компилиран с -mips16, а друг да си е 32-битов код. Ако кликнеш с десния бутон върху името на файла в прозореца на проекта излиза менюто Build options, там сменяш само за конкретния файл опциите, има и възможност да се наследят глобалните опции или да използваш алтернативни опции, които си ги въвеждаш ръчно.
Ето добро обяснение какво върши frame pointer-a : http://www.yosefk.com/blog/getting-the- ... inter.html |
||||||||||
| Автор: | head_up [ Пон Май 09, 2011 4:29 pm ] | |||||||||
| Заглавие: | ||||||||||
Ок, това което казваш е полезно - ще свърши работа, макар да са купчина файлове си е играчка да се направи за всеки по отделно, но става. Има ли начин с нещо като импорт да пренасям тези настройки от проект на проект? Нещо като мейкфайла Благодаря за помощния линк, странно защо на мен гуглето ми се сърди като го питах за това и мълчеше |
||||||||||
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|