Witam
Mam problem tego rodzaju iż potrzebuje napisać program który będzie pobierał 3 próbki z jednego kanału i przeskakiwał na następny i tak do końca. Następnie te próbki zebrane trzeba uśrednić.Za bardzo nie wiedziałem jak się za to zabrać więc przekopałem forum w poszukiwaniu cennych informacji i skleciłem mniej więcej coś takiego :
Nie miałem pomysłu jakby to zrobić żeby 3 próbki pobierał z jednego kanału więc dałem pętle bo nic innego nie przychodziło mi na myśl. Jakby ktoś mógłby rzucić okiem i sprawdzić czy to ma sens to byłbym wdzięczny.
Mam problem tego rodzaju iż potrzebuje napisać program który będzie pobierał 3 próbki z jednego kanału i przeskakiwał na następny i tak do końca. Następnie te próbki zebrane trzeba uśrednić.Za bardzo nie wiedziałem jak się za to zabrać więc przekopałem forum w poszukiwaniu cennych informacji i skleciłem mniej więcej coś takiego :
void pomiar(void)
{
ISR(TIMER1_COMPA_vect){
#define VREF 5
int i;
int c;
char kanal[3];
char aBytes[i];
for (i = 0; i < 8; ++i) {
ADMUX &= ~0x07; /* zeruj 3 najmłodsze bity ADMUX */
ADMUX |= i; /* w i mogą być ustawione tylko 3 najmłodsze bity */
ADCSRA |= _BV(ADSC); /* rozpocznij konwersję */
loop_until_bit_is_set(ADCSRA, ADIF);
ADCSRA |= _BV(ADIF); /* wyzeruj bit */
while(c<3){
aBytes[i] = (float)(ADCL | (ADCH<<8))/1024*VREF; /* zapisz wynik */
kanal[c]=aBytes[i];
c++;
}
}
}
}
Nie miałem pomysłu jakby to zrobić żeby 3 próbki pobierał z jednego kanału więc dałem pętle bo nic innego nie przychodziło mi na myśl. Jakby ktoś mógłby rzucić okiem i sprawdzić czy to ma sens to byłbym wdzięczny.