mplab

C,C++,C#

Moderátori: psichac, Moderátori

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

Re: mplab

Príspevok od používateľa mato3000 » 29 Apr 2013, 13:02

no ja neviem, ale šak si to odkrokuj a uvidíš, prepni sa do ASM a tam, aj keď tomu nebudeš rozumieť, tak tam uvidíš kolko to trvá krokov. daj vedieť, zaujímalo by ma to
0

Používateľov profilový obrázok
petersno
Ultimate člen
Ultimate člen
Príspevky: 2774
Dátum registrácie: 06 Aug 2011, 00:00
Bydlisko: ba
Vek: 63

Re: mplab

Príspevok od používateľa petersno » 29 Apr 2013, 13:28

tu su obrazky s debugu : prvy krok
BrkPt_1Prog.jpg
BrkPt_1Watches.jpg
a druhy krok
BrkPt_2Prog.jpg
BrkPt_2Watches.jpg
som zvedavy, co ti z toho vyjde, pretoze ja som z toho tulen
0

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

Re: mplab

Príspevok od používateľa mato3000 » 29 Apr 2013, 17:03

to je pekné, ale počet krokov a čísla riadkov sú odlišné veci.

zisti počet krokov a napíš sem číslo, ak to nejako nejde, tak zisti čas za ktorý to prejde v simulátore, z toho zistíme počet krokov

poviem ti to inak, je vcelku sranda na 8bit MCU pripočítavať niečo do 16 bit čísla , najme sa to číslo inkrementuje každým krokom :D
0

Používateľov profilový obrázok
petersno
Ultimate člen
Ultimate člen
Príspevky: 2774
Dátum registrácie: 06 Aug 2011, 00:00
Bydlisko: ba
Vek: 63

Re: mplab

Príspevok od používateľa petersno » 29 Apr 2013, 18:19

v simulatore to spustit za rovnakych podmienok nejde, niektore dolezite casti programu su zavysle na USB a to v simulatore nefunguje.
pises, ze "je vcelku sranda na 8bit MCU pripočítavať niečo do 16 bit čísla , najme sa to číslo inkrementuje každým krokom", lenze vacsia sranda je, ze rovnaku chybu to urobi, aj ked timer0 predtym vypnem a potom zapnem. a este trochu vacsia je, ze do registru timeru0 mozem zapisat, ale nemozem z neho citat. teda nemozem citat v beziacom programe, to si program niekam odskoci a uz tam zostane, v debugu z neho bez problemov nacitam. ale uplne najvacsia sranda je, ze pri merani nizkych frakvencii zapinam pre timer0 preddelicku 16., takze to robi, aj ked sa register timeru neinkrementuje v kazdom kroku. proste sama sranda :?

priznam sa, ze mi nieje jasny rozdiel medzi poctom krokov a cislami riadkov
0

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Re: mplab

Príspevok od používateľa jaromir » 29 Apr 2013, 18:55

Taka drobna poznamka - kedze som vyrastal ako assemblerovsky programamtor, viem, ze zapis do timerov, zvlast tych beziacich, je tak trochu pakaren.
Kedze to vedeli aj Microchipaci, vymysleli ficuru, kde TMRxH je bufferovany a zapisuje sa naraz so zapisom do TMRxL.
Teda kod

Kód: Vybrať všetko

movlw 012h
movwf TMR1H
movlw 034h
movwf TMR1L
Sposobi, ze sa do 16-bitoveho timeru zapise hodnota 1234h v okamihu, ked sa vykonava druhy movwf. Ak by to tak nebolo, mohlo by sa stat ze medzi jednotlivymi pristupmi do timeru timer pretecie z xxFF do yy00 (xx = yy + 1), takze vo vysledku by bolo v timeri zapisane 1334h.
Podobny mechanizmus plati aj pre citanie timerov - vid prislusna kapitola v datasheete.

Preto som si aj v C-cku (tymto povyseneho do funkcie sikovnejsieho assembleru) zvykol to timerov zapisovat takto:

Kód: Vybrať všetko

