<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
U AVR je to naopak, staré to neměly a nové mají pod PORT registry
ještě OUT, OUTSET, OUTCLR a OUTTGL. A stejně i u dalších registrů.<br>
<br>
Na klasických AVR, tedy včetně "arduinových" zakázat přerušení,
provést operaci a povolit.<br>
<br>
Ty nové mají i mnoho dalších příjemných vlastností, takže už jsem
dlouho staré nikam nepoužil. Kdybych nutně potřeboval modul, místo
Arduina bych použil devkit od nových AVR. Ale uznávám, že cena toho
devkitu je řádově jinde:-)<br>
<br>
PH<br>
<br>
<div class="moz-cite-prefix">Dne 01.08.2023 v 6:43 Zdenek napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:056101d9c432$b1535e20$13fa1a60$@atlas.cz">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator" content="Microsoft Word 14 (filtered
medium)">
<style>@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:12.0pt;
font-family:"Times New Roman","serif";}pre
{mso-style-priority:99;
mso-style-link:"Formátovaný v HTML Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}span.FormtovanvHTMLChar
{mso-style-name:"Formátovaný v HTML Char";
mso-style-priority:99;
mso-style-link:"Formátovaný v HTML";
font-family:Consolas;}span.StylE-mailovZprvy20
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}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"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">U
starších procesorů bývaly instrukce ANL PORT,maska a ORL
PORT,maska, kdy čtení stavu a zápis proběhlo v jedné
instrukci. To bylo odolně vůči přerušení.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Nevím,
jestli u nových existuje obdoba tohoto přístupu…<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF
1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">
Hw-list [<a class="moz-txt-link-freetext" href="mailto:hw-list-bounces@list.hw.cz">mailto:hw-list-bounces@list.hw.cz</a>] <b>On
Behalf Of </b>Petr Zapadlo<br>
<b>Sent:</b> Tuesday, August 1, 2023 6:28 AM<br>
<b>To:</b> <a class="moz-txt-link-abbreviated" href="mailto:hw-list@list.hw.cz">hw-list@list.hw.cz</a><br>
<b>Subject:</b> Re: Arduino generování pulzů<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p>Zdravím, <o:p></o:p></p>
<p>to jsem neznal díky. Jak se dívám, tak digitalWritefast() je
pouze sada maker, která rozvine zápis na GPIO na zápis přes
registry případě konstantního argumentu čísla pinu.<o:p></o:p></p>
<p>Tenhle syntaktický cukr je už na můj vkus příliš sladký, asi
zůstanu u klasického přístupu - pokud to bude nekritické, tak
digitalWrite, pokud to bude časově kritické, tak přístup přes
registry (a nemíchat v jednom kodu).<o:p></o:p></p>
<p>Spíše mě zaujala ta poznámka o neatomicitě zápisu v
přerušení.<o:p></o:p></p>
<p>Chápu to správně, že když se mi přerušení, které manipuluje
například s bity 4-7 portu D trefí přesně do okamžiku kdy jsem
načetl stav portu D pro potřeby například OR (chci nahodit
bit 0, portu D), tak vlastně po zápisu na port v hlavní
smyčce "vymažu" změnu co proběhla v přerušení?<o:p></o:p></p>
<p>Jak se to dá řešit? ( samozřejmě kromě zakázání přerušení)</p>
</div>
</blockquote>
</body>
</html>