mplab
Moderátori: psichac, Moderátori
Re: mplab
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
osvitka: http://tinyurl.com/7e58nul
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
Re: mplab
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
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
0
osvitka: http://tinyurl.com/7e58nul
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
Re: mplab
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
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
Re: mplab
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
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:
Mozno je to zbytocna opatrnost, mozno to ma kompilator nejako osetrene, ale ja vdaka tomu lepsie spavam.
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
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;
0
Re: mplab
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ť ?
Jaromír je to problém v C zistiť ?
0
osvitka: http://tinyurl.com/7e58nul
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
Re: mplab
no ja som chcel nech zmeria kolko krokov spraví MCU pri tom počítaní. Chcem sa trochu duševne uspokojiť . 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
osvitka: http://tinyurl.com/7e58nul
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
Re: mplab
jaromir :
problem je stale rovnaky : zapisem do TMR0 cislo, ale v TMR0 je po zapise nezmysel. spravanie je rovnake ci pouzijem zapis 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 }
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
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
Re: mplab
lenže tie dalšie TIMERY nemáš zapnuté ako čítač.
ja som chcel niečo úplne iné, ale nehaj tak
ja som chcel niečo úplne iné, ale nehaj tak
0
osvitka: http://tinyurl.com/7e58nul
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
Re: mplab
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í.
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
osvitka: http://tinyurl.com/7e58nul
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
Re: mplab
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 ?
0
Re: mplab
je to celé freeee 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
osvitka: http://tinyurl.com/7e58nul
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
Re: mplab
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.
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
Re: mplab
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é
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
osvitka: http://tinyurl.com/7e58nul
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2