Cim zacit ? otazka zacatecnika

jiri@bezstarosti.cz jiri
Středa Březen 17 12:07:39 CET 2004


Zdravim.

Priznavam, ze jsem u 51uz take aplikaci v C napsal a pak
jsem schanel po vsech certech 51 s 32kB OTP. V te dobe
to byl porod a aplikace musela byt opravdu chranena, takze
externi pamet nepripadala v uvahu. Kdybych to tehdy
napsal v ASM, urcite by se mi to veslo do tehdy uz celkem
dostupneho AT89C55 s 20kB FLASH, ale je fakt, ze by mi
asi zakaznik na to nevydrzel cekat. A to je cely kamen urazu.
Radeji pisi v ASM, ale kdyz je to velke a musi to byt hodne
rychle a je v tom hodne propleteych veci, je fakt C prehlednejsi
a produktivita asi i vyssi - tedy spise bez asi.
Ale pro rizeni veci v realnem case, kde je kazdy cyklus dobry
i pri vyssim taktovani, je ASM neprekonatelny :-).

BTW, pro nas drive narozene je asi bibli C primo prvni preklad
ucebnice C od autoru C, tedy panu Kerninghama a Ritchieho,
popripade original :-).

--
Jiri Bezstarosti


-----Original Message-----
From: Pavel Lajsner [mailto:Pavel.Lajsner@motorola.com]
Sent: Wednesday, November 07, 2001 6:33 PM
To: hw-news@list.gin.cz
Subject: RE: Cim zacit ? otazka zacatecnika


Ahojte,

dovolte mi, pripojit se do polemiky ohledne typu procesoru, assembleru,
instrukci, atd.

Dle meho soudu, samotna jadra, resp. kod, ktery na nich pracuje se nijak
dramaticky od sebe nelisi, instrukce jsou v zasade stejne, jen se jinak
jmenuji, ten ma navic toto a tamten umi zase tohle. Pokud neni jadro
vylozene *blbe*, tak prumerny vysledny, dobre napsany, kod (nezavisly na
periferiich) bude na vsech jadrech stejneho razeni (napr. 8 bitu) podobne
dlouhy a podobne rychly (pri ekvivalentnim nataktovani). (Prosim nekamenujte
mne, ze ten je o 10% delsi nez onen, myslim to v principu - v 1k 8-mi
bitovych intrukci je ulozeno 'podobne' mnozstvi informace a proto i vysledek
by nemel byt az tak prilis odlisny.)

Myslim si, ze co cini velke rozdily mezi jednotlivymi jednocipy, je to,
jakymi periferiemi ve vybaven a tedy, kolik prace, kodu a casu tyto usetri
hlavnimu programu. Cena, programovaci moznosti, moznosti zakoupeni, podpora
vyrobcem, podpora dalsimi uzivateli (freeware) a zvyklosti jsou pak dalsimi
paramtetry, ktere dozajista ovlivnuji vasi volbu.

Neposledni vec a vlastne to, proc sem pisu, je to, co tu uz par krat
zaznelo - tedy ze i na 8 bity lze psat efektivne kod v jazyce C!
Pokud to nebyla pravda pred par lety, tak dnes je to fakt, na nejz si ne
vsichni zvykli. Pro 8 bit, lze psat velmi dobre kod, mnohdy i efektivneji
nez v ASM (... uz vidim, jak mne kamenni priznivci osoci). Pokud ale vezmeme
v uvahu celkove usili pro psani, debugovani, upravovani a zefektivnovani
celeho vysledku, casto je C program hotov podstatne drive (z mensim usilim)
nez jeho ekvivalent v ASM. Nehlede na to, ze v C je jiz mnoho napsano a
staci to najit a pouzit (napr. ze zdrojoveho kodu Linuxu). Pripadna
portabilita z jednoho MCU na jiny takyobcas neni k zahozeni ;-) Nic proti
ASM (sam jej obcas pouziji), ale svet je nekde jinde, nez abychom tu
pitvali, ktera instrukce dela to ci ono (cimz nerikam, ze neni treba
instrukcni sadu daneho procesoru znat, naopak).

Pro drtivou vetsinu jednocipu uz dnes existuji velmi kvalitni kompilatory,
velmi casto i coby shareware nebo freeware, takze se domnivam, ze nic
nebrani tomu, zacit psat software v C. Staci nebat se a zacit! Verim, ze kdo
to zkusi, jiz se nebude chtit vratit zpet.
Pro zacatek vrele doporucuji knizku Ucebnice jazyka C od Pavla Herouta,
nakladatelstvi Kopp, ktera je sice primarne psana pro PC, ale pro embedded
svet je tez skvele pouzitelna. Osobne ji schledavam jako to nejlepsi nebo
aspon nejdidaktictejsi, co v cestine dosud vyslo.

Mimochodem, ja osobne zacinal s ASM na Z80 (kdepak je konec nasim Sinclairum
;), pak neco malo s 8080, 8051, pak ASM na Motorolackych 68HC05, az jsem
nyni u Ccka u 68HC08, tedy to mne zivi a je to i moje hobby.
Pokud jste napr. v Prakticke elektronice zahledli meteo stanici a na ni
navesene moduly, vezte, ze veskery software je psan v Ccku. Muzete si jej
prohlednout na http://www.qsl.net/ok2ucx. Nekladu si narok na perfektnost a
krasu kodu, proste je to napsano, jak mi zobak narost'  a obcas to i funguje
;-)

Co rikate vy? Pustite se do C?


Pavel Lajsner

(HC08, 5 dni v tydnu, 12 mesicu v roce, uz 6 let ;-)

-----Original Message-----
From: owner-hw-news@list.gin.cz [mailto:owner-hw-news@list.gin.cz]On Behalf
Of Marcel Klein
Sent: Wednesday, November 07, 2001 4:10 PM
To: hw-news@list.gin.cz
Subject: Re: Cim zacit ? otazka zacatecnika




> Ja jsem s jednocipy zacinal relativne nedavno (ani ne pred rokem), takze k
> tomu mam celkem co rict. Rozhodoval jsem se v podstate pouze mezi ATMELEM
a
> PICem (kvuli dostupnosti). Rozhodl jsem se pro PIC hlavne z techto duvodu:
>
> - celkem dobra literatura v cestine (anglicky tak moc nevladnu), casto
> vylozene urcena pro zacatecniky.
>
pokial aspon ako tak viete po anglicky, tak vam to je jedno...

> - primitivni programator. Tohle je dost dulezity, chtel jsem si s tim
zacit
> hrat (doufam ze me dvojsmyslnaci nebudou brat za slovo) a nechtelo se mi
> nejdriv stavet nejaky slozity programator. Dluzno dodat, ze prave na tom
> uplne nejjednodussim (nejaky 2 diody a 2 odpory) jsem prvni PIC poslal do
> vecnych lovist. Pak jsem postavil JDM programator (prace tak na 2 hodiny a
> cena asi 50 korun) a ten beha perfektne. Vyhodou je i In-Circuit
> Programming, kdyz clovek zacina, tak proste potrebuje porad neco zkouset a
> neustale prehazovat svaba mezi programatorem a aplikaci je pekna pakarna.
neprehanal by som to, je to jednorazova investicia, a ked ho uz mate je vam
to jedno.

> - priferie primo na chipu.
>
> Na ty prvni pokusy jsem samozrejme pouzil 16F84, ted delam uz druhou
> aplikaci s 16F873 a docela se mi libi.
>
> Nemuzu porovnavat s jinyma procesorama, ale na PICu mi nejvic vadi 2 veci:
>
> - strankovani pameti, to je opravdu pakarna
>
> - assembler. V tom se pripojuju k predchozim prispevkum, nejak si na nej
> nemuzu zvyknout. Asi nejvic potizi mi dela syntaxe instrukci BTFSS a
BTFSS,
> proste uvaha typu "pokud neco plati (resp. neplati), neudelej neco" mi
jaksi
> nejde pres logiku uvazovani a vzdycky nad tim musim hodne premyslet.
> Pripomina mi to legendarni Nekudovu vetu "nemuzu nerict, ze te nemam
nerad".
> Taky je tech instrukci na muj vkus docela malo, ale celkem bez problemu
jsem
> si na vetsinu veci vytvoril makra.
>
Je to presne ako pisete(este by som pridal to zname MOVWF/MOVLF a samotny
reg. W), tak prave koli tomuto mi PIC nesedi a kedze stale robim aj s inymi
jednocipmi, tak si na to asi nikdy nezvyknem. Tympadom na atmela napisem
program v kratsom case.

> Jinak bych PIC pro zacatecnika klidne doporucil, asi hlavne kvuli
> dostupnosti literatury.
>
> Dusan Dolezal

Vysledok je asi ten ze zalezi na osobnosti (anglictina, zvyk z ineho uP...)
a potom na zdrojoch ktore su po ruke (knihy, dokumentacie) a na samotnej
aplikaci. Myslim si ze dotycny ma po tychto diskusiach dost informacii na
to, aby sa mohol rozhodnut....
Marcel

>
> -----Original Message-----
> From: owner-hw-news@list.gin.cz [mailto:owner-hw-news@list.gin.cz]On
Behalf
> Of Jaromir Subcik
> Sent: Wednesday, November 07, 2001 10:29 AM
> To: hw-news@list.gin.cz
> Subject: Re: Cim zacit ? otazka zacatecnika
>
>
> >     Diskuze na toto zaj?mav? t?ma sklouzlo nekam ?plne jinam. Vsichn? se
> > tady bav? o rozd?lech v psan? asembleru, coz asi vypl?va z jejich
> > pohodlnosti naucit se neco nov?ho. (prejdete na C)
>
> No, nemusi to byt jen pohodlnost, spise naopak v C se pise snadneji, ale
> problem nastane v okamziku zpracovani napr. serioveho kodu (ne RS232, ale
> obecne) zatizeneho sumem v realnem case. Pokud se ale nebude vyuzivat
> procesor na hranici (nebo za hranici?) svych moznosti, pak je C
jednoznacne
> lepsi nez assembler.
>
> >     To podstatn? se ale ztratilo -> c?m zac?t?
>
> To jednoznacne zalezi na tom, co chci delat, pripadne co jsem se uz nekde
> ucil nebo zkusil. Ja odrostl na Intelu (8080, 48, 51,96), zkusil Zilog
(Z80)
> a Atmel (2051, AVR), ted mne zivi PIC a TI.
>
> Kazdy procesor (rada) ma sve - od Intelu a klonu 51 jsem odesel hlavne
kvuli
> dobe zpracovani instrukce a slabe log.1 (nekde to naopak muze byt vyhoda -
> nemusim se starat o prepinani smeru).
> AVR se mi docela zalibily, ty bych docela mohl doporucit, AVR Studio
> (zdarma) je docela pouzitelne, programator pro zacatek treba z HW.
> U PIC mi vice vyhovuji integrovane periferie, silne vystupy a jednoduchy a
> vykonny (i kdyz nezvykly) assembler. MPLAB (taky zadarmo) je pomerne
> povedeny soft, programatory zde byly popsany jiz mnohokrat. Pro ladeni
> nabizi ted ASIX velmi levny HW emulator pro 16x84 - to by pro zacatek taky
> nebylo spatny.
>
> Zaver - asi bych se pro zacatek rozhodoval pouze mezi PIC a AVR a to
hlavne
> podle dostupnosti podpory (napr. kamaradu v okoli).
>
> Jarda
>
>





Další informace o konferenci Hw-list