Отговори на тема  [ 16 мнения ]  Отиди на страница 1, 2  Следваща
Борба с PIC32 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение Борба с PIC32
тъй, боря се с един pic32mx460F512L. Първи впечатления - дървения, много мрънкане отнесе. На второ гледане може и да ми се понрави. Т.е. почва да ми харесва, нещо като мазохизъм.

Имам два прости въпроса:

-> първият е относно MPLAB 8.66 - не дава да си сложа брейкпоинт. Значи след много мъки и рестартирания на средата + чистене някак си успявам да сложа един - махам го и после пак не мога да сложа. Ползвам дебъгера, който идва с PIC32 Starter Board-a, т.е. един Господ знае какво точно е. Обаче по това, което гуглето казва излиза, че и с други дебъгери се появява тоя проблем - някой намират за решение да правят проекта на ново всеки път. Е, на мен не ми харесва - как се решава това по-елегантно? Не може, за да дебъгва човек нормално да му се налага всеки път да прави това - триене ръчно, нов проект и всичката акробатика!

-> втория въпрос е относно делители и таймерна система. Много, ама много ми се иска да имам таймер да цъка на 1us и едновременно с това да ползвам ядрото на макс - 80МХз. Е, да, ама в това животно всичкото делител е на степени на 2-ката. Както и да го суча това не се постига по друг начин освен, ако не смъкна ядрото на 64МХз, делителя за периферията на 2 и на всеки каквото му трябва... А не искам да правя и това - има ли някакво научно решение или да си държа таймерите на 0.1us за инкремент и да се съобразявам с това? Защото за 32 битов таймер ме устройва, но за 16 битовия ми идва късо времето - трябват ми доста повече, поне 3-4 пъти. Но не мога да си позволя 2 32 битови, защото не ми стигат за всички цели. Та с тази дилема ми е трудно да живея по празниците :D

Другото - абе то всичко хубаво, ама микрочип дали имат намерения да фиксват бъговете в тая серия процесори - не може да изкарат 4 ревизии и от 66 (документирани) бъга да фикснат има няма 10! Малко ми звучи несериозно. Иначе с тия екзампъли дето са ги дали - благодат, за часове човек се учи как да ползва този процесор. Старта е в пъти по-бърз от другото, до което съм се докоснал. Освен със средата - не е отместена и на бит от 6-та версия, все си е саката. Но това са си мои разбирания :P


Прикачени файлове:
Коментар на файл: Е, това вади за брейкпоинт! А друг сложен - няма, нито активен, нито неактивен.
bp_err.jpg
bp_err.jpg [ 11.13 KiB | Прегледано 3831 пъти ]
Пет Апр 22, 2011 12:45 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
Сам ще си отговарям, но ще съм доволен и на чуждо мнение :D
Учудващо, но след опит за поставяне на брейкпоинт средата учтиво ми покава среден пръст с горното съобщение. Нищо, брейкпойнта се явява като неактивен и не се спира на него. Пак хубаво. Ако сложа колкото ме интересува брейпойнти (в случая 3) и мълчаливо се съглася с предупреждението, те продължават да си седят неактивни. Обаче - правя един ресет на процесора и ... чудо! Въпреки, че брейкпойнтите продължават да бъдат неактивни - на тях се спира! Ай ся - това нормално ли е?! 8O


Пет Апр 22, 2011 1:01 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
Абе ще почна да отговарям и аз, нали си взех МХ695.... ама засега само съм го пойнал на една смотана платка от Комет.
То 6 TQFP на нея, няма къде да пойнеш кварца дет се вика...
Аз обаче няма да го мъча под MPLAB...


Пет Апр 22, 2011 2:49 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
@relsys, подозрително биеш към едни продукти, от които упорито бягам :) Не, благодаря ти.


Пет Апр 22, 2011 3:03 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
head_up написа:
@relsys, подозрително биеш към едни продукти, от които упорито бягам :) Не, благодаря ти.


Не, не бия на никъде. Просто споделям колко до никъде съм стигнал и аз ... от мързел ... :lol: :lol: :lol:

Иначе, всеки сам има право да си избира, колко трудно иска да му бъде. Колкото до "продуктите", проекта върху който ще работя с акумулаторите от другата тема, ще е разработен с тях върху PIC24 и PIC32. Когато стане готов, /надявам се най-късно септември/ ще поканя всеки от вас който има интерес, да му хвърли един поглед от по-близо.


Пет Апр 22, 2011 7:13 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение Re: Борба с PIC32
head_up написа:
-> първият е относно MPLAB 8.66 - не дава да си сложа брейкпоинт. Значи след много мъки и рестартирания на средата + чистене някак си успявам да сложа един - махам го и после пак не мога да сложа. Ползвам дебъгера, който идва с PIC32 Starter Board-a, т.е. един Господ знае какво точно е. Обаче по това, което гуглето казва излиза, че и с други дебъгери се появява тоя проблем - някой намират за решение да правят проекта на ново всеки път. Е, на мен не ми харесва - как се решава това по-елегантно? Не може, за да дебъгва човек нормално да му се налага всеки път да прави това - триене ръчно, нов проект и всичката акробатика!

Нещо има гнило в твоя телевизор. Имам и 3-те им PIC32 SK, всички си работят като пушка, на машината ми е MPLAB 8.60. Ако си включил оптимизациите не винаги можеш да зададеш точка на прекъсване, щото там където искаш може и да няма код. Затова си пускаш листинга (View/Dissasembly Listing ) и гледаш има ли код точно там където искаш да има точка на прекъсване.

head_up написа:
-> втория въпрос е относно делители и таймерна система. Много, ама много ми се иска да имам таймер да цъка на 1us и едновременно с това да ползвам ядрото на макс - 80МХз. Е, да, ама в това животно всичкото делител е на степени на 2-ката. Както и да го суча това не се постига по друг начин освен, ако не смъкна ядрото на 64МХз, делителя за периферията на 2 и на всеки каквото му трябва... А не искам да правя и това - има ли някакво научно решение или да си държа таймерите на 0.1us за инкремент и да се съобразявам с това? Защото за 32 битов таймер ме устройва, но за 16 битовия ми идва късо времето - трябват ми доста повече, поне 3-4 пъти. Но не мога да си позволя 2 32 битови, защото не ми стигат за всички цели. Та с тази дилема ми е трудно да живея по празниците :D

Периферията може да се клочи 1:1 с ядрото, т.е. имаш си делител 1:1. Аз съм си направил следното за по-лесни настройки:
Код:
#if defined(RUN_AT_48MHZ)
   // Setup for Fcy=48MHz for core and Fpb=48MHz for peripheral
   // Explorer 16 board has 8.000MHz crystal, FPLLIDIV=DIV_4 divide this
   // 8.000MHz by 2, FPLLMUL=MUL_24 multiply 2.000MHz by 24 and result is 48MHz
   // for core. FPBDIV=DIV_1 divide core clock by 1 and result is 48MHz clock for
   // peripheral
   #pragma config POSCMOD=XT, FNOSC=PRIPLL
   #pragma config FPLLIDIV=DIV_4, FPLLMUL=MUL_24, FPLLODIV=DIV_1
   #pragma config FPBDIV=DIV_1, FWDTEN=OFF, CP=OFF, BWP=OFF
#elif defined(RUN_AT_56MHZ)
   // Setup for Fcy=56MHz for core and Fpb=56MHz for peripheral
   // Explorer 16 board has 8.000MHz crystal, FPLLIDIV=DIV_3 divide this
   // 8.000MHz by 3, FPLLMUL=MUL_21 multiply 2.6666MHz by 21 and result is 56MHz
   // for core. FPBDIV=DIV_1 divide core clock by 1 and result is 56MHz clock for
   // peripheral
   #pragma config POSCMOD=XT, FNOSC=PRIPLL
   #pragma config FPLLIDIV=DIV_3, FPLLMUL=MUL_21, FPLLODIV=DIV_1
   #pragma config FPBDIV=DIV_1, FWDTEN=OFF, CP=OFF, BWP=OFF

