вот моя программа
проблема в том, что задержки считаются не правильно. вместо 5мин - 30сек, вместо 20мин - 12сек.
по даташиту флаг ADIF сбрасывается вроде самостоятельно, пробовал перед присвоением adc отключать глобально задержку а потом включать. не помогает. в чем мой плуг?
Раздел: Начинающим
#define F_CPU 1000000UL
#include <tiny13.h>
#include <delay.h>
volatile int x;
volatile int adc;
void main(void)
{ x=0;
DDRB = 0b111011;
ADCSRA |= (1 << ADEN)|(1 << ADATE)|(1 << ADSC)|(1 << ADPS2)|(1 << ADPS1)|(0 << ADPS0);
ADMUX = (1 << REFS0)|(1<<ADLAR)|(0 << MUX1)|(1 << MUX0); // input ADC1 (pb2)
while(1)
{
if (ADCSRA & (1<<ADIF))
{ adc = ADCL;
adc += (ADCH<<8);
if (adc < 10) {PORTB.0=1;} else { PORTB.0=0; x++; delay_ms(300000); while (adc < 9);}
if (x==20) {PORTB.1=1; delay_ms(1200000); x=0; PORTB.1=0;};
}
}
}
проблема в том, что задержки считаются не правильно. вместо 5мин - 30сек, вместо 20мин - 12сек.
по даташиту флаг ADIF сбрасывается вроде самостоятельно, пробовал перед присвоением adc отключать глобально задержку а потом включать. не помогает. в чем мой плуг?
Раздел: Начинающим