MPLAB: problém s funkciou Stopwatch

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
eurobastler
Ultimate člen
Ultimate člen
Príspevky: 3903
Dátum registrácie: 19 Apr 2009, 00:00
Bydlisko: BA
Vek: 35

MPLAB: problém s funkciou Stopwatch

Príspevok od používateľa eurobastler » 10 Sep 2010, 13:15

Momentalne sa hram v MPLAB-e so simulaciou programu. Kedze zatial programujem len "blikacky", casto robim s casovymi sluckami. Chcel som si zistit presny cas jednotlivych casovych sluciek, ale narazil som na problem. Neviem, ako docielit, aby som nemusel dlho cakat na vysledok. Samozrejme nekrokujem cez F7 /po jednom/, ale cez Ctrl+F9. Aj tak je to velmi pomale-kym prejde niekolkosekundovu slucku, prejde par minut. Nevie niekto poradit, ako tento proces urychlit?
0
Obrázok

Kiwwicek
Stály člen
Stály člen
Príspevky: 258
Dátum registrácie: 07 Jún 2009, 00:00
Bydlisko: Bratislava, Hlohovec
Vek: 39

Príspevok od používateľa Kiwwicek » 10 Sep 2010, 13:24

Hovoria ti nieco breakpointy? Zapnes MPLABSIM, nastavis si breakpoint na zaciatok slucky , dalsi na koniec slucky (dvojklik na dany riadok, vlavo sa to zobrazi ako cerveny kruzok a v jeho strede bude B), das si master reset , das run, program, ti zastane na prvom breakpointe cize na zaciatku slucky, vynulujes STOPWATCH a das znova run, program ti zastane na dalsom breakpointe cize na konci slucky. Kuknes na stopwatch a mas tam cas ktory trvala slucka, samozrejme si treba spravne nastavit hodnotu frekvencie v menu - debugger - settings - osc/trace. Jop alebo ked ches vidiet ako ti to beha tam vsetko, tak si v settings - animation/realtime updates nastav do kolonky animate step time mansi cas ako 300ms co tam je.
0
Hledej mne lásko má, kde je pivo tam jsem já.

Používateľov profilový obrázok
eurobastler
Ultimate člen
Ultimate člen
Príspevky: 3903
Dátum registrácie: 19 Apr 2009, 00:00
Bydlisko: BA
Vek: 35

Príspevok od používateľa eurobastler » 10 Sep 2010, 14:41

Dal som si breakpoint na zaciatok aj koniec slucky. Potom som klikol na Reset Processor. Nasledovalo F9 /Run/. Simulator skocil na zaciatok slucky a tak som vynuloval Stopwatch. Stlacil som este raz F9 /Run/ a robi to to iste, co doteraz-pomalicky nacitava po mikrosekundach. Mam verziu 4.12.12.
0
Obrázok

Kiwwicek
Stály člen
Stály člen
Príspevky: 258
Dátum registrácie: 07 Jún 2009, 00:00
Bydlisko: Bratislava, Hlohovec
Vek: 39

Príspevok od používateľa Kiwwicek » 10 Sep 2010, 14:56

Nemozne ......, v kazdom jednom MPLABe co som kedy pouzival mi to slo bez problemu ..., jedine ze by si niekde zacyklil slusku vtedy ti to bdue nacitavat do aleluja ....., za dalsie opis nacitava mi to po mikrosekundach je super ... , jezis to si sa kde dostal ku takej verzii? kto ti to poradil aby si ju stahoval? ved ta verzia ma okolo 10 rokov ved to si este pamatam z 1998/99 tusim ze vysla a kristus vie ci nie skorej ...., robil si nieco s nastaveniami simulatora? ak hej tak ich daj pekne do povodneho stavu a jedine co zmen je velkost frekvencie krystalu ...., osobne nevidim dovod preco by taka banalna vec nemala fungovat , posli mi ten program ze nech si to vyskusam lebo toto sa mi este v zivote nestalo a to uz som mal tu cest s vela vela verziami mplabu
0
Hledej mne lásko má, kde je pivo tam jsem já.