#elif defined(RUN_AT_64MHZ)
   // Setup for Fcy=64MHz for core and Fpb=32MHz for peripheral
   // Explorer 16 board has 8.000MHz crystal, FPLLIDIV=DIV_2 divide this
   // 8.000MHz by 2, FPLLMUL=MUL_16 multiply 4.000MHz by 16 and result is 64MHz
   // for core. FPBDIV=DIV_2 divide core clock by 2 and result is 32MHz clock for
   // peripheral
   #pragma config POSCMOD=XT, FNOSC=PRIPLL
   #pragma config FPLLIDIV=DIV_2, FPLLMUL=MUL_16, FPLLODIV=DIV_1
   #pragma config FPBDIV=DIV_2, FWDTEN=OFF, CP=OFF, BWP=OFF

#elif defined(RUN_AT_72MHZ)
   // Setup for Fcy=72MHz for core and Fpb=36MHz for peripheral
   // Explorer 16 board has 8.000MHz crystal, FPLLIDIV=DIV_2 divide this
   // 8.000MHz by 2, FPLLMUL=MUL_18 multiply 4.000MHz by 18 and result is 72MHz
   // for core. FPBDIV=DIV_2 divide core clock by 2 and result is 36MHz clock for
   // peripheral
   #pragma config POSCMOD=XT, FNOSC=PRIPLL
   #pragma config FPLLIDIV=DIV_2, FPLLMUL=MUL_18, FPLLODIV=DIV_1
   #pragma config FPBDIV=DIV_2, FWDTEN=OFF, CP=OFF, BWP=OFF

#elif defined(RUN_AT_80MHZ)
   // Setup for Fcy=80MHz for core and Fpb=40MHz for peripheral
   // Explorer 16 board has 8.000MHz crystal, FPLLIDIV=DIV_2 divide this
   // 8.000MHz by 2, FPLLMUL=MUL_20 multiply 4.000MHz by 18 and result is 80MHz
   // for core. FPBDIV=DIV_2 divide core clock by 2 and result is 40MHz clock for
   // peripheral
   #pragma config POSCMOD=XT, FNOSC=PRIPLL
   #pragma config FPLLIDIV=DIV_2, FPLLMUL=MUL_20, FPLLODIV=DIV_1
   #pragma config FPBDIV=DIV_2, FWDTEN=OFF, CP=OFF, BWP=OFF

#else
#error "Wrong defined PIC32 RUN_AT_xxMHZ frequency, please see HardwareProfile.h ."
#endif


А по време на работа можеш да проверяваш делителите на периферията и честотата на процесора:
Код:
typedef struct tagSYSPBCLK{
   uint32   fsys_clk;   // System clock set by pragma directive ( fuses sys clk )
   uint32   fpb_clk;   // Peripheral clock set by pragma directive ( fuses pb clk )
   uint32   sys_clk;   // System clock set by OSCCON register
   uint32   pb_clk;      // Peripheral clock set by OSCCON register
}SYSPBCLK;   

/*
   GetSysAndPbClk() is useful function to check if system and
   peripheral clock are initialized properly. It use as input
   parameter desired system frequency and return as
   result a structure from type SYSPBCLK filled with actual
   system and peripheral clock. SYSPBCLK has two identical
   sections, one set from pragma directive, and second
   contain actual frequency read from OSCCON register.

   This funcion can be used in debug process. Let say we have
   8MHz crystal and we want to have 64MHz system clock and 32MHz
   peripheral clock. GetSysAndPbClk() will help us to see
   if FPLLIDIV, FPLLMUL, FPLLODIV and FPBDIV have right values.
*/
uint8 const pllidiv_array[8]    = {1, 2, 3, 4, 5, 6,10,12};
uint8 const pllmul_array[8]      = {15,16,17,18,19,20,21,24};
uint16 const pllodiv_array[8]    = {1, 2, 4, 8,16,32,64,256};
uint8 const pbdiv_array[4]       = {1, 2, 4, 8};

