<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>digitalWrite je obalovacĂ­ funkce, která jako vstup má ÄŤĂ­slo pinu,
      kterĂ© však nemá ĹľĂˇdnou vazbu na "pĹ™irozenĂ© ÄŤĂ­slovánĂ­" pinĹŻ =
      identifikaci portu a konkrĂ©tnĂ­ho bitu. Tj například PORTB, bity
      0-7. <br>
    </p>
    <p>Tady mátÄ› jak je to vlastnÄ› rozloĹľenĂ©:</p>
    <p><a class="moz-txt-link-freetext" href="https://camo.githubusercontent.com/c55beef2f138da61fe671a1e4a307ff4ffbc318d/68747470733a2f2f692e696d6775722e636f6d2f715849456368542e6a7067">https://camo.githubusercontent.com/c55beef2f138da61fe671a1e4a307ff4ffbc318d/68747470733a2f2f692e696d6775722e636f6d2f715849456368542e6a7067</a></p>
    <p>podstatnĂ© jsou pro vás hned ty zelenĂ© ÄŤĂ­sla u noĹľek.</p>
    <p>Tedy "arduino" pin oznaÄŤenĂ© jako 4 je ve skuteÄŤnosti PD4 = port
      D, bit 4. StejnÄ› tak arduino pin 8 je ve skuteÄŤnosti PB0, tj port
      B, bit ÄŤĂ­slo 0.</p>
    <p>Proto digitalWrite musĂ­ vĹľdy pĹ™ed nastavenĂ­m udÄ›lat pĹ™eklad co
      vlastnÄ› chcete nastavovat a to stojĂ­ nemalĂ˝ ÄŤas. proto je
      digitalWrite dost pomalĂ©.</p>
    <p>PřímĂ˝ přístup mĹŻĹľe vypadat takto:</p>
    <p>//pojmenuji si pin signálem<br>
    </p>
    <p>#define RED PD4</p>
    <p>//nastavĂ­m pin jako vĂ˝stupnĂ­, ekvivalent pinMode</p>
    <p>//set port D<br>
      DDRD |=(1<<RED);</p>
    <p>//nastavenĂ­ bitu jako jedniÄŤka</p>
    <p>PORTD |= (1<<RED);</p>
    <p>//nastavenĂ­ bitu jako nula</p>
    <p>PORTD &= ~(1<<RED);</p>
    <p><br>
    </p>
    <p>ty nastavovaÄŤky moĹľná vypadajĂ­ jako magie, ale nejsou, je tĹ™eba
      si to rozloĹľit co to dÄ›lá:</p>
    <p>(1<<RED), RED se pĹ™eloží (pĹ™i pĹ™ekladu na ÄŤĂ­slo pinu, tj v
      tomto případÄ› 4) a ta rotace posune jedniÄŤku ze základnĂ­ pozice
      4x, tj vĂ˝sledkem tohoto je 0b00010000</p>
    <p>No a tohle ÄŤĂ­slo potom pomocĂ­ operace OR (to je to svislĂ­tko)
      vypropagujete na portD. OR se používá proto abych nastavenĂ­m
      jedniÄŤky na pinu 4 neovlivnil ostatnĂ­ porty.</p>
    <p>StejnÄ› tak nulovánĂ­ bitu:</p>
    <p>PORTD &= ~(1<<RED);  (1<<RED) mi vyrobĂ­ (pĹ™i
      pĹ™ekladu) ÄŤĂ­slo 0b00010000,  vlnovka pĹ™ed závorkou je negace, tj 
      0b11101111 a & je operace AND.  Z toho plyne, Ĺľe bit 4 je
      nulován (cokoliv* nula je nula) a ostatnĂ­ bity zĹŻstanou nedotÄŤenĂ©.</p>
    <p><br>
    </p>
    <p>PochopitelnĂ©?</p>
    <p>Petr<br>
    </p>
    <p><br>
    </p>
    <p><br>
    </p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">Dne 30. 07. 23 v 22:15 Martin Záruba
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:e1b90fc6-cdee-c6e9-8a7c-01febc914465@volny.cz">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p><font face="Arial">No a jak jinak nastavit příslušnĂ˝ bit?</font></p>
      <p><font face="Arial">A jak nastavit u PWM jinou frekvenci, neĹľ
          tÄ›ch 400 Hz? A jak jej ovládat? MĹŻĹľete poslat kousek kĂłdu?</font><br>
      </p>
      <pre class="moz-signature" cols="72">Martin Záruba</pre>
      <div class="moz-cite-prefix">Dne 30.7.2023 v 21:15 Petr Zapadlo
        napsal(a):<br>
      </div>
      <blockquote type="cite"
        cite="mid:73711e7c-d074-bec1-94ab-b531dcb78eba@email.cz">JeštÄ›
        upozornĂ­m na to, Ĺľe digitalWrite na  atmega nenĂ­ moc efektivnĂ­ -
        kdysi jsem to  měřil a je asi tak 3x pomalejší neĹľ klasickĂ˝
        přístup pĹ™es registry. <br>
        <br>
        smyÄŤka digitalWrite (pin, 0); digitalWrite(pin,1); nedal ani
        tÄ›ch 20kHz (jestli si správnÄ› pamatuju) <br>
        <br>
        Jinak na PWM tÄ›ch 20kHz je ĂşplnÄ› v poho - ale nesmĂ­ se k tomu
        použít analogWrite - to nastavĂ­ PWM do nÄ›jakĂ©ho základnĂ­ho stavu
        s frekvencĂ­ nÄ›kde kolem 400Hz.  prostÄ› musĂ­te naÄŤĂ­st a ruÄŤnÄ›
        ponastavovat registry nÄ›jakĂ©ho ÄŤasovaÄŤe- <br>
        <br>
        Petr <br>
        <br>
        <br>
        Dne 30. 07. 23 v 19:51 Jaroslav Buchta napsal(a): <br>
        <blockquote type="cite">Cekat v preruseni to se opravdu nedela.
          Neslo by to delat jako se hejbe krokovyma motorama? <br>
          V preruseni nastavit novou hodnotu pro casovac odpovidajici
          pozadovane delce 0/1 a hejbnout GPIO. Klika je, ze u AVR ma
          preruseni dost malou rezii, treba u ARMu to takhle moc delat
          nejde. <br>
          <br>
          Dne 30.07.2023 v 19:45 Petr Simek napsal(a): <br>
          <blockquote type="cite">On Sun, 30 Jul 2023, Martin Záruba
            wrote: <br>
            <br>
            <blockquote type="cite">// Obsluha pĹ™erušenĂ­ od ÄŤasovaÄŤe
              Timer/Counter1 <br>
              ISR(TIMER1_OVF_vect) { <br>
              Â  // GenerovánĂ­ pulzu 1 na pinu 9 (pĹ™i logickĂ© 1) <br>
              Â  digitalWrite(9, HIGH); <br>
              <br>
              Â  // PoÄŤkejte na dobu odpovĂ­dajĂ­cĂ­ ĹˇĂ­Ĺ™ce pulzu 1 <br>
              Â  delayMicroseconds(pulseWidth1); <br>
            </blockquote>
            <br>
            Kdyz v preruseni vyvolate cekaci smycku, tak se to v tom
            preruseni <br>
            zablokuje ne ? Pak zalezi na prioritach - bud to jine
            preruseni <br>
            neprerusi, takze druhy puls bude zmrseny-zpozdeny, nebo
            prerusi <br>
            a protoze v nem to taky uvizne v cekaci smycce tak to
            zmrsi-prodlouzi <br>
            prvni puls. <br>
            <br>
            <br>
            <br>
            <blockquote type="cite">Martin Záruba <br>
            </blockquote>
            <br>
*------------------------------------------------------------------------*
            <br>
            |                          Petr Simek   APS
            JU                           | <br>
            | <a class="moz-txt-link-abbreviated"
              href="mailto:psimek@jcu.cz" moz-do-not-send="true">psimek@jcu.cz</a>                             
            | <br>
*------------------------------------------------------------------------*
            <br>
            <br>
            _______________________________________________ <br>
            HW-list mailing list  -  sponsored by <a
              class="moz-txt-link-abbreviated" href="http://www.HW.cz"
              moz-do-not-send="true">www.HW.cz</a> <br>
            <a class="moz-txt-link-abbreviated"
              href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
            <br>
            <a class="moz-txt-link-freetext"
              href="http://list.hw.cz/mailman/listinfo/hw-list"
              moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a>
            <br>
          </blockquote>
          <br>
          <br>
          _______________________________________________ <br>
          HW-list mailing list  -  sponsored by <a
            class="moz-txt-link-abbreviated" href="http://www.HW.cz"
            moz-do-not-send="true">www.HW.cz</a> <br>
          <a class="moz-txt-link-abbreviated"
            href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
          <br>
          <a class="moz-txt-link-freetext"
            href="http://list.hw.cz/mailman/listinfo/hw-list"
            moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a>
          <br>
        </blockquote>
        _______________________________________________ <br>
        HW-list mailing list  -  sponsored by <a
          class="moz-txt-link-abbreviated" href="http://www.HW.cz"
          moz-do-not-send="true">www.HW.cz</a> <br>
        <a class="moz-txt-link-abbreviated"
          href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
        <br>
        <a class="moz-txt-link-freetext"
          href="http://list.hw.cz/mailman/listinfo/hw-list"
          moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a>
        <br>
      </blockquote>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
    </blockquote>
  </body>
</html>