Содержание материала

+---------------------------------------+------------------------------------

| Алгоритм цифрового ввода/вывода звука |

+=======================================+

 

Чтобы записывать или воспроизводить звук, вы должны использовать следующую

последовательность:

 

1) Распределите буфер который не пересекает границу 64 Kb

2) Установите программу обработки прерывания.

3) Запрограммируйте контроллер DMA для фоновой пересылки

4) Установите частоту выборки

5) Запишите команду I/O в DSP

6) Запишите режим пересылки I/O в DSP

7) Запишите размер блока в DSP ( Младший байт/Старший байт )

 

После этого сразу начнется запись или воспроизведение звука.

 

Выделение памяти под буфер DMA:

 

data=(char far *)farmalloc(131000L);

if ( data==NULL )

{

printf("Нет места под буфер DMA\n");

return 0;

}

physical=((unsigned long)FP_OFF(data))+(((unsigned long)FP_SEG(data))<<4);

aligned_physical=physical+0x0FFFFL;

aligned_physical&=0xF0000L;

aligned=MK_FP((unsigned )((aligned_physical >> 4) & 0xFFFF),0);

 

 Ниже приведены примеры последовательностей для программирования SB

с помощью DMA.

Нормальная частота, воспроизведение:

 

1) Записать D1h в 2xCh

2) Установить обработчик прерывания

3) Записать 40h в 2xCh

4) Записать константы времени в 2xCh

5) Запрограммировать DMA

6) Записать 14h в 2xCh

7) Записать длину выборки

8) Обслуживать прерывания, до окончания выборки

9) Восстановить старый обработчик

10) Записать D3h в 2xCh

 

При этом можно записывать любые команды в DSP, пока идет воспроизведение.

 

Повышенная частота, воспроизведение:

 

1) Записать D1h в 2xCh

2) Установить обработчик прерывания

3) Записать 40h в 2xCh

4) Записать константы времени в 2xCh

5) Запрограммировать DMA

6) Записать 48h в 2xCh

7) Записать длину выборки

8) Записать 91h в 2xCh

9) Обслуживать прерывания, до окончания выборки

10) Восстановить старый обработчик

11) Записать D3h в 2xCh

 

Нормальная частота, запись звука:

 

1) Установить обработчик прерывания

2) Записать 40h в 2xCh

3) Записать константы времени в 2xCh

4) Запрограммировать DMA

5) Записать 24h в 2xCh

6) Записать длину выборки

7) Обслуживать прерывания, до окончания выборки

8) Восстановить старый обработчик

 

При этом можно посылать любые команды в DSP, пока идет запись.

 

Повышенная частота, запись:

 

1) Установить обработчик прерывания

2) Записать 40h в 2xCh

3) Записать константы времени в 2xCh

4) Запрограммировать DMA

5) Записать 48h в 2xCh

6) Записать длину выборки

7) Записать 99h в 2xCh

8) Обслуживать прерывания, до окончания выборки

9) Восстановить старый обработчик

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить