к561ЛА7 писал(а):выбираем 1й канал опорное 2.56 сдвиг вправо читаем хай
выбираем 4й канал опорное 2.56 сдвиг вправо читаем хай
Право и лево не перепутаны? Если сдвиг вправо, то в high будет всего 2 полезных бита...
к561ЛА7 писал(а):выбираем 1й канал опорное 2.56 сдвиг вправо читаем хай
выбираем 4й канал опорное 2.56 сдвиг вправо читаем хай
выбираем 1й канал опорное 2.56 сдвиг вправо -ждем завершения АЦп прелобразования - читаем лоу ,читаем хай
выбираем 2й канал опорное питаие сдвиг влево - ждем- читаем лоу, читаем хай
выбираем 3й канал опорное питаие сдвиг влево -ждем- читаем лоу, читаем хай
выбираем 4й канал опорное 2.56 сдвиг вправо -ждем-читаем лоу ,читаем хай
ADMUX=0b11100100; //канал 4
ADCSRA.6=1;
while(ADCSRA.4==0);
s_reg4_L=ADCL; //
s_reg4=ADCH;
dccharacter писал(а):Еще из бредового - проверь, что в третьем канале ты точно читаешь хай.
uint16_t ADC_Value[5];
uint8_t j = 0;
// 62,5kHz
void init_adc (void)
{
ADCSRA = 0x00;
ADCSRA |= _BV(ADEN) | _BV(ADIE) | _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0);
SFIOR = 0x00;
}
void start_computation (uint8_t channel)
{
ADMUX = ADMUX & 0xE0;
switch (channel)
{
case 0:{break;}
case 1:{ADMUX |= _BV(MUX0);break;}
case 2:{ADMUX |= _BV(MUX1);break;}
case 3:{ADMUX |= _BV(MUX1) | _BV(MUX0);break;}
case 4:{ADMUX |= _BV(MUX2);break;}
case 5:{ADMUX |= _BV(MUX2) | _BV(MUX0);break;}
case 6:{ADMUX |= _BV(MUX2) | _BV(MUX1);break;}
case 7:{ADMUX |= _BV(MUX2) | _BV(MUX1) | _BV(MUX0);break;}
default:{break;}
}
ADCSRA |= _BV(ADATE) | _BV(ADSC);
}
ISR (ADC_vect)
{
if (j<5)
{
ADC_Value[j] = ADCL; //Read 8 low bits first (important)
ADC_Value[j] |= (int)ADCH << 8; //read 2 high bits and shift into top byte
j++;
}
else
{
ADCSRA |= !_BV(ADATE)
|= !_BV(ADSC);
distance_calculation ();
}
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8