void GetSysAndPbClk(uint32 crystal, // input quartz crystal, Hz
               SYSPBCLK *result)
{         
uint32   fpllidiv,   // PLL input divider
      fpllmult,   // PLL multiplier
      fpllodiv,   // PLL output divider
      fpbdiv,      // Peripheral Bus Clock Divider
      pllmult,   // PLL multiplier
      pllodiv,   // PLL output divider
      pbdiv;      // Peripheral Bus Clock Divider
      
   // Oscillator configuration from #pragmas
   fpllidiv    =    pllidiv_array[DEVCFG2bits.FPLLIDIV];
   fpllmult    =    pllmul_array[DEVCFG2bits.FPLLMUL];
   fpllodiv   =    pllodiv_array[DEVCFG2bits.FPLLODIV];      
   fpbdiv       =    pbdiv_array[DEVCFG1bits.FPBDIV];
   // Oscillator configurations from OSCCON register
   pllmult    =    pllmul_array[OSCCONbits.PLLMULT];
   pllodiv    =    pllodiv_array[OSCCONbits.PLLODIV];
   pbdiv       =    pbdiv_array[OSCCONbits.PBDIV];   
   
   // Calculate system clock and peripheral bus clock
   // set by pragma directive
   result->fsys_clk    =   ( crystal * fpllmult ) / ( fpllidiv * fpllodiv );
   result->fpb_clk      =   result->fsys_clk / fpbdiv;
   
   // Calculate system clock and peripheral bus clock
   // set by OSCCON register
   result->sys_clk      =   ( crystal * pllmult ) / ( fpllidiv * pllodiv );
   result->pb_clk      =   result->sys_clk / pbdiv;
}




И кои са тези "сериозни" бъгове, които искат немедленна фиксация :-) ? Щото използвам няколко техни 32-ки и досега не съм чел errata документи. Не че нямат, сигурно имат, ама нищо не се е случвало при мен.

За картинката, ами в документацията си пише, че има ограничение от 6 хардуерни точки на прекъсване, ако си напляскал 6, е нормално да ти излиза тази картинка. Софтуерните са неограничени, само че не знам как се използват.

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


Пет Апр 22, 2011 8:09 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
Благодаря за съпорта :)
На първо време - няма други поставени брейкпойнти, само един да кажем (макар, че успях да ги докарам за опита до 3) - положението е както го описах, брейкпойнта седи като неактивен след горното предупреждение, но след като ресетна процесора макар брейкпойнта все още да е неактивен - изпълнението се спира там. Т.е. все едно брейкпойнта е валиден, обаче средата всеки път ми вади онова съобщение и ми маркира брейкпойнта, като че не мога да го ползвам - и то номера със спирането става след рестарт на процесора. Странно е. За сега го преживявам - поне мога да спра изпълнението някъде, но ... не е добре де, създава дискомфорт.

Ползвам това по принцип - т.е. 80МХз:

Код:
   // Setup for Fcy=80MHz for core and Fpb=40MHz for peripheral
   // Explorer 16 board has 8.000MHz crystal, FPLLIDIV=DIV_2 divide this
   // 8.000MHz by 2, FPLLMUL=MUL_20 multiply 4.000MHz by 18 and result is 80MHz
   // for core. FPBDIV=DIV_2 divide core clock by 2 and result is 40MHz clock for
   // peripheral
   #pragma config POSCMOD=XT, FNOSC=PRIPLL
   #pragma config FPLLIDIV=DIV_2, FPLLMUL=MUL_20, FPLLODIV=DIV_1
   #pragma config FPBDIV=DIV_2, FWDTEN=OFF, CP=OFF, BWP=OFF


Но това не дава възможност броячите да работят на 1us такт! Т.е не и при 40 клок на периферията - виж при 64->32 може, но не искам да смъквам ядрото. В най-добрият случай при 80МХз - 1.25us ми е сравнително удобно или 0.1 us, което става само при 32 битов таймер, не и за 16 битовите, защото ми скъсява времето много. W/e с повече старание и при 1.25, и при 0.1 ще го докарам, но е криво като трябва да въртя времената на код, който разчита на "точно време".

Относно бъговете имаше няколко "отклонения" в работата на UART-а, по-точно за OERR и флага за празно RX фифо, когато се оказва, че флага нямало да бъде валиден - на мен данните ми трябват колкото и да са, ако ще и да съм загубил някой байт - работим по заобиколките, както препоръчват. Не се зачетох във всичките им проблеми, но не мисля, че е редно, която и да е фирма да пусне 4 ревизии и да оправи 1/6 от бъговете. Не знам дали ще има някой друг проблем да ме засегне, те повечето и могат спокойно да се "фикснат".

Обаче като им свикне човек няма ядове, почват да ми харесват - както казах мазохизъм :D


Съб Апр 23, 2011 12:44 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Цитат:
The OERR bit does not get cleared on a module
Reset. If the OERR bit is set and the module is disabled,
the OERR bit retains its status even after
the UART module is reinitialized.

Ако от такъв бъг се плашиш :D Какво да кажем тогава за DSP-тата на Texas от TMS320F281x серията ? Модел 2003г., последна ревизия на бъговете от 2009г., и все още има неоправени :-) Ето например една стил ала-Microchip PIC18 от първите им ревизии:
Цитат:
Revision(s) Affected: TMS320F281x: 0, A, B, C, D, E, F and G
TMS320C281x: 0, A, B
Details: When an interrupt occurs while program code is executing instructions from the address range
0x3F7FF0 through 0x3F7FF7, it is possible that subsequent data reads from the Flash/ROM
will return all zeros.
Workaround: Do not place program code within this address range. This range can be used for data
variable storage.



Ами това ( пак на TMS320F281x ):
Цитат:
Revision(s) Affected: TMS320F281x: 0, A, B, C, D, E, F and G
TMS320C281x: 0, A, B
Details: If contention exists between the CPU and the eCAN controller for access to certain eCAN
register areas, a CPU read may erroneously read all zeros (0x00000000), and a CPU write
may erroneously fail to execute. Specifically:
1) If the CPU reads the eCAN mailbox RAM area (MSGID, MSGCTRL, MDL, or MDH
registers) at the same time that the eCAN controller is accessing (reading or writing) the
LAM/MOTO/MOTS register area, the CPU may erroneously read all zeros (0x00000000).

Workaround: For all CPU reads from the eCAN mailbox RAM area, check to see if the read returns all
zeros. If so, the CPU should perform a second read.
If the second read returns zero as well,
then the data is correctly zero. If the second read returns a non-zero value, then the second
data is the correct value. Note that interrupts must be disabled during the consecutive CPU
reads.


Както и да е.

Отностно едната ти микросекунда:
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 регистъра.

Стана ми интересно какво точно правиш та държиш непремнно на едната микросекунда ? :wink:


П.П. Едно време използвах най-вече PC-та с AMD професори, и имах много ядове с най-различни видове софтуер, от MPLAB до Protel. Откакто съм минал на Intel професори ядовете ми са намалели в пъти. Даже ми става чудно как пък един елементарен SK няма да тръгне, моите ги изпробвах преди малко на 3-те нормални лаптопа, на единия Малчо ( 10" дисплей ) и на едната настолна машина, все MPLAB 8.60, ми няма проблем със задаване на точките на прекъсване. Не ми се слиза в мазето да ги изпробвам на MPLAB X под Ubuntu :D

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


Съб Апр 23, 2011 4:25 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
Ееее, ти ме взе за закуска :lol: Не е въпроса, че ме плаши - въпроса е колко време щях да си дъвча чорапите как кода ми цикли на нещо такова, ако не бях прочел ератата (примерно) за проблема на uart-a? И не е въпроса, че го има в първа ревизия, а че го има и в 4-та! За тексасците не искам да им надничам в нещата, последния ми сблъсък с тях беше малко разочероващ - не за процесори де, та за ДСП-тата само мога да цъкам с език :D
Абе за правенето - портвам си един код, който спокооойно си работи на LPC, C0, на уж по-добра платформа - микрочипско дело. И тъй като в LPC-тата таймерите са адски добре развити, т.е. делители на входа за каквато ти душа поиска стойност, компараторите за прекъснвания - без спиране/рестартиране на брояча като freerun, 1 таймер за 3 PWM (и повече), всичкото накичено на 2 таймера и няма проблем, тук ми се налага да разхвърлям по различните броячи функционалност същестуваща при 1us и като гледам ще глътна всичките 5 16 битови, срещу 2 на LPC-то. Та както казах - за едно ми идва късо времето, за друго не. Ще взема да го ползвам тоя таймер на ядрото, където викаш, има идея да брой - ако може делителя му да е на 40, не обърнах внимание - благодаря :) Въпроса беше, че не искам да имам прекъсване на 1 us, а инкремент на толкова при максимална тактова на ядрото. Но проблема май си го реших с някоя благословия и поносимо отклонение от точното време. Не е невъзможно да си прехвърля кода, подводните камъни из ератата и рестартирането на таймера при съвпадение с на PR например, ако знаеш колко ги псувах - чак на чуждоезични псувни минах - пък те са по-цветущи от нашенските :o


