Re: Záhada v C
Michal Gregor
a2x1nptda8 na email.cz
Sobota Leden 23 20:33:08 CET 2021
To by chtelo videt cely zdrojak, ale spise to zkusit v debugu.
- Za *if (++ind>=AD_chCount) ind=0;* chybi slozene zavorky {}
- Na jednom radku ma byt jeden prikaz - "if (++ind" je prasarna
- Co ty hvezdicky ve vypisu? *adDataRaw[ind]=(uint32_t)ind;* To je chyba
mailu?
Vyplati se psat program poctive, i tak kratky a jednoduchy. Usetri to
spoustu boleni hlavy v budoucnu. A taky hroomadu casu.
Michal Gregor
Dne 23.01.2021 v 20:14 Pavel Hudecek napsal(a):
> Dobrý den všem,
>
> ATtiny816, Atmel Studio
>
> volatile uint32_t adDataRaw[AD_chCount];
>
> uint32_t adData[AD_chCount];
>
> ISR (ADC0_RESRDY_vect) { // 37,1 kHz / 16 ======
>
> . static uint8_t ind=0;
>
> .
>
> . //adDataRaw[ind]=(uint32_t)ADC0_RES;
>
> . *adDataRaw[ind]=(uint32_t)ind;*
>
> .
>
> . *if (++ind>=AD_chCount) ind=0;*
>
> . ADC0_MUXPOS=AD_chFirst+ind;
>
> .
>
> . adSync=1;
>
> . ADC0_INTFLAGS=1;
>
> }
>
> Ve funkci cekej je mj. (i je lokální int):
>
> if (adSync==1) { // -------------------------
>
> . adSync=0;
>
> .
>
> . *for (i=0; i<AD_chCount; i++) adData[i]=adDataRaw[i];*
>
> }
>
> V mainu je while(1) a tam mj. (n je lokální uint32_t):
>
> cekej(1000);
>
> for (n=0; n<AD_chCount; n++) {
>
> . cislo((uint32_t)adData[n]); text("/");
>
> . cislo((uint32_t)adDataRaw[n]); text(" ");
>
> }
>
> UART_crlf;
>
> A z terminálu leze:
>
> 5/5 6/1 2/2 3/3 4/4 0/5 1/6
>
> 5/5 6/1 2/2 3/3 4/4 0/5 1/6
>
> 0/5 6/1 2/2 3/3 4/4 0/5 1/6
>
> 5/5 1/1 2/2 3/3 4/4 0/5 1/6
>
> Proč z terminálu neleze
>
> 0/0 1/1 2/2 3/3 4/4 5/5 6/6
>
> ???
>
> Díky,
>
> PH
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
--
Tato zpráva byla zkontrolována na viry programem Avast Antivirus.
https://www.avast.com/antivirus
Další informace o konferenci Hw-list