Добрый день.
Вот наткнулся на грабли, господа. Прошу помощи.
Собственно расклад:
MCU LPC2148 усилитель MAX9766 к нему микрофон и динамик подцеплен от мобилы.
Задача: оцифровать сигнал на частоте 8000 и передать на PC через COM порт.
Метод 1: ADC в режим BURST, в SELбит регистра AD1CL пишу только один канал(у меня он на шестом) разрешаю прерывания и ловлю цифру. Идея была реализована, но при понижении частоты биты( CLKDIV регистра AD1CL ставились так, чтобы после деления 15Mhz вышло 8000 отсчётов сигнала/с) слышался свист и характерный, как-бы немного рваный шум(достаточно немалой амплитуды).
Также был эксперимент вывода прямо на динамик через DAC.
Пробывал увеличить частоту ADC до максимума(около 4MHz) и эффект исчез, звук был чистым(ну естественно небольшой шум усилителя - но ни свиста ни искажений!) Но это не то - прерывания происходят очень часто!
МЕТОД 2: Подумол что лучше завести для этого таймер который бы дёргался ровно 8000 раз в сек.
ADC без прерываний, без BURST, в обработчике прерывания таймера опрашивается вывод ADC и точно также идёт далее(на динамик и/или com port)
Результат тот-же!!!!!
Если нужно выложу wav. ЧТО ДЕЛАТЬ?
Пробывал поднимать порог при воспроизведении( if(gain>p){ DACOud(gain)}) но это не то всё!
Приблизительно я понимаю почему это происходит.
Не знаю как с этим бороться!
Помогите плиз. Погибаю совсем.
Схему девайса, код, wav с проблемой - выложу всё что необходимо.
The truth is out there...