к561ЛА7 писал(а):выбираем 1й канал опорное 2.56 сдвиг вправо читаем хай
выбираем 4й канал опорное 2.56 сдвиг вправо читаем хай
Право и лево не перепутаны? Если сдвиг вправо, то в high будет всего 2 полезных бита...
|  | roboforum.ruТехнический форум по робототехнике. |  | 
к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 ();
   }
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0