Používateľov profilový obrázok
eurobastler
Ultimate člen
Ultimate člen
Príspevky: 3903
Dátum registrácie: 19 Apr 2009, 00:00
Bydlisko: BA
Vek: 35

Príspevok od používateľa eurobastler » 10 Sep 2010, 15:05

To bolo pribalene ku knihe Ucebnice programovani PIC, tak som si to rovno nainstaloval. Isiel som zapnut to druhe PC, kde programujem a ono to nefunguje. Stale len pipa a pipa...Casovu slucku z hlavy neviem, ale viem, ze to bol prekopirovany podprogram. Nemoze vadit instrukcia RETURN na konci?
0
Obrázok

Kiwwicek
Stály člen
Stály člen
Príspevky: 258
Dátum registrácie: 07 Jún 2009, 00:00
Bydlisko: Bratislava, Hlohovec
Vek: 39

Príspevok od používateľa Kiwwicek » 10 Sep 2010, 15:37

1. tak sa toho rovno zbav a daj si niektoru z novsich vezrii ... pr. 8.50 alebo 8.56 ..

2. tie ucebnice od benu to je tiez kapitola sama o sebe .... ak by som sa mal ucit programovat podla toho ... tak dakujem (prelistoval som si ich a osobny nazor , autor tym zbytocne zabil svoj cas a zabija tym aj cas ludi co to citaju ...)

3. nechcem byt zly a hnusny ale to si nevies napisat slucku sam? sak to je primitivna banalita, ktora je na zaciatku samozrejmostou ....

4. nie RETURN urcite vadit nemoze , pretoze na konci kazdeho podprogramu sa tato instrukcia priam nachadzat musi! , ale pozor - zalezi od mikrokontrolera niektore picka maju instrukcnu sadu kde namiesto return mas retlw cize na konci podprogramu sa pise napr. retlw 0x00, v niektorych programoch je to vyhoda pretoze mozes o skonceni podprogramu touto instrukciou zabit dve muchy jednou ranou a priamo predat akumulatoru nejake cislo a usetrit tym nejake miesto v pamati (vacsinou byva tato instrukcia v mikrokontroleroch s malom programovej pamate v PIC12 som ju videl a neviem ci aj stara dama 16F84a ju nema, cisty priklad - skonci podprogram a ty chces do akumulatora vlozit cislo 20h, takze ked mas k dispozicii retlw das retlw 0x20 a mas to tam, inak by si musel napisat return a za nim movlw 0x20, dalej sa to vyuziva pri tabulkach - citanie konstant z programovej pamate a podobne )

5. ak sa chces naucit programovat zober si mikrokontroler, jeho datasheet a precitaj si ho namiesto kniziek od benu , urcite sa dozvies viac osoznych informacii a hlavne tvor programy sam z vlastnej hlavy a nekopci to , sem tam sa mozno potrapis ale tym lepsie pre teba a tvoju hlavu

6. osobne si myslim ze ked sa budeme bavit stylom a nemoze tomu vadit instrukcia return, tvoj problem budeme riesit pol roka

7. napisal som ti ako to urychlit resp. ako sa to robi , kedze ti to nefunguje chyba je niekde u teba , su dve moznosti 1. budes sa trapit a hladat to sam (osobne by som si ju zvolil) 2. das sem ten tvoj napisany program ja alebo uz niekto iny ho skompiluje vyskusa a povie ti kde je chyba (ak je v programe) , ak nie tak sa pokusi nasimulovat v mplabsim take spravanie ako uvadzas ...
0
Hledej mne lásko má, kde je pivo tam jsem já.

exekutor
Stály člen
Stály člen
Príspevky: 295
Dátum registrácie: 28 Jún 2009, 00:00

Príspevok od používateľa exekutor » 10 Sep 2010, 15:48

retlw je klasicka instrukcia, nenahradzuje return. Vyuziva 2 programove cykly, takze na usetrenie pamate alebo podobne veci co si pisal urcite nie je. Nainstaluj si aktualny MPLAB, stiahnes ho z domovskej stranky. V ramci programu sa posuvaj pravym tlacitkom a volbou "set PC at cursor". Daj moznost RUN a program musi bezat v realnom case. (a rychlejsie :)).
0

