Kui see on Sinu esimene külastus, siis tutvu
palun korduma kippuvate küsimustega klikates selleks ülal asetseval lingil. Enne uue postituse lisamist pead Sa registreeruma.
Postituste lugemiseks vali meelepärane foorum allpool olevast nimekirjast.
Teade
Collapse
Foorumi reeglid.
Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
Korrutamine ja jagamine, eriti murdarvude puhul, polegi nii lihtsad. Näiteid leiab Scott Dattalo lehelt (tehete teostamine), muu koodi pead vist ise kirjutama.
- Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
- Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!
lisana niipalju, et oli mõeldud korrutamine ja jagamine konstandiga. Iseenesest peaks see ju lihtsam olema, ning korrutamise kohta konstandiga oli vist ju ka käsk. Või on ikkagi keerulisem, kui esialgu paistab?
Vist on keerulisem. PIC oskab korrutada 8-bitist täisarvu, ei enamat.
- Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
- Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!
aritmeetikat mikrokontrollerile on möistlik C keeles kirjutada. kehvem pool asja juures on, et math. ja stdio. täis ( ujukomatoega) teegid vötavad yksjagu mälu, ntx AVRi puhul 2-4kB.
Võid ttõmmata programmersheaven.com -ist FPmath'i. Seal on kõik vajalikud asmi libraryd olemas. Võin pakkuda ka koodinäidet.
- Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
- Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!
Kui kuidagi võimalik, siis tegutse täisarvudega. Sobivad ka fikseeritud komaga arvud, st arvutad arvudega nagu täisarvudega ja pärast arvestad nende komakohti...
Ehk puust ja punaselt on parem...
Kui meil on vaja näiteks d=0,01m ringi ümbermõõtu leida, siis me võime tegeleda näiteks millimeetrites, d=0010mm. Pi võime võtta ka näiteks 314, siis saab neid korrutades 3140. Teades enne tehtud koma nihutusi d puhul 3 ja pi puhul 2 kohta paremale(korrutamise tulemus siis 5 kohta paremale), võime tulemust mõista kui 0,0314mm
Nüüd aga teeme sama asja kahendsüsteemis... Eeldame, et täpsusest 8 bitti piisab, seega võtame igast arvust 8 bitti. Võtame jällegi d=0,01(10)m ~ 0,000000101001(2)m. otsustame nihutada koma näiteks 14 kohta paremale, saame 10100100. See on väga tähtis samm, sest siin tuleb arvestada kui suuri ringisid edaspidi saab programmile ette anda. Samamoodi pi on umbes 1,1001001, selle koma läheb 7 kohta paremale, seega 11001001. Nüüd siis korrutame ja saame 1000000011000100 (siin siis 16 bitti, sest 8x8 bitti tehe). Siin nihutame siis koma uuesti 21 kohta vasakule tagasi, saame 0,000001000000011000100, mis on umbes 0,03144... Kui sellisest täpsusest ei piisa, siis tuleb lihtsalt võtta algoperandid suurema täpsusega ja tehteid kombineerida, st meil on arvud mingis hulgas 8-bitises baidis; korrutame mõlema arvu kõik baidid omavahel läbi ja paneme tulemuse õigetesse baitidesse (näiteks kui lähteoperandid on 2B=16b, siis tulemus tuleb juba 4B).
Kui su sisendiks on kümnendarv ja väljundiks ka kümnendarv, siis võid kasutada ka BCD (binary coded decimal, vaata näiteks guuglist või wikipediast) formaati. Kuigi sellega ei ole operatsioonid nii kiired, on seda märksa lihsam mõista. Lihtsalt iga numbri igast arvust paned omaette baiti ja kui tehet tuleb teha, siis teed nagu koolis õpetati paberi peal korrutamist... Et Tulemuse parempoolse numbri annab lähteoperandide parempoolsete numbrite korrutis; sealt võib tekkida ülekanne mille liidame eelviimasesse jne jne jne. Jällegi tasuks teha fikseeritud komaga, st kokkuleppeliselt on koma mingi koha peal kinni ja kõik tehted tehakse ilma selle komata ja pärast lihtsalt kokkuleppe järgi on tulemuses ka mingi kindla koha peal koma.
aritmeetikat mikrokontrollerile on möistlik C keeles kirjutada. kehvem pool asja juures on, et math. ja stdio. täis ( ujukomatoega) teegid vötavad yksjagu mälu, ntx AVRi puhul 2-4kB.
Kui ebavajalik välja visata, saab ka vähemaga hakkama. Progege asmis, M$ stiilis koodiraiskamine jääb ära
- Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
- Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!
Kui ebavajalik välja visata, saab ka vähemaga hakkama. Progege asmis, M$ stiilis koodiraiskamine jääb ära
on sellele väitele peale isikliku arvamuse ka muud argumenti ?
hinnavahe 4KB ja 8KB kontrolleril on 2-3 krooni. ajakulu vahe samapalju kordades. asmis pusimine pole isegi taseme näitamine, vaid lihtsalt möttetu paigaljooks. see ei tähenda, et asmi ei peaks tundma, suure osa softi vigu leian ikkagi nii et jälgin C-st genereeritud Asmi listingut.
aga mingi CISC arhitektuuriga prose, DSPst rääkimata, ASMis progemist kyll ette ei kujuta.
kui jöuad 10.da kontrolleriplatvormini, hakkad möistma.
Igal asjal on oma koht. Lihtsalt uurisin üht IR-puldi koodi, mis algselt C-s. Mina kasutasin tema asm-i listingut ja ... lõpuks kirjutasin puhtalt ümber sest algne kood oli mõttetult keeruliseks aetud.
Suure mahuga koodi puhul on asi ilmselt teine, võimalik et ka PICi arhitektuur põhjustas "ümber nurga" koodi.
- Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
- Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!
pole koodi mida ei saaks lyhemaks vöi kiiremaks optimeerida, ka Sinu oma. iseasi, on selleks vajadust ja öigustust. enamasti mitte, ikka ootab soft kusagil mingi syndmuse juhtumist. hea insener peab oskama öige algoritmi leida, see annab läbipaistvuse ja koodi effektiivsuse, selle eest saab insener palka. mida annab ja keda huvitab kui suudad Linuxi enam kui gigabaidise lähtekoodi kompilatsioonist paar baiti kokku hoida ? kui seda juttu ajaks suva vend foorumist, mind ei huvitaks. kui aga inime kes vist "rauakoolist" palka saab, siis olen hämmelduses, arhitekte, kelleks elektroonikainsener kahtlemata on, soovitatakse tegama hakata myyrseppa tööd, ehk saab 3 tellist kokku hoida.
viimati muutis kasutaja raivo; 14 June 2006, 19:50.
Ma arvan, et see jutt kipub minema algsest küsimusest liiga kaugele ja mõtet on sama vähe, kui vaielda teemal: kumb on parem, kas Linux või MS$. Igaüks jääb nagunii oma arvamuse juurde ja eks ole ju nii, et iga asi sobib just oma kohale. Rõhuv enamus kirjutab C-s (või mõnes muus kõrgkeeles), ju siis nii on hea. Mulle jälle meeldib asm, saan teha täpselt seda, mida tahan ja millal tahan. Noh, vigu kindlasti ka aga millises keeles neid ei annaks teha.
Samuti eelistan pigem mudida koodi kui et võtta kiirem prose. Otse asmis kirjutades tihtipeale saab kiiremini. Näiteks video lugemisel (mitte pildisignaali aga ühe radarseadme väljundi). Ühesõnaga - mingist prosest viimase välja pigistamine on väljakutse, sama asja Basicus valmis viskamine aga mitte. Vähemasti minule.
Sorry, et üldse selle teema üles võtsin, see oli mõttetu.
PS. Ma ei ole Rauakooli (kui Sa mõtled ajakirja rubriiki) palgal, nupukeste eest makstakse honorari küll.
- Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
- Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!
Poisid,ärge nüüd tülli minge!Vaidlustes selgub ju tõde.Teie vaidlused on mulle kui päris algajale headeks õpetusteks.Ise alles alustan progemisega. Mõne PICi või AVRi tahaks kül oma käe järgi käima panna.See teise mehe dumbi pealt käima laskmine on käkitegu aga tahaks ise mingit lülitus aega või temperatuuri vahemikku muuta nii kuidas endale vajalik.Hetkel ainuke norm koht kus migagi asjalikku vaidlustes selgub ja kust on midagi õppida.
Nii et jõudu asjalikeks vaidlusteks ja näpunäideteks.
Asmis kirjutamine on tõesti aeganõudvam kuid pakub seejuures progejale suuremat rahuldust. Ja tööst rahulduse saamine on olulisem kui palk, vähemalt pikemas perspektiivis.
Aga enamus elektroonikuid on ikkagi müüriladujad, mitte arhitektid. PIC plärts... register plärts... LED driveri kivi plärts .... optron plärts...
Ei ole siin mingit arhitektuuri
Comment