Napisałem programik w celu testowania czasu w przerwaniu ADC.
I wszystko dobrze działa- przez minutę, kilka minut- czasem kilkanaście.
A w pewnym momencie przestaje działać.
Płytka EVBavr05, kwarc 16MHz, zasilanie części analogowej procesora przez dławik i odsprzężone kondensatorem.
Watchdog wyłączony.
Przypadkowy reset chyba nie występuje- na oscyloskopie ani w trybie normal ani single nic nie zauważyłem.
Co to może być?
#include <stdint.h>
#include <avr/io.h>
#include <stdlib.h>
#include <avr/interrupt.h>
int main(void)
{
sei();
DDRB=255;
DDRC=255;
ADMUX = _BV(REFS0)|_BV(REFS1);
ADCSRA = _BV(ADEN)|_BV(ADIE)|_BV(ADATE)|_BV(ADPS0)|_BV(ADPS1)|_BV(ADPS2)|_BV(ADSC);
PORTB=255;
static int8_t test1;
while(1)
{
test1=!test1;
PORTC=test1;
}
}
ISR(ADC_vect)
{
static int8_t test;
test=!test;
PORTB=test;
}
I wszystko dobrze działa- przez minutę, kilka minut- czasem kilkanaście.
A w pewnym momencie przestaje działać.
Płytka EVBavr05, kwarc 16MHz, zasilanie części analogowej procesora przez dławik i odsprzężone kondensatorem.
Watchdog wyłączony.
Przypadkowy reset chyba nie występuje- na oscyloskopie ani w trybie normal ani single nic nie zauważyłem.
Co to może być?
