<div dir="ltr">Díky za připomínku, tohle jsem už opravil, zdá se, že to povolení přerušení to vyřešilo, díky všem za pomoc. <div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Zdravi<br>Jirka Sloupenský  OK1MWW</div></div><br></div></div><div id="DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br><table style="border-top:1px solid #d3d4de"><tr><td style="width:55px;padding-top:13px"><a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail" target="_blank"><img src="https://s-install.avcdn.net/ipm/preview/icons/icon-envelope-tick-round-orange-animated-no-repeat-v1.gif" alt="" width="46" height="29" style="width: 46px; height: 29px;"></a></td><td style="width:470px;padding-top:12px;color:#41424e;font-size:13px;font-family:Arial,Helvetica,sans-serif;line-height:18px">Neobsahuje žádné viry.<a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail" target="_blank" style="color:#4453ea">www.avast.com</a></td></tr></table><a href="#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" height="1"></a></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">po 29. 1. 2024 v 15:09 odesílatel Miroslav Šinko <<a href="mailto:sinkomiro@gmail.com">sinkomiro@gmail.com</a>> napsal:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Arduino kniznice nepoznam, a teda mozno toto nesuvisi s problemom..<br>
<br>
volatile byte K;<br>
..<br>
}while  (K>= 0);<br>
<br>
Podmienka je vzdy platna, myslim, ze sa vam to ostane cyklit.<br>
<br>
miro<br>
<br>
On 29.01.2024 14:07, Jirka Mww wrote:<br>
> Dobrý den,<br>
> <br>
> tak jsem se k tomu zase dostal, dole je zdrojovy kod té přerušovací <br>
> rutiny.  K tomu jen pár vysvětlení :<br>
> Celé to má sloužit k imitaci snímače absolutního úhlu ,  je to spouštěné <br>
> sestupnou hranou CS ( žlutá) , CLKEXT ( fialová)  , jsou hodiny  <br>
> generované nadřízeným systémem, DOEXT je výstup s daty, měla by se <br>
> přenést proměnná TEST1.<br>
> V hlavní smyčce programu je aktuálně jen delay (100), jinak se tam nic <br>
> nedělá<br>
> Proměnná TEST1 se v přerušovací rutině opakovaně plní 0xAAA, takže <br>
> riziko, že ji nějak přepíše něco v hlavní smyčce je snad nulové<br>
> Když ten řádek, kde se zapisuje , tj. <br>
> digitalWrite(DOEXT,bitRead(TEST1,R)); nahradím tím, co je v komentáři ( <br>
> XREF= !XREF atd...), tj. jen reverzací proměnné XREF<br>
> tak to dává data dle obrázku v příloze - žlutá je CS, od toho je to <br>
> přerušení, fialová jsou hodiny - oboje generované nadřízeným systémem<br>
> Modrá jsou data - tak nějak bych si to představoval , že by to mělo vypadat<br>
> Na všech třech drátech mám osciloskop - viz přiložený obrázek<br>
> Když to pustím po resetu s tím digitalWrite(DOEXT,bitRead(TEST1,R)); tak <br>
> mi na osciloskopu nějaká data jednou probliknou, ani nejsou celá, a pak <br>
> ten výstup DOEXT ( modrý ) zůstane trvale v nule.<br>
> <br>
> <br>
> <br>
>     /*  RUTINA PRo VYSTUP DAT     */<br>
> void DataOut() {<br>
>     // cli(); // disable global interrupts<br>
> volatile byte K;                // pocitadlo pro hodiny<br>
> volatile byte R;                // pocitadlo pro vystup bitu<br>
> volatile unsigned int  TEST1 = 0xAAA;            // jen pro test<br>
> volatile byte  XREF = 0;          // pro vysledek<br>
>      K= 10;<br>
>      R= 10;<br>
>       XREF = 0;<br>
> do { digitalRead(CLKEXT);} while (digitalRead(CLKEXT) == HIGH);// ceka <br>
> na sest. hranu hodin<br>
> delayMicroseconds(30);<br>
> do {<br>
> do {digitalRead(CLKEXT);} while (digitalRead(CLKEXT) == LOW);// ceka na <br>
> vzestupnou hranu, aby zapsal data<br>
> delayMicroseconds(3);<br>
> digitalWrite (DOEXT,bitRead(TEST1,R)); // tady je problem<br>
>      // XREF = !XREF; // tohle dává obrázek na osciloskopu v příloze<br>
>      // if ( XREF > 0) {digitalWrite (DOEXT,0);} else { digitalWrite <br>
> (DOEXT,1);}<br>
> delayMicroseconds(30);<br>
>          K= K-1;<br>
>          R = R-1;<br>
> do {digitalRead(CLKEXT);} while (digitalRead(CLKEXT) == HIGH); // ceka <br>
> na sestupnou hranu kdy Master cte data<br>
> delayMicroseconds(30);<br>
> } while (K>= 0);<br>
> do {digitalRead(CLKEXT);} while (digitalRead(CLKEXT) == LOW); // konecny <br>
> prechod do jednicky<br>
> sei();// enable interrupts<br>
> }// konec preruseni<br>
> <br>
> Zdravi<br>
> Jirka Sloupenský  OK1MWW<br>
> <br>
> <br>
_______________________________________________<br>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" rel="noreferrer" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</blockquote></div>