<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">Jen bacha na to, ze kdyz budete tyhle
and/or delat s portem v preruseni a jeste nekde v hlavnim programu
pro jine bity, tak vam to muze prerusit mezi ctenim a zapisem a
zahadna obcasna chyba programu je na svete...</div>
<div class="moz-cite-prefix">Lepsi MCU maji registry primo pro
set/reset bitu portu ale to myslim neni pripad AVR.<br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Dne 31.07.2023 v 7:03 Petr Zapadlo
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:a8dff6bd-635b-921c-0366-af3fc3dbbfac@email.cz">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<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"
moz-do-not-send="true">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
moz-txt-link-freetext" 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 moz-txt-link-freetext"
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 moz-txt-link-freetext"
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 moz-txt-link-freetext"
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" moz-do-not-send="true">www.HW.cz</a>
<a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
<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>
</pre>
</blockquote>
<br>
<fieldset class="moz-mime-attachment-header"></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>
<p><br>
</p>
</body>
</html>