Chciałem zapytać czy obsługa przerwań musi być włączona aby można było przeprowadzić konwersję?
Mam następującą funkcję wyłączającą w moim programie. Chciałbym aby przerwania były wyłączone żeby nie włączało mi przekaźników. Zanim PortD zostanie wyzerowany(wtedy następuje wyłączenie) muszę doprowadzić do odpowiedniej temperatury komorę urządzenia, które steruję. Służy temu sygnał z przetwornika ADC portu 2, dlatego ADMUX=2. Niestety program się wyłącza przed schłodzeniem do pożądanej temperatury.
Przetwornik jest wcześniej zainicjowany w main:
Mam następującą funkcję wyłączającą w moim programie. Chciałbym aby przerwania były wyłączone żeby nie włączało mi przekaźników. Zanim PortD zostanie wyzerowany(wtedy następuje wyłączenie) muszę doprowadzić do odpowiedniej temperatury komorę urządzenia, które steruję. Służy temu sygnał z przetwornika ADC portu 2, dlatego ADMUX=2. Niestety program się wyłącza przed schłodzeniem do pożądanej temperatury.
void wylacz(void)
{
cli();
ADCSRA &=~_BV(ADEN);
PORTD &= 0x08;
ADMUX = 2;
ADCSRA |= _BV(ADEN) |_BV(ADSC);
while (bit_is_clear(ADCSRA,ADIF));
while (ADCW>350);
PWM_out(0);
PORTD = 0x00;
while(1);
}
Przetwornik jest wcześniej zainicjowany w main:
ADCSRA = _BV(ADEN)|_BV(ADIE)|_BV(ADATE)|_BV(ADSC)|_BV(ADPS0)|_BV(ADPS1)|_BV(ADPS2);