Съб Апр 23, 2011 12:17 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
Ей, това с CoreTimer наистина спаси ситуацията. Голямо "благодаря", ¶, току виж всичко се наредило :D


Съб Апр 23, 2011 2:06 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
може ли някой да удари едно рамо с MPLABa - има неща от него, които колкото и дребни да са, ме побъркват. Ок, с клавишните комбинации си ги докарах да са както ми харесват, но някой може ли да ме осветли как да направя променливите (по-точно масиви) да излизат по дефолт в хекс формат - сега се показват в аски код и докато ги мина всичките на хекс ми се отщява да дебъгвам. Второто - има ли бързи клавишни комбинации за извеждане на Locals, Watch и т.н. - не успях да намеря начин да правя това, нито пък гуглето се оказа полезно в случая.
И странно защо, но понякога ми изчезва StepOver - просто става неактивно - това има ли логично обяснение и оправяне или и него да го минавам с някоя благословия :?


Пет Апр 29, 2011 3:53 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Като отвориш Watch джама, кликваш с десния бутон на променливата, избираш Properties, след което за Default Type Format избираш Hex. Отделно ако кликнеш с десния бутон върху първия ред ( Virtual, Symbol Name и т.н. ) можеш да избереш да ти показва съдържанието в повече от един формат ( Dec, Hex, ASCII и т.н. )

MPLAB мисля, че ти пази настройките на прозорците ако използваш Workspace, ако само създаваш Proejct без Workspace май не ги пази. Ама не съм сигурен, отдавна не съм използвал голи проекти и не помня какво беше там.

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


Пет Апр 29, 2011 6:41 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
Отново въпрос: имам си един проект за пик32, чиято компилация иска разни суичове към гцц-то, като -Os -fomit-frame-pointer -mips16. Ако изключим, че -fomit-frame-pointer ми е не ясно какво прави и гуглето мълчи, то за останалата част от проекта - не искам да има опримизация, нито да ми го тика в mips16 и това нещо, което не разбирам. Ок, мога да експортна мейкфайл и да приложа желаните суичове вътре както ми трябват. Но после не мога да накарам MPLAB-a след това да го ползва. Как става тая магия ?! :?


Пон Май 09, 2011 10:20 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Май си скаран с помощната информация или пък не я четеш :)

Не ти трябват make файлове, на всеки файл в проекта можеш да зададеш различни опции, един да е оптимизиран, друг да не,
един да е компилиран с -mips16, а друг да си е 32-битов код. Ако кликнеш с десния бутон върху името на файла в прозореца на проекта излиза менюто Build options, там сменяш само за конкретния файл опциите, има и възможност да се наследят глобалните опции или да използваш алтернативни опции, които си ги въвеждаш ръчно.

Цитат:
-fomit-frame-pointer
Don't keep the frame pointer in a register for functions that don't need one. This avoids the instructions to save, set up and restore frame pointers; it also makes an extra register available in many functions. It also makes debugging impossible on some machines.

On some machines, such as the VAX, this flag has no effect, because the standard calling sequence automatically handles the frame pointer and nothing is saved by pretending it doesn't exist. The machine-description macro FRAME_POINTER_REQUIRED controls whether a target machine supports this flag. See Register Usage.

Enabled at levels -O, -O2, -O3, -Os.


Ето добро обяснение какво върши frame pointer-a : http://www.yosefk.com/blog/getting-the- ... inter.html

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


Пон Май 09, 2011 3:39 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
¶ написа:
... или пък не я четеш :)

:oops: май е това :P Твърде се излигавих с това гугле - все едно ако то не знае - никъде не го пише :?

Ок, това което казваш е полезно - ще свърши работа, макар да са купчина файлове си е играчка да се направи за всеки по отделно, но става. Има ли начин с нещо като импорт да пренасям тези настройки от проект на проект? Нещо като мейкфайла :?:

Благодаря за помощния линк, странно защо на мен гуглето ми се сърди като го питах за това и мълчеше :(


Пон Май 09, 2011 4:29 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 16 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

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


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

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