TMR1H = 0x12;
TMR1L = 0x34;
Mozno je to zbytocna opatrnost, mozno to ma kompilator nejako osetrene, ale ja vdaka tomu lepsie spavam.
0

Používateľov profilový obrázok
petersno
Ultimate člen
Ultimate člen
Príspevky: 2774
Dátum registrácie: 06 Aug 2011, 00:00
Bydlisko: ba
Vek: 63

Re: mplab

Príspevok od používateľa petersno » 29 Apr 2013, 20:11

nedokazem posudit, ci to kompilator osetrene ma alebo nie. skusal som to uz predtym s rovnako zlym vysledkom. teraz to iba zdokumentujem :
TMR_1.jpg
TMR_2.jpg
TMR_3.jpg
zapisom celeho int registru, aj jednotlivo L a H sa do TMR0L zapise spravne cislo, preco je ale v TMR0H 0 ?
0

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

Re: mplab

Príspevok od používateľa mato3000 » 29 Apr 2013, 20:23

chceš mi povedať, že niesi schopný zmerať čas, za ktorý sa daná operácia vykoná ? alebo počet strojových cyklov ?

Jaromír je to problém v C zistiť ?
0

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Re: mplab

Príspevok od používateľa jaromir » 29 Apr 2013, 20:25

mato: nie je, simulatoru je jedno ci simuluje strojovy kod vytvoreny z assembleru, C-cka alebo kompilatora brainfuck-u.
Ale trochu sa stracam v probleme ktory sa riesi.
0

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

Re: mplab

Príspevok od používateľa mato3000 » 29 Apr 2013, 20:30

no ja som chcel nech zmeria kolko krokov spraví MCU pri tom počítaní. Chcem sa trochu duševne uspokojiť :D . tiež presne nepoznám dôvod prečo to chce takto robiť, ale aspoň mu ukážem že pripočítavanie 16 bit čísel neni celkom triviálna robota a o to viac ak spočítavame pohyblivý TIMER
0

Používateľov profilový obrázok
petersno
Ultimate člen
Ultimate člen
Príspevky: 2774
Dátum registrácie: 06 Aug 2011, 00:00
Bydlisko: ba
Vek: 63

Re: mplab

Príspevok od používateľa petersno » 29 Apr 2013, 20:43

jaromir :
problem je stale rovnaky : zapisem do TMR0 cislo, ale v TMR0 je po zapise nezmysel. spravanie je rovnake ci pouzijem zapis

Kód: Vybrať všetko

TMR0 = xx
alebo
TMR0L = x
TMR0H = x
k tomuto som sa dostal, ked som zistoval dovod nezhod v casovani. mozno s tymto problemom suvisi aj problem s citanim stavu TMR0L za behu programu

mato3000 :
vyzsie uz som pisal, ze je ten problem rovnaky pri zapise celeho TMR0 { int } aj pri zapise jednotlivo do TMR0L a TMR0H { byte }. pri oboch dalsich 16 bit timeroch to bez problemov funguje { aj napriek tomu, ze to mozno nieje trivialne }
0

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

Re: mplab

Príspevok od používateľa mato3000 » 29 Apr 2013, 20:49

lenže tie dalšie TIMERY nemáš zapnuté ako čítač.

ja som chcel niečo úplne iné, ale nehaj tak
0

Používateľov profilový obrázok
petersno
Ultimate člen
Ultimate člen
Príspevky: 2774
Dátum registrácie: 06 Aug 2011, 00:00
Bydlisko: ba
Vek: 63

Re: mplab

Príspevok od používateľa petersno » 29 Apr 2013, 21:21

ten timer je pouzity ako casovac. hmmm...myslel som, ze z ukazky kodu je to vidiet. alebo nieje ?
0

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

Re: mplab

Príspevok od používateľa mato3000 » 29 Apr 2013, 21:31

