<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>