Kiwwicek
Stály člen
Stály člen
Príspevky: 258
Dátum registrácie: 07 Jún 2009, 00:00
Bydlisko: Bratislava, Hlohovec
Vek: 39

Príspevok od používateľa Kiwwicek » 10 Sep 2010, 16:12

To exekutor: ja som nenapisal ze ho nahradzuje , v niektorych instrukcnych sadach pre niektore pic jednoducho return nenajdes je tam miesto neho retlw (najma v tych kde je menej program flash), to ze sa vykona v dvoch cykloch je pekne ale s miestom v programovej pamati to nema nic spolocne ...., okrem toho su to instrukcne cykly a nie programove .... 1 instrukcny cyklus je v picku fkrystalu/4 ..... tzn. return aj retlw sa vykonaju za cas 2* (fkrystalu/4)na minus prvu .... ja tam suvis s miestom v programovej pamati nevidim, pisal som ze s retlw mozes usetrit miesto v pamati oponoval si ze nie .... precitaj si prosim co sa pise v instruction set pri tejto instrukcii ked uz pises to co pises a nezavadzaj ludi a ked uz chces pisat nieco o cykloch a podobne nauc sa asopn terminologiu ....., a precitaj si moj jednoduchy prikald co som dal eurobastlerovi a pochopis ze to co pisem dava zmysel a viem preco to pisem ...., myslim ze retlw 0x20 namiesto return a za nim movlw 0x20 usetrenim pamate je ......, ale mozno sa mi to len zda ze namiesto dvoch instrukcii v programovej pamati tam bude potom len jedna ..... a este to bude aj rychlejsie kedze retlw trva 2 instrukcne cykly , a returm + movlw 0x20 bude trvat 3 instrukcne cykly ....
0
Hledej mne lásko má, kde je pivo tam jsem já.

Používateľov profilový obrázok
eurobastler
Ultimate člen
Ultimate člen
Príspevky: 3903
Dátum registrácie: 19 Apr 2009, 00:00
Bydlisko: BA
Vek: 35

Príspevok od používateľa eurobastler » 10 Sep 2010, 16:41

Dnes som uz s programovanim skoncil. Ten pocitac nejde vobec zapnut. Ked sa mi podari ho ozivit, tak sa ozvem :twisted:
0
Obrázok

Používateľov profilový obrázok
feros
Stály člen
Stály člen
Príspevky: 415
Dátum registrácie: 23 Sep 2010, 00:00
Bydlisko: okres Nitra

Príspevok od používateľa feros » 23 Sep 2010, 20:58

Rychlost behu simulacie zavisi silne na procesore pc, aj ked sa to nezda tak simulacia dost zatazuje pocitac.Moja skusenost s Athlon na 2,6G a C2D na 2,6G je 10:1. Dalsia vec je sposob nastavenia simulacie v menu "Simulator seting" "Animation/Realtime updates" polozka "Animated step time" ktora vklada cakanie medzi jednotlive kroky simulacie ale len pre animamaciu pohibu po programe - nastavte to na najnisiu hodnotu.
0

Používateľov profilový obrázok
eurobastler
Ultimate člen
Ultimate člen
Príspevky: 3903
Dátum registrácie: 19 Apr 2009, 00:00
Bydlisko: BA
Vek: 35

Príspevok od používateľa eurobastler » 05 Okt 2010, 18:32

Nefunguje to. Idem podla tychto krokov:

1. File -> Open casovac.asm
2. Debugger -> Select Tool -> MPLAB SIM
3. Debugger -> Settings -> Osc/Trace -> nastavim frekvenciu na 4Mhz
4. Debugger -> Settings -> Animation/Realtime Updates -> Animate Step Delay -> No delay
5. Dam si breakpointy na zaciatok a koniec slucky
6. Stlacim F6
7. Stlacim F9

Vyhodi mi hlasenie: One or more breakpoints could not be resolved. Select breakpoints from Debugger Menu for details.


///////Simulacia uz ide, zabudol som dat Project -> Build All :oops:

Novy problem: Stopwatch mi ukazuju na tuto cast programu tvanie 3 mikrosekundy. Breakpointy davam na prvy a posledny riadok tejto casti programu:
INCFSZ REG1,1
GOTO $-1
INCFSZ REG2,1
GOTO $-3
INCFSZ REG3,1
GOTO $-5
CLRF REG1
0
Obrázok

mato3000
Power user
Power user
Príspevky: 9767
Dátum registrácie: 04 Jan 2009, 00:00
Bydlisko: BA

Príspevok od používateľa mato3000 » 05 Okt 2010, 20:55

jasne keď dáš na prvý riadok breakpoint, tak hneď po druhom kroku ti to na nom ostane visieť, odkrokuj si to a uvidíš.

break point daj na posledný riadok a na prvý si nadstav kurzor .. SET PC at CURZOR, alebo daj breakpoint o riadok vyššie
0

Používateľov profilový obrázok
feros
Stály člen
Stály člen
Príspevky: 415
Dátum registrácie: 23 Sep 2010, 00:00
Bydlisko: okres Nitra

Príspevok od používateľa feros » 07 Okt 2010, 20:20

One or more breakpoints could not be resolved. Select breakpoints from Debugger Menu for details.

Ohlasi najcastejsie ak je breakpoint nastaveny na prazdny riadok alebo na label - treba ho dat vzdi na instrukciu

Chyba ale moze vzniknut aj dalej v programe - napr. pri zmazani riadku a podobne.
0

Používateľov profilový obrázok
eurobastler
Ultimate člen
Ultimate člen
Príspevky: 3903
Dátum registrácie: 19 Apr 2009, 00:00
Bydlisko: BA
Vek: 35

Príspevok od používateľa eurobastler » 09 Okt 2010, 18:18

Pri stopwatch som rezignoval. Program si robi,co chce. Raz mi vobec nejde spustit, raz ide, ked nabehne, tak kazda slucka podla neho trva rovnako.

Tak som sa rozhodol, ze uplne presny cas slucky nepotrebujem. Pracujem na multifunkcnom blikaci, kde to nebude kriticke. Vrasky na cele mi sposobuje tato cast programu:

MOVLW 1Dh
MOVWF PORTA
MOVLW 00h
MOVWF PORTB
BSF STATUS,RP0
MOVLW 02h
MOVWF 85h
GOTO START

Prikazom BSF STATUS,RP0 sa prepnem do banky RP1.To funguje, ale ked chcem preniest hodnotu 02h do TRISA, vzdy ma MPLAB potesi nasledovnou hlaskou:


Message[302] Register in operand not in bank 0. Ensure that bank bits are correct.

Zaujimave je aj to, ze ked dam Build all, vypise tuto hlasku, ale ked dam Step Into, opyta sa ma, ci si prajem "build it all" a potrdim OK, tak uz chyby nevypisuje.
0
Obrázok

Používateľov profilový obrázok
vama
Ultimate člen
Ultimate člen
Príspevky: 1545
Dátum registrácie: 26 Aug 2008, 00:00
Bydlisko: BA
Vek: 31

Príspevok od používateľa vama » 09 Okt 2010, 18:57

Je to len informacna sprava, toto som riesil tuna: http://svetelektro.com/modules.php?name ... highlight=
0

mato3000
Power user
Power user
Príspevky: 9767
Dátum registrácie: 04 Jan 2009, 00:00
Bydlisko: BA

Príspevok od používateľa mato3000 » 09 Okt 2010, 20:14

MESSAGE xxx , to sú iba upozornenia, že MPLAB niečo autpmaticky doplnil, ak to tam nechceš daj do hlavičky ERRORLEVEL -302

teda pre poriadok sa spýtam či ti funguje ten program tak ako má. Ak áno tak kašli na to upozornenie, ale ak nie tak sem daj aj číslo riadku a celú rutinu, lebo z tvojeho popisu neni celkom jasné kde máš prípadnú chybu.


a ten STOPWATCH ? ti neje, ani keď si to spravil tak ako som ti písal? inak STOPWATCH si určite nerobí čo chce, len ho zle používaš
0

Kiwwicek
Stály člen
Stály člen
Príspevky: 258
Dátum registrácie: 07 Jún 2009, 00:00
Bydlisko: Bratislava, Hlohovec
Vek: 39

Príspevok od používateľa Kiwwicek » 09 Okt 2010, 22:04

No musim sa trosku zamiesat zas aj ja. :-) PIC maju defaultnu banku registrov (datovu banku) - 0. Hlaska:

Message[302] Register in operand not in bank 0. Ensure that bank bits are correct.

, znamena len tolko ze niekde v programe si pouzil register, ktory sa nenachadza v banke 0 a ty ako programator mas zaistit korektne nastavenie banky kde sa pouzity register nachadza (bitmi RP0 RP1, niekde len RP0 .. zalezi od mcu), to si urobil takze pohoda, len sa potom nezabudni vratit do banky 0 ak tam mas registre s ktorymi pracujes, co v pripade tvojom bude takmer na 100 percent iste kedze robis ledkove efekty kde musis menit hodnoty na porte (ak to nerobis cez nepriame adresovanie, v podstate cez pointre ... ale myslim ze nie na to mas este cas).

Co sa tyka Stopwatch:

1. zapnem MPLAB SIM
2. debugger - settings - osc/trace - processor frequency (nastavim hodnotu podla toho aky mam krystal)
3. zapnem si stopwatch
4. rebuild project
5. nastavim breakpoint na instrukciu pred zaciatkom slucky
6. nastavim si breakpoint na instukciu za koncom slucky
7. kliknem processor reset (F6)
8. kliknem run (F9), simulator sa zastavi na prvom breakapointe
9. kliknem step into (F7), tym som sa dostal na zaciatok mojej oneskorovacej slucky, vynulujem stopwatch kliknutim na tlacitko ZERO
10. kliknem na run (F9)
11. kuknem stopwatch a mam zobrazeny cas

Tento postup si pamatam este z doby ked som zacinal s pickami, neviem skade ho mam (mozno z nejake user guide, mozno som sa k tomu doklikal sam bohvie) a asi ani neni najlahsi a najkratsi ale nikdy ma nesklamal, rozmyslal som ze ti sem dam ozaj uz obrazkovy navod ale ked mne sa to tak nechce ukladat a este do toho kreslit co kde stlacit :-(, ale ked ho budes moc chciet tak ho urobim.
0
Hledej mne lásko má, kde je pivo tam jsem já.

mato3000
Power user
Power user
Príspevky: 9767
Dátum registrácie: 04 Jan 2009, 00:00
Bydlisko: BA

Príspevok od používateľa mato3000 » 09 Okt 2010, 22:39

no a presne v 5 a 6 tom bode robil tu chybu. preto mu daval STOPWATCH 3us
0

Kiwwicek
Stály člen
Stály člen
Príspevky: 258
Dátum registrácie: 07 Jún 2009, 00:00
Bydlisko: Bratislava, Hlohovec
Vek: 39

Príspevok od používateľa Kiwwicek » 09 Okt 2010, 22:44

njn akurat on pisal ze program si robi co chce, to fakt netusim co sa tam deju uz za zverstva :-)
0
Hledej mne lásko má, kde je pivo tam jsem já.

mato3000
Power user
Power user
Príspevky: 9767
Dátum registrácie: 04 Jan 2009, 00:00
Bydlisko: BA

Príspevok od používateľa mato3000 » 09 Okt 2010, 22:52

nie, nerobí, len to nevie používať. mne to šlo vždy v pohode.

len ma trochu serie, že táto funkcia STOPWATCH neni aj pri debugácii s ICD3, možno som len slepý, ale nenašiel som ju nikde. vždy keď potrebujem odmerať čas, tak musím prepnúť do MPLABSIM
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok