Float na 8bit - minitest
Pavel Hudeček
edizon na seznam.cz
Středa Duben 24 20:50:26 CEST 2024
No to bylo vlastně podobné, jako dnes s těmi floaty:
Tehdy byl v módě strach z použití přerušení:-)
On tam měl dokonale optimalizovanou smyčku, která dělala všechno. Jenže
tenhle způsob je prostě hrozně omezující a asi měl smysl někdy kdysi,
kdy režije spojená s častým přerušením byla vysoká.
Přitom byl stejná věková kategorie. Asi je to tak učili ve škole od
starého profesora. Mě naopak přišlo samozřejmý, že už dávno na ZX
Spectru, se Z80, instrukčním cyklem 3,5 MHz/12 a 50% halt na
zobrazování, se normálně používalo přerušení Vsync 50 Hz a nevypadalo,
že by vadilo mít řádově rychlejší.
Tak mi tam skákaly 4 přerušení, 1 kHz na multiplex a čekání + dvě od
obou hran obou IRC signálů a myslím 8 Hz od RTC timeru. Hlavní smyčka už
jen čekala na stisk tlačítka a mezitím převáděla přerušením spočítané
pulzy na stupně, desetiny a setiny, nebo minuty. A když se dlouho nic
nedělo, začala zobrazovat kolik je hodin. Případně sleep, když vypadne
napájení ze zdroje. Nebo, když se někdy dočkala stisku tlačítka, tak
přepínání setiny/minuty, 12/24 hod, seřízení hodin, kalibrace úhlů.
Pak byla ještě ta vtipná věc, kdy jsem si řek, že malinkej krystal
32,768 kHz je určitě horší než velkej 16 MHz a že teda v zaplým stavu se
bude čas přičítat v tom kHz přerušení ... nenastalo zlepšení, ale
zhoršení ... aha ono to neběží na krystal, ale na RC ... aha nastavení
timeru jsem pochopil správně a nesoulad vypočítané hodnoty s realitou
měl poněkud jinej původ:-)
Nakonec se prý ještě někdo ptal, co že je tam teď za čidlo, když to
původní mělo 500 kroků na otáčku a on ze 4x větší kalibrační konstanty
vydedukoval, že teď je 2000 a jestli se to kvůli němu nezdraží:-)
PH
Dne 24.04.2024 v 16:20 Petr Labaj napsal(a):
> Jen pro zajímavost: nepřišel jste pak na to, kde byla chyba v tom
> původním algoritmu?
>
> PL
>
> *****************
>
> Dne 24.4.2024 v 15:42 Pavel Hudeček napsal(a):
>> Tohle mi vždycky připomene můj první komerční projekt v C:
>> Předělat zlobící elektronický úhloměr. Deska plná součástek, v ní MCU
>> s programem v asm.
>>
>> Při pohledu do zdrojáků jasná kategorie "klobouk dolů". Všechno
>> dokonale optimalizované, líp to nejde. Byl tam nějakej dost
>> frajerskej zp;sob, jak zároveň měřit inkrementálními čidly i
>> zobrazovat na displeji s multiplexem. Jenže celkovej výsledek byl, že
>> při trochu rychlejším otáčení rukou poblikával displej, při
>> neopatrném cuknutí ztracené impulzy. V elektronice dokonale ošetřené
>> zákmity a další věci.
>>
>> Napsal jsem to v C, ve kterém jsem ještě moc neuměl. Ale protože jsem
>> vymyslel jak má správně fungovat celek, dopadlo to tak, že se v
>> baráku nenašla vrtačka, která by byla tak rychlá, aby zp;sobila
>> jakýkoli problém. Jsem si jist, že jsem za ktratší dobu dosáhnul
>> nesrovnatelně lepšího výsledku než předchůdce. A bylo to proto, že
>> jsem nevymýšlel kolo, šroubek, ... ale vymýšlel auto, ve kterém jsou
>> kola, šroubky, ...
>>
>> A z původní elektroniky zbyl ptrakticky jen procesor, protože můj
>> program není citlivej na zákmity a ještě přitom zastane funkci RTC.
>> Vlastně až v téhle fázi jsem zjistil, že můj program běží na 1 MHz a
>> připojený 16 MHz krystal nepoužívá.
>>
>> PH
>>
>> Dne 24.04.2024 v 13:46 Petr Labaj napsal(a):
>>> Tak určitě je možné nemuset tolik přemýšlet a chytrý algoritmus
>>> nahradit hrubou silou.
>>> Když se dívám na nějaký cizí projekt, tak si interně dělím autory do
>>> škatulek:
>>>
>>> - vidím optimalizovaný program, s nápaditými řešeními, které člověka
>>> jen tak na první dobrou nenapadnou
>>> Kategorie "klobouk dolů"
>>>
>>> - program s optimalizovanými algoritmy a datovými typy
>>> Kategorie "dobrý programátor"
>>>
>>> - program napsaný bez velkého rozmyslu, např. se zbytečným použitím
>>> float/double kde být nemusí, nepromyšlené algoritmy
>>> Kategorie "programátorský dělník, produkt moderního školství"
>>>
>>> - program, využívající na kdejakou blbost externí knihovny, nejlépe
>>> ještě nějaké obskurní a vyžadující kýbl závislostí
>>> Kategorie "..bil"
>>>
>>> Je to ale jen mé soukromé a subjektivní dělení, se kterým jistě
>>> nemusí spousta lidí souznít.
>>> Asi je to tím, že jsem začínal na slabých strojích a mám rád rychlou
>>> odezvu techniky.
>>>
>>> PL
>>>
>>> ******************
>>>
>>> Dne 24.4.2024 v 7:57 Jaroslav Buchta napsal(a):
>>>> Jo, taky mi prijdou obavy z float prehnane, ono to v principu tak
>>>> slozite neni, navic jsou jen bitove posuvy mantisy pred a po
>>>> operaci a nejaka logika se znamenkem a exponentem. Komfort prace s
>>>> cisly je pak o level jinde.
>>>> A pokud uz je nutny double, tak narocnost zakladnich operaci bych
>>>> si tipnul roste spis linearne nez rychleji, cili na cca dvojnasobek
>>>> , jine to bude u funkci typu sin, cos, log... ale zase asi jen
>>>> vyssi pocet iteraci.
>>>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list