Float na 8bit - minitest
Martin Záruba
swz na volny.cz
Čtvrtek Duben 25 08:07:32 CEST 2024
Naprosto stejně jsem to kdysi udělal na AT89C4051. I ten reagoval
zásluhou použití přerušení bez problému. Tam sice nejrychlejší přerušení
bylo od průchodu sítě nulo, čili po 10mS, jenže v tom přerušení bylo
potřeba
nahodit bit portu,
výsledek výoočtu PWM uložit do časovače a ten spustit a zjistit
stisknuté tlačítko (procesor neměl hw pwm)
jakmile doběhl, vyvolal další přerušení, které ten bit shodilo (to už
bylo snadné)
No a pak tam byla obsluha multiplexu displeje, byl třímístný a trošku
blikal, protože přepínal po těch 10mS, tedy s frekvencí 33Hz.
Hlavní smyčka obsluhovala výpočty a zobrazení.
Největší obklička byla vejít se s daty do 256byte RAM
Martin Záruba
Dne 24.4.2024 v 20:50 Pavel Hudeček napsal(a):
> 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
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20240425/d6fbbf7d/attachment.htm>
Další informace o konferenci Hw-list