<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;}
pre
        {mso-style-priority:99;
        mso-style-link:"Form\00E1tovan\00FD v HTML Char";
        margin:0cm;
        font-size:10.0pt;
        font-family:"Courier New";}
span.FormtovanvHTMLChar
        {mso-style-name:"Form\00E1tovan\00FD v HTML Char";
        mso-style-priority:99;
        mso-style-link:"Form\00E1tovan\00FD v HTML";
        font-family:"Courier New";}
.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>Ono to je takhle jen provizorně, že to nefungovalo plánovaným způsobem. Normálně by měl adSync nastat až po té, co celý cyklus 16x proběhne, v lokálním poli obsluhy přerušení budou v každém prvku součty 16 vzorků. Tehdy se to nakopíruje z lokálního pole do adDataRaw a nahodí adSync. Takže pak bude zas spoustu času na zpracování. Jenže ono to právě záhadně nefunguje, přestože byly jednotlivé části procesu zkopírovány z projektu, který normálně funguje a zákazníci si nestěžují.</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:as5sgm@gmail.com">as5s</a><o:p></o:p></p></div><p>nepoze byt problem v synchronizacii?</p><p>nemoze sa stat ze sa prerusenie vykona viac krat ono by vam to adSync drzalo na 1 ale index by sa zvysil.</p><p>Miro</p><div><p class=MsoNormal>On 23. 1. 2021 22:11, Pavel Hudecek wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><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í.<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>if (++ind>=AD_chCount) ind=0;<o:p></o:p></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í:-)<o:p></o:p></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. <o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>PH<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><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.<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>- Za *if (++ind>=AD_chCount) ind=0;* chybi slozene zavorky {}<o:p></o:p></p><p class=MsoNormal>- Na jednom radku ma byt jeden prikaz - "if (++ind" je prasarna<o:p></o:p></p><p class=MsoNormal>- Co ty hvezdicky ve vypisu? *adDataRaw[ind]=(uint32_t)ind;* To je chyba <o:p></o:p></p><p class=MsoNormal>mailu?<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>Vyplati se psat program poctive, i tak kratky a jednoduchy. Usetri to <o:p></o:p></p><p class=MsoNormal>spoustu boleni hlavy v budoucnu. A taky hroomadu casu.<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>Michal Gregor<o:p></o:p></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):<o:p></o:p></p><p class=MsoNormal>> Dobrý den všem,<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> ATtiny816, Atmel Studio<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> volatile uint32_t               adDataRaw[AD_chCount];<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> uint32_t                              adData[AD_chCount];<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> ISR (ADC0_RESRDY_vect) { // 37,1 kHz / 16 ======<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> .              static uint8_t     ind=0;<o:p></o:p></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>> .              //adDataRaw[ind]=(uint32_t)ADC0_RES;<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> . *adDataRaw[ind]=(uint32_t)ind;*<o:p></o:p></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>> . *if (++ind>=AD_chCount) ind=0;*<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> .              ADC0_MUXPOS=AD_chFirst+ind;<o:p></o:p></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>> .              adSync=1;<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> .              ADC0_INTFLAGS=1;<o:p></o:p></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>> Ve funkci cekej je mj. (i je lokální int):<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> if (adSync==1) { // -------------------------<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> .              adSync=0;<o:p></o:p></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>> . *for (i=0; i<AD_chCount; i++) adData[i]=adDataRaw[i];*<o:p></o:p></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>> V mainu je while(1) a tam mj. (n je lokální uint32_t):<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> cekej(1000);<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> for (n=0; n<AD_chCount; n++) {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> .              cislo((uint32_t)adData[n]); text("/");<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> .              cislo((uint32_t)adDataRaw[n]); text(" ");<o:p></o:p></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>> UART_crlf;<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> A z terminálu leze:<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> 5/5 6/1 2/2 3/3 4/4 0/5 1/6<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> 5/5 6/1 2/2 3/3 4/4 0/5 1/6<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> 0/5 6/1 2/2 3/3 4/4 0/5 1/6<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> 5/5 1/1 2/2 3/3 4/4 0/5 1/6<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> Proč z terminálu neleze<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> 0/0 1/1 2/2 3/3 4/4 5/5 6/6<o:p></o:p></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>> Díky,<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal><br><br><o:p></o:p></p><pre>_______________________________________________</pre><pre>HW-list mailing list  -  sponsored by <a href="http://www.HW.cz">www.HW.cz</a></pre><pre><a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a></pre></blockquote><pre style='mso-margin-top-alt:0cm;margin-right:36.0pt;margin-bottom:5.0pt;margin-left:36.0pt'><a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a></pre><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></p></div></body></html>