DEFINITIVNI: Leptani PCB po x-te

jiri@bezstarosti.cz jiri
Středa Březen 17 14:30:06 CET 2004


Tak klidne pouzivejte ASM, vzdyt na tom neni nic
zavrzeni hodneho :).

Udrzet v hlave v kontextu max. 8kB pro PIC16F877
neni velky problem. Podprogramy si nahazim do stranek
tak, abych co nejmene volal do jine a kdyz, tak si pak
dam PCLATH do pohody a udrzim i cely kod v prehledu,
tedy alespon pro mne. Chapu ze udelat smycku je
v C jaksi pohodlnejsi, ale kdyz jich napisete tisice v ASM,
absolutne Vam to neprijde. A zase pripominam,
psat komentare. Kdyz si neco zjednodusite treba
tim ze to prictete a pak odectete o jednu min, treba
kdyz prenasite pomoci FSR (INDF) a inkrementujete ho,
hned to tam napsat, stejne jako jakoukoli neobvyklost.
Dalsi vec je, ze kdyz pisu neco delsiho a uz to vidim,
ze bych mohl byt pres stranku, pisu do dalsi stranky,
proste si tam necham misto (ten zbytek stranky).
Je totiz naprosto k nicemu, ze v chipu zbyde celistve
misto volne - na funkci se to nepozna a v pripade "krize"
pisu dalsi veci jak se vejdou a obcas neco prehodim.
Neni to ani o OTP, ze se da vypalit vickrate, kdyz zbyde
misto, protoze pri nutnosti pouziti vice stranek ho stejne
zas tak moc nezbyde, aby byl chip mockrate pouzitelny.
Pokud nekdo zacina a nevejde se mu to do jedne
stranky, je moc fajn si vsude plnit PCLATH pred kazdym
volanim CALL a GOTO treba ve stylu:

MOVLW	HIGH NECO
MOVWF	PCLATH
GOTO	NECO

a s pribyvajici praxi pak uz clovek
stiha to hlidat a nemusi to cpat vsude, kde to neni potreba.
Nebo to po sobe muze take potom odstranit, kdyz uz
je uplne jasne jak to bude pracovat. Navic si na zacatek dalsi
stranky pisu ORG a i kdyz ji nepouziju, hodim tam za ORG
alespon NOP (nakonec se odstrani, kdyz je tam k nicemu
a stranka zustane volna), aby mi kompilator hned rekl,
ze jsem stranku "pretekl" a tedy neco (treba to NOP) prepsal.
Kdyz nastavuji nejake piny nebo je po jednom ctu,
nadefinuji si treba: #define OPTO PORTB,0 a pak
uz pisu jen napr BCF OPTO. Psat makra - tomu jsem taky
dlouho nemohl prijit na chut, ale je to takove zprehledneni,
ze doporucuji s tim zacit. Kdyz navic napisete program
jako hromadu podprogramu a na zacatek kazdeho zase
jak jinak poznamku co vsechno dela a znici, budete zase
v pohode a hlavni program pak vypada skoro jako ve vyssim
jazyce. Kdyz pak zjistite, ze je podprogram pouzit jen jednou,
udelate z nej makro - prehled zustane, CALL a RETURN zmizi
(ale take nemusite, kdyz na mikrosekundach nezalezi a muze
to prinest zbytecne problemy).
Kdyz rozclenite program do funkcnich bloku, ziskate tim moznost
si napsat poznamku ve stylu: "Tady jsou mi vsechny promenne
k dispozici" nebo "Mimo tohoto mohu sahat na vsechno".
Je to zase o tom, ze maloktery program dela a pouziva vsechno
najednou, tedy misto se pouziva a uvolnuje a to je dobre
dokumentovat - clovek pak vi co muze prepsat, kdyz ma kolikrate
tak zoufale malo mista a da se leckdy vhodnou konstrukci
programu usetrit i na chipu (staci lacinejsi).
Kazdy program nez zacnete psat si rozmyslete, co bude delat
a alespon zhruba jak. Nemusite kreslit vyvojaky (i kdyz nekdy
je to nejprehlednejsi), ale je fajn vedet, ze vystupy z neceho
nesouvisi s necim jinym a daji se zrusit, kdyz se udelaji
souvisejici veci hezky ve spravnem poradi.

ASM chce styl, ktery se buduje u kazdeho z nas tak odhadem
ze zasadniho hlediska alespon prvniho pul roku a pak uz se jen
jemne tribi. Pozdeji uz to jde samo. Naco C ? Cas mi to moc
neusetri, protoze co delam porad uz mam v nejakem kodu jiste
udelane, tak to zkopiruju (a nebudu misto svych chyb hledat
chyby kompilatoru). Kod z kompileru sezere pamet navic (i kdyby
ji nebylo mnoho), bude to pomalejsi a cert vi, kdy to klekne
na nejakou pripadnou nedokonalost kompileru.

Navic je ASM vetsinou zdarma, tedy i pro zacatecnika je to
nejdostupnejsi co muze byt, tak proc tim i nezacit.
Alespon lepe pochopi, o cem vlastne ten chip je a co ten
chip muze skoro sam a co se musi napsat jako soft.

Proste mam ASM rad - nakonec je to asi videt :)
a verte mi, ze se i v nem da psat prehledne a i rychle.
Nakonec kdyby to neslo, asi bych uz umrel hlady :).

--
Jiri Bezstarosti


-----Original Message-----
From: Michal G. [mailto:MichalGregor@seznam.cz]
Sent: Thursday, June 27, 2002 5:10 PM
To: hw-news@list.gin.cz
Subject: C nebo asembler?


Tak jsem se nechal zl?kat na C, ale narazil jsem na spoustu probl?mu,
v?t??ch ne? je psan? v asembleru. Kompil?tor od HI-TECHu pot?ebuje nastavit
mili?n parametru a nav?c nefunguje linker.
Zkou??m jednoduch? program a n?jak jsem se neve?el do banku0 u PIC16F877. 
Po p?eveden? prom?nn? na static bank2... se mi objevilo spousta varov?n?
"271: arithmetic overflow in constant expression (warning)" a program
p?estal fungovat
Co s t?m? Je to n?jak? skryt? chyba v HI-TECH PICC?
 
Program za 800 USD a nedok??e si sam namapovat prome?nn? do jin?ch RAM
banku. Za tak velkou sumu pen?z m?lo muziky.
Michal





Další informace o konferenci Hw-list