<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style></head><body lang=CS link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Hvězdičky a liché prázdné řádky přibyly někde mezi Vámi a HW serverem. Mě to přišlo jak jsem odeslal. Jen tečky na začátku odsazených řádků jsou moje, mnoho mailových klientů jinak zruší odsazení.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>if (++ind>=AD_chCount) ind=0;</p><p class=MsoNormal>Je praktické, protože přičítací operace, podmínka i reset pohromadě, což zvyšuje přehlednost a snižuje šanci, že člověk mezi to něco náhodou strčí. Závorky nechybí. Pravidla jazyka požadují buď jeden příkaz, nebo v závorce příkazů víc. Třeba CodeVision to přesně takhle dokonce dělá v předgenerovaném kódu. Typicky právě v obsluhách přerušení:-)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Preventivně jsem to zkusil změnit do klasické podoby i se závorkami, ale nepomohlo. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>PH</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>Od: </b><a href="mailto:a2x1nptda8@email.cz">Michal Gregor</a><o:p></o:p></p></div><p class=MsoNormal>To by chtelo videt cely zdrojak, ale spise to zkusit v debugu.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>- Za *if (++ind>=AD_chCount) ind=0;* chybi slozene zavorky {}</p><p class=MsoNormal>- Na jednom radku ma byt jeden prikaz - "if (++ind" je prasarna</p><p class=MsoNormal>- Co ty hvezdicky ve vypisu? *adDataRaw[ind]=(uint32_t)ind;* To je chyba </p><p class=MsoNormal>mailu?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Vyplati se psat program poctive, i tak kratky a jednoduchy. Usetri to </p><p class=MsoNormal>spoustu boleni hlavy v budoucnu. A taky hroomadu casu.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Michal Gregor</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Dne 23.01.2021 v 20:14 Pavel Hudecek napsal(a):</p><p class=MsoNormal>> Dobrý den všem,</p><p class=MsoNormal>> </p><p class=MsoNormal>> ATtiny816, Atmel Studio</p><p class=MsoNormal>> </p><p class=MsoNormal>> volatile uint32_t adDataRaw[AD_chCount];</p><p class=MsoNormal>> </p><p class=MsoNormal>> uint32_t adData[AD_chCount];</p><p class=MsoNormal>> </p><p class=MsoNormal>> ISR (ADC0_RESRDY_vect) { // 37,1 kHz / 16 ======</p><p class=MsoNormal>> </p><p class=MsoNormal>> . static uint8_t ind=0;</p><p class=MsoNormal>> </p><p class=MsoNormal>> .</p><p class=MsoNormal>> </p><p class=MsoNormal>> . //adDataRaw[ind]=(uint32_t)ADC0_RES;</p><p class=MsoNormal>> </p><p class=MsoNormal>> . *adDataRaw[ind]=(uint32_t)ind;*</p><p class=MsoNormal>> </p><p class=MsoNormal>> .</p><p class=MsoNormal>> </p><p class=MsoNormal>> . *if (++ind>=AD_chCount) ind=0;*</p><p class=MsoNormal>> </p><p class=MsoNormal>> . ADC0_MUXPOS=AD_chFirst+ind;</p><p class=MsoNormal>> </p><p class=MsoNormal>> .</p><p class=MsoNormal>> </p><p class=MsoNormal>> . adSync=1;</p><p class=MsoNormal>> </p><p class=MsoNormal>> . ADC0_INTFLAGS=1;</p><p class=MsoNormal>> </p><p class=MsoNormal>> }</p><p class=MsoNormal>> </p><p class=MsoNormal>> Ve funkci cekej je mj. (i je lokální int):</p><p class=MsoNormal>> </p><p class=MsoNormal>> if (adSync==1) { // -------------------------</p><p class=MsoNormal>> </p><p class=MsoNormal>> . adSync=0;</p><p class=MsoNormal>> </p><p class=MsoNormal>> .</p><p class=MsoNormal>> </p><p class=MsoNormal>> . *for (i=0; i<AD_chCount; i++) adData[i]=adDataRaw[i];*</p><p class=MsoNormal>> </p><p class=MsoNormal>> }</p><p class=MsoNormal>> </p><p class=MsoNormal>> V mainu je while(1) a tam mj. (n je lokální uint32_t):</p><p class=MsoNormal>> </p><p class=MsoNormal>> cekej(1000);</p><p class=MsoNormal>> </p><p class=MsoNormal>> for (n=0; n<AD_chCount; n++) {</p><p class=MsoNormal>> </p><p class=MsoNormal>> . cislo((uint32_t)adData[n]); text("/");</p><p class=MsoNormal>> </p><p class=MsoNormal>> . cislo((uint32_t)adDataRaw[n]); text(" ");</p><p class=MsoNormal>> </p><p class=MsoNormal>> }</p><p class=MsoNormal>> </p><p class=MsoNormal>> UART_crlf;</p><p class=MsoNormal>> </p><p class=MsoNormal>> A z terminálu leze:</p><p class=MsoNormal>> </p><p class=MsoNormal>> 5/5 6/1 2/2 3/3 4/4 0/5 1/6</p><p class=MsoNormal>> </p><p class=MsoNormal>> 5/5 6/1 2/2 3/3 4/4 0/5 1/6</p><p class=MsoNormal>> </p><p class=MsoNormal>> 0/5 6/1 2/2 3/3 4/4 0/5 1/6</p><p class=MsoNormal>> </p><p class=MsoNormal>> 5/5 1/1 2/2 3/3 4/4 0/5 1/6</p><p class=MsoNormal>> </p><p class=MsoNormal>> Proč z terminálu neleze</p><p class=MsoNormal>> </p><p class=MsoNormal>> 0/0 1/1 2/2 3/3 4/4 5/5 6/6</p><p class=MsoNormal>> </p><p class=MsoNormal>> ???</p><p class=MsoNormal>> </p><p class=MsoNormal>> Díky,</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>