<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><font face="Arial">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 </font></p>
<p><font face="Arial">nahodit bit portu,</font></p>
<p><font face="Arial">výsledek výoočtu PWM uložit do časovače a ten
spustit a zjistit stisknuté tlačítko (procesor neměl hw pwm)<br>
</font></p>
<p><font face="Arial">jakmile doběhl, vyvolal další přerušení, které
ten bit shodilo (to už bylo snadné) <br>
</font></p>
<p><font face="Arial">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.</font></p>
<p><font face="Arial">Hlavní smyčka obsluhovala výpočty a zobrazení.</font></p>
<p><font face="Arial">Největší obklička byla vejít se s daty do
256byte RAM <br>
</font></p>
<pre class="moz-signature" cols="72">Martin Záruba</pre>
<div class="moz-cite-prefix">Dne 24.4.2024 v 20:50 Pavel Hudeček
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:df137300-0c67-4230-b05a-1e8728ea3397@seznam.cz">No to
bylo vlastně podobné, jako dnes s těmi floaty:
<br>
Tehdy byl v módě strach z použití přerušení:-)
<br>
<br>
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á.
<br>
<br>
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ší.
<br>
<br>
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ů.
<br>
<br>
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:-)
<br>
<br>
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ží:-)
<br>
<br>
PH
<br>
<br>
Dne 24.04.2024 v 16:20 Petr Labaj napsal(a):
<br>
<blockquote type="cite">Jen pro zajímavost: nepřišel jste pak na
to, kde byla chyba v tom původním algoritmu?
<br>
<br>
PL
<br>
<br>
*****************
<br>
<br>
Dne 24.4.2024 v 15:42 Pavel Hudeček napsal(a):
<br>
<blockquote type="cite">Tohle mi vždycky připomene můj první
komerční projekt v C:
<br>
Předělat zlobící elektronický úhloměr. Deska plná součástek, v
ní MCU s programem v asm.
<br>
<br>
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.
<br>
<br>
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, ...
<br>
<br>
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á.
<br>
<br>
PH
<br>
<br>
Dne 24.04.2024 v 13:46 Petr Labaj napsal(a):
<br>
<blockquote type="cite">Tak určitě je možné nemuset tolik
přemýšlet a chytrý algoritmus nahradit hrubou silou.
<br>
Když se dívám na nějaký cizí projekt, tak si interně dělím
autory do škatulek:
<br>
<br>
- vidím optimalizovaný program, s nápaditými řešeními, které
člověka jen tak na první dobrou nenapadnou
<br>
Kategorie "klobouk dolů"
<br>
<br>
- program s optimalizovanými algoritmy a datovými typy
<br>
Kategorie "dobrý programátor"
<br>
<br>
- program napsaný bez velkého rozmyslu, např. se zbytečným
použitím float/double kde být nemusí, nepromyšlené algoritmy
<br>
Kategorie "programátorský dělník, produkt moderního
školství"
<br>
<br>
- program, využívající na kdejakou blbost externí knihovny,
nejlépe ještě nějaké obskurní a vyžadující kýbl závislostí
<br>
Kategorie "..bil"
<br>
<br>
Je to ale jen mé soukromé a subjektivní dělení, se kterým
jistě nemusí spousta lidí souznít.
<br>
Asi je to tím, že jsem začínal na slabých strojích a mám rád
rychlou odezvu techniky.
<br>
<br>
PL
<br>
<br>
******************
<br>
<br>
Dne 24.4.2024 v 7:57 Jaroslav Buchta napsal(a):
<br>
<blockquote type="cite">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.
<br>
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.
<br>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
_______________________________________________
<br>
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<br>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<br>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
<br>
</blockquote>
<br>
_______________________________________________
<br>
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<br>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<br>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
<br>
</blockquote>
</body>
</html>