witam. Mam taki problem ponieważ sygnał który dostaje z akcelerometru muszę scałkować podwójnie i do tego jest mi potrzebny przedział miedzy próbkami i mam problem z wyznaczeniem tego czasu. żeby mieć stałe odstępy próbkowania wymyśliłem żeby próbkowanie odbywało się w przerwaniu i teraz problem polega na tym ze w trakcie wykonywania przerwania od timera2 następuje wywołanie odczytu danych z przetwornika w przerwaniu od adc i układ mi się wiesza;/ i nie wiem jak to rozwikłać. dziękuje za pomoc. to cześć kodu programu (te dwa przerwania oraz ustawienia adc i timera2)
Pozdrawiam kliwer19
void ADC_Init(void) {
// konifgurujemy adc
ADMUX = 0x00;
ADCSRA = (1<<ADEN) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
void Timer2_Init(void)
{
TCCR0= (1<<CS20) | (1<<CS21) | (1<<CS22) ;
TIMSK = (1<<TOIE1);
}
SIGNAL(SIG_ADC)
{
adc_temp = (float)(ADCL | (ADCH << 8)); // odczyt przetwornika w przerwaniu
}
SIGNAL (SIG_OVERFLOW2)
{
ADMUX = 0x00; // wyzerowanie ADMUX
ADCSRA |= (1<<ADSC); // start pojedynczego pomiaru
x=adc_temp;
ADMUX = 0x00;
ADMUX |= (1<<MUX0); //wybor kanału
ADCSRA |= (1<<ADSC);
y=adc_temp;
ADMUX = 0x00;
ADMUX |= (1<<MUX1); //wybór kanału
ADCSRA |= (1<<ADSC);
z=adc_temp;
}
Pozdrawiam kliwer19