Myslim, ze toto nepojde. Skor by to slo ako
char i;
prepni_ADC0();
for (i=0;i<17;i++)
{
udelej_vzorek();
if (i == 0) continue; //zahozeni vzorku c. 1
zpracuj_vzorek();
}
alebo dokonca pre vsetky kanaly takto
[code]
// Definice makier s parametrami
#define SET(BAJT,BIT) ((BAJT) |= (1<<(BIT)))
#define RES(BAJT,BIT) ((BAJT) &= ~(1<<(BIT)))
#define NEG(BAJT,BIT) ((BAJT) ^= (1<<(BIT)))
#define TST(BAJT,BIT) ((BAJT) & (1<<(BIT)))
// Nastavenie AD referencie
#define SET_AD_REF_5V_INT SET(ADMUX,REFS0);\
RES(ADMUX,REFS1)
#define SET_AD_REF_EXT RES(ADMUX,REFS0);\
RES(ADMUX,REFS1)
#define SET_AD_REF_2_5V_INT SET(ADMUX,REFS0);\
SET(ADMUX,REFS1)
#define set_ad_kanal(kanal) (ADMUX = (ADMUX & 0xe0) + (0x1f & (uint8_t)kanal))
#define NORMOVANIE_AD_16B RES(ADMUX,ADLAR)
#define AKTIVUJ_AD SET(ADCSRA,ADEN)
#define SPUSTI_AD_PREVOD SET(ADCSRA,ADSC)
#define AUTOTRIGER_AD SET(ADCSRA,ADATE)
#define POMALY_PREVOD 6
#define RYCHLY_PREVOD 4
#define rychlost_ad_prevodu(deliaci_pomer) ADCSRA &= ~0x07;\
ADCSRA = ADCSRA | (0x07 & (uint8_t)deliaci_pomer)
#define STOP_AD (ADCSRA = 0) // zastav konverziu, aby sa neprepisala hodnota v ADCL a ADCH
#define POCET_AD_KANALOV 8
int main(void)
{
uint16_t pole_ad_vysledkov[POCET_AD_KANALOV];
SET_AD_REF_2_5V_INT;
NORMOVANIE_AD_16B;
rychlost_ad_prevodu(POMALY_PREVOD);
while(1) {
for( uint8_t = 0; i < POCET_AD_KANALOV; i++) pole_ad_vysledkov* = 0;
for( uint8_t = 0; i < POCET_AD_KANALOV; i++) {
set_ad_kanal(i);
AKTIVUJ_AD;
for(uint8_t j = 0; j < 17; j++) {
SPUSTI_AD_PREVOD;
while(TST(ADCSRA,ADSC));
if (j > 0) pole_ad_vysledkov* += ADCW;
}
}
// tu si nejako tie vysledky spracuj
}
}
[/code]**