ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
4 июля
122932 Топик полностью
580BM80 (13.06.2008 11:51, просмотров: 151) ответил cvv на Данный цикл имеет одинаковое число инструкций на каждой итерации что в частности достигается полным запрещением прерываний.
При выполнении итераций у Вас имеются разные варианты прохода из-за использования оператора "if". Утверждать, что они имеют одинаковое время выполнения можно только, проанализировав код на уровне инструкций ассемблера и никак иначе. Использование частоты дискретизации выше 8 КГц не требуется - это вполне разумно. Однако утверждать, что нереально получить более высокие значения – мягко говоря, некорректно. Серийную память нужно читать в отдельной процедуре на уровне основной петли. И нет необходимости при чтении каждого байта полностью инициализировать чтение заново. Достаточно один раз открыть память для чтения, а потом уже считывать последовательные байты, сохраняя их в кольцевом буфере. Процедура-плеер на уровне прерывания просто забирает байты из буфера и отправляет их в порт. Процедура чтения должна регулировать заполнение буфера на предмет исключения переполнений и опустошений. При таком подходе на частоте 8 КГц можно реализовать даже несколько независимых каналов воспроизведения. Если, конечно, Вы не используете 32768 Гц для тактирования MCU:) Вообще программист обязан задавать ЧД. Это определяет и характеристики low-pass фильтра и темп воспроизведения звука. Не хотите использовать таймер – дело Ваше. Вы обратились за советами, а я просто подсказал, как лучшеможно сделать.