soory , myslel som časovač
ale na veci to nič nemení
proste každým krokom sa ti pridá 1 a pri sčítaní 16 bit čísel to trvá pár strojových cyklov inými slovami pár fosc/4 . lenže pri samotnom sčítaní sa ti každým krokom mení hodnota TIMER0, tak výsledkom je samozrejme blbosť, a ten prepočet bude buď dlhý, alebo krátky, podla toho ako sa bude načítavať ten timer. ale týmto ťa nechcem zaťažiť. proste neviem prečo to tak robíš, len proste výsledok neni nezmysel ale ani to čo chceš.

ja som chcel len vedieť , či to C využíva " 8 x 8 HARDWARE MULTIPLIER" preto som chcel vedieť kolko ti trvá spočítanie toho čísla. ale týmto som ťa nechcel zaťažovať. proste mi príde úplne normálne, že vieš spočítať čas nejakej operácie. takže nehajme to a možno ak problém lepšie popíšeš, tak ti Jaromír poradí.
0

Používateľov profilový obrázok
petersno
Ultimate člen
Ultimate člen
Príspevky: 2774
Dátum registrácie: 06 Aug 2011, 00:00
Bydlisko: ba
Vek: 63

Re: mplab

Príspevok od používateľa petersno » 30 Apr 2013, 20:32

v prilohach su obrazky zapisu do TMR0 pri vypnutom timery. v prvom priamo zapisujem cislo a zapis je v poriadku. v druhom zapisujem premennu typu union a zapis uz v poriadku nieje. v tretej prilohe je union a suvisiace typy. mam nejaku chybu v unione, alebo k comu tu vlastne dochadza ?
Prílohy
3_union.jpg
3_union.jpg (17.66 KiB) 4728 zobrazení
2_Tmr0.jpg
1_Tmr0.jpg
0

Používateľov profilový obrázok
xmilos
Ultimate člen
Ultimate člen
Príspevky: 3671
Dátum registrácie: 04 Máj 2011, 00:00
Bydlisko: Povazie

Re: mplab

Príspevok od používateľa xmilos » 19 Aug 2013, 08:57

Tak som sa pustil do PIC - ka a nez sa tym preluskam mam dotaz:
- ako je to s licenciami na MPLAB,
- kratky prehlad sucasti MPLAB, + urcenie

Dik
0

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Re: mplab

Príspevok od používateľa jaromir » 19 Aug 2013, 09:02

Aky je problem s licenciou na MPLAB? Stiahnes, nainstalujes, pouzivas podla lubovole.
0

Používateľov profilový obrázok
xmilos
Ultimate člen
Ultimate člen
Príspevky: 3671
Dátum registrácie: 04 Máj 2011, 00:00
Bydlisko: Povazie

Re: mplab

Príspevok od používateľa xmilos » 19 Aug 2013, 09:19

Nie je ziaden, len som si vsimol a este nenastudoval ponuku s nazvom "licenice"
0

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

Re: mplab

Príspevok od používateľa mato3000 » 19 Aug 2013, 09:43

je to celé freeee :wink: jedine C k tomu je platené. a napriek tomu že je to freee, má to neustále upgrady, takže je to plne a neustále udržiavané, až nestíham sledovať.
0

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Re: mplab

Príspevok od používateľa jaromir » 19 Aug 2013, 09:46

Ale prd.
C kompilatory maju aj free varianty, ale maju o nieco horsie optimalizacie oproti tym platenym. Vsetko svoje hobby projekty som urobil s tymi free verzami a pre domace pouzitie bohato stacia.
Ak by som mal robit serie vyrobkov nad 10000 kusov, zacal by som zvazovat tu plnu verziu, tam by sa mohla - mozno - oplatit.
0

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

Re: mplab

Príspevok od používateľa mato3000 » 19 Aug 2013, 09:52

to hej, pri kompilovaní jedného výpočtu v rôznych bol výsledok:

C - free 2,4kB
C - platené 1,8kB
C - platené XXXX super špica licencia cca 1,6KB

ASM - cca 600 B

toto niesú vymyslené čísla , ale reálny test, ktorý som svojho času robil. zaujímavé by bolo porovnaie rýchlostí, ale tam som sa nedostal

ešte uvediem že sa jedná o PIC rady 16, na ktoré neni C optimalizované
0

Napísať odpoveď