Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
Воспроизведение звука выстрела
somlich Дата: Сб, 04.04.2009, 14:10  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 35
Репутация: 0   ±
Замечания:   ±
На сайте с 23.02.2009

Статус: Offline

Нужно сделать в программе воспроизведение звука выстрела, диной до 0,5 секунд. На микрочиповском форуме дали подсказку на ассмеблере:
Code
; Инициализация модуля CCP ШИМ
BSF    STATUS,RP0    ; Выбор банка 1
;    movlw    .112    ;20мгц / 4 / 44.100
movlw    .225    ;20мгц / 4 / 22.050 кгц
movwf    PR2
BCF  STATUS,RP0    ; Выбор банка 0
movlw    b'00000100'
movwf    T2CON    ;настраиваем TMR2 без предделитителя и выходного делителя

потом по прерыванию от TMR2 делаешь примерно так

Code
;закидываем в ШИМ
rrf  INDF,F
rrf  INDF,F
movf    INDF,W
andlw    b'00111111'
movwf    CCPR1L
rrf  INDF,F
rrf  INDF,W
andlw    b'00110000'
iorlw  b'00001100'
movwf    CCP1CON
; А в INDF очередной байт из памяти

У меня ШИМ уже используется для генерации ИК сигнала 36кГц.

Следовательно вопрос, куда мне засунуть этот звук - во внешнюю память а с ней работать по IC2?
Далее взял я звук, сделал HEX файл без не звуковых данных, с помощью программатора записал в внешнюю память.
А как дальше мне использовать эту память в бейсик программе, т.е. как запустить цикл чтения памяти, как определить дину звука. И можно ли как то совместить вышеизложенный код на ассемблере с программой на бейсике.

Если сжимать звук до 8КГц, то его размер составляет 3Кб. Но у меня в программе используется работа ШИМ на частоте 36КГц, что можно сделать, увеличивать качество звука до 36КГц или каждый раз програмно перенастраиваит модуль ШИМ, т.е. нужен ИК сигнал - одни настройки:

Code
PR2 = 139
CCPR1L = 69
CCP1CON = %00001100 ' Select PWM Mode
T2CON = %00000100 ' Timer2 = ON + 1:1 prescale

если звук, то тогда другие, можно ли это делать по многу раз в программе, а не раз в начале как обычно?

В программе остался только звук, уже месяц пытаюсь и ничего не получается, скоро головой об стенку биться начну angry

Добавлено (04.04.2009, 2:10:45)
---------------------------------------------
Видимо непонятно сформулировал вопрос:'(

Вот нарыл в инете программу: BTc Sound Encoder 2.0 Software
http://www.romanblack.com/picsound.htm
Она позволяет (насколько я понимаю буржуйский) преобразовывать wav фалы в формат, который можно проигрывать без использования ШИМ через RC фильтр, который в этой же программе и рассчитывается.

Может кто подскажет:
1. Как файл с перекодированным wav засунуть в программу?
2. Как все таки его воспроизвести, расчитать таймер на 8КГц а дальше? С каких адресов памяти и как воспроизводить биты песни?

Блин, опять больше вопросов, чем ответов angry . Ну хоть пните кто нибудь в нужном направлении dry

Сообщение отредактировал somlich - Чт, 26.03.2009, 14:52
ЯНДЕКС Дата: 04.04.2009
ГыГы Дата: Сб, 04.04.2009, 21:11  |                                                                                                                Сообщение # 2
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 17.02.2009

Статус: Offline

Таймер нужно расчитывать не на 8КГц, а больше. Например если 8КГц и 8 бит звук, то необходимо 8КГц ШИМ * 8 бит (256 дискрет) = 2048 КГц.
Т.е. за каждое приращение таймера выводить соответствующее значение этой дискреты.
PS: Получаеться програмно это реализовать невозможно....

Сообщение отредактировал ГыГы - Сб, 04.04.2009, 21:12
  • Страница 1 из 1
  • 1
Поиск: