<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Zvykl jsem si na standard, že mám nějaké časovací přerušení, obvykle
1 kHz, kde se přičítá nějaká proměnná a nastavuje druhá, která říká
že bylo. Pak je v něm ještě interní čítač, který když dojde k 1
sekundě, nastaví že byla sekunda.<br>
<br>
Pak mám čekací funkci, která čeká požadovaný čas s pomocí tý čítací
proměnný. Zároveň se ale při ní dělá spousta dalších věcí, které se
mají dít na pozadí. Takže tam je sekce která proběhne když byla ms,
další když byla sekunda, další když byl cyklus ADC, ... a právě v tý
sekci ADC, nebo ms, mám tlačítka (často jsou připojený ve větším
počtu na 1 nohu ADC).<br>
<br>
V tomhle místě testuju hodnotu tlačítek a jak dlouho trvá nezměněný
stav. Když tahle doba překročí limit (50-200 ms), nastaví se podle
toho stavu proměnná se stavem tlačítka pro další využití. Občas
používám i tu interní informaci, jak dlouho stav trvá, resp. lze při
změně uložit nejen co bylo původně, ale i jak dlouho to trvalo.<br>
<br>
Když chci třeba čekat na tlačítko, mám na to funkci, která nejdřív
čeká až není stisklé a potom zas než je stisklé. Stav už bere z tý
proměnný co se přepisuje hlavní čekací funkcí a tu volá dokola.<br>
<br>
Sice to takhle dělám v C++, ale kdybych byl nucen zas někde použít
asm, udělal bych to v něm stejně.<br>
<br>
PH<br>
<br>
<div class="moz-cite-prefix">Dne 19.01.2025 v 11:48 Ladislav
Kručinský napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:000501db6a5f$a557be70$f0073b50$@hermanicky-pivovar.cz">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator"
content="Microsoft Word 15 (filtered medium)">
<style>@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
{font-family:Aptos;}p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Aptos",sans-serif;
mso-ligatures:standardcontextual;
mso-fareast-language:EN-US;}span.StylE-mailovZprvy17
{mso-style-type:personal-compose;
font-family:"Aptos",sans-serif;
color:windowtext;}.MsoChpDefault
{mso-style-type:export-only;
font-size:11.0pt;
mso-fareast-language:EN-US;}div.WordSection1
{page:WordSection1;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal">Zdravíčko při neděli, kolezi.<o:p></o:p></p>
<p class="MsoNormal">Více než kdy jindy jsem se poslední dny
cítil jako Saturninův strýc František: „Nepotřebuji týt
z toho, co objevili jiní…“<o:p></o:p></p>
<p class="MsoNormal">Potřeboval jsem si do PICu naprogramovat
jednoduchý časovač pro medomet, obsluhovaný jedním tlačítkem –
krátký stisk něco, dlouhý stisk něco jiného. Chtěl jsem, aby
tlačítko bylo obsluhováno pomocí přerušení timeru – čili žádné
čekání v programových smyčkách, aby bylo odolné proti zákmitům
– debouncing a aby se poznala chyba, když tlačítko zůstane
viset. Nu a zapotil jsem se. „…A přitom taková blbost, že?...“
abych ocitoval dalšího klasika. Nakonec jsem to po týdnu dal
dohromady (jsem v důchodu, hraju si, vždycky chvilku,
nefungovalo to tak den pauza, …). A tak bych se rád dotázal
zde přítomných kolegů, kteří jsou v programování PICů
v assembleru zběhlí:<o:p></o:p></p>
<p class="MsoNormal">Jak to řešíte vy? Je někde nějaký osvědčený
postup s příklady přímo v MPASM ? Já tak narychlo nic nenašel,
v nějakém předchozím projektu jsem aplikoval vertikální čítač,
ale to mi tady přišlo poněkud komplikované. Nakonec je toho
asi 40 řádků v obsluze přerušení. Ale docela rád bych viděl,
jak na to chodíte vy?<o:p></o:p></p>
<p class="MsoNormal">Prosím neozývejte se s jazykem “C“ – ten je
mi naprosto Cizí i když chápu že to v něm lze efektivně a
robustně napsat. Rád bych právě porovnal přístupy
v assembleru, tedy pokud nejste žárliví právě na to svoje
řešení. Já do přílohy dávám svůj program, ať si případně
pozvednete sebevědomí <span
style="font-family:"Segoe UI Emoji",sans-serif">😊</span>.
Vzhledem k tomu, že programuju vždycky nějakou capinu a pak
třeba půl roku nic, snažím se ten program komentovat jako pro
dementy – abych si vzpomněl co tam mám a proč.<o:p></o:p></p>
<p class="MsoNormal">Hezkou neděli přeji.</p>
</div>
</blockquote>
</body>
</html>