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