Strijar писал(а):
Народ, у кого с обработкой сигнала нормально? Теоретический вопрос. Если сделать как я ранее предлагал - оцифровывать сразу оба канала и делать свертку между ними. Чувствую, что можно будет отслеживать много источников звучащих одновременно. Или я ошибаюсь?
вопрос такой возник, вот в этом строчке
Код:
adc1 = read_adc(0);
adc2 = read_adc(1);
он сначала берет данные с ножки А0, потом с ножки А1? а в это время когда он будет брать данные с А0, А1 не исчезнет? или он сохранит до следующего вызова? прост звук слишком быстро двигается, и хватит ли мига что бы взять точные данные с обоих ножек?
и я не понимаю что тут непонятного. можете сказать что тут не правильно? только не надо ругаться)
Код:
#asm("sei")
while (1){
if(PINA.0 == 0){ //если с права пришел сигнал первым
PORTC.1 = 1; //горит светодиод ( что бы проверять)
time = 0; // таймер = 0
lcd_clear(); //очищаем ЛСД
while(PINA.1 != 0){} //ждем когда на левый микрофон придт звук и в это время запускается таймер с 0
sprintf( ch1,"time=%u", time ); //записываем результат в массив
lcd_gotoxy(0,1);
lcd_puts(ch1); //выводим массив
lcd_gotoxy(0,0);
lcd_puts("in the right"); //выводим с какой стороны звук
delay_ms(2000); //ждем 2с
PORTC = 0b00000000; //отключаем все светодиоды
lcd_clear(); //очищаем ЛСД
} else
if(PINA.1 == 0){ //если с лева пришел сигнал первым
PORTC.0 = 1; //зажигаем светодиод
time = 0; //таймер = 0
lcd_clear(); //очищаем
while(PINA.0 != 0){} // ждем пока на правый не поступи сигнал в это время таймер идет
sprintf( ch1,"time=%u", time ); //зписываем текущий результат таймера
lcd_gotoxy(0,1);
lcd_puts(ch1); //выводим данные
lcd_gotoxy(0,0);
lcd_puts("in the left"); //выводим информацию с какой стороны звук
delay_ms(2000); //ждем 2с
PORTC = 0b00000000; //отключаем светодиоды
lcd_clear(); //очищаем ЛСД
}
PORTC = 0b11110000; //зажигаем светодиод
lcd_gotoxy(3,0);
lcd_puts("waiting..."); //выводим состояние ожидания
}