Začátečník C - ADC převodník ATmega8 - hodnota příliš lítá

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]**