Záhada v C
Pavel Hudecek
edizon na seznam.cz
Sobota Leden 23 20:14:22 CET 2021
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
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20210123/b64c1ac4/attachment.html>
Další informace o konferenci Hw-list