ГлавнаяРегистрацияВход Сайт Сокола Сергея Четверг, 02.05.2024, 21:55
  Звук через PWM - Форум Приветствую Вас Гость | RSS

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Форум » Основной форум сайта » Общее » Звук через PWM (Воспроизведение звука)
Звук через PWM
AVRикДата: Суббота, 09.03.2013, 23:12 | Сообщение # 1
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей !!!
Вот такой вопрос мучает. Как сформировать звук в микроконтроллере.
Принцип приведенный ниже, подбор коэффициентов деления из таблицы,
воспроизведение одной ноты. В таблице их семь штук, в порт выходит потенциал, но звука нет.
Я понимаю нужно  что бы менялось периодически напряжение в OC0A, как это дописать еще не придумал.
ldi r18,7 -это седмая нота в таблице коэффициентов деления. Нужна помощь.

m:      ; Формирование звука
ldi r18,7
lsl r18     ; Умножение номера на2
mov YL,r18    ; Создаем первое слагаемое
ldi YH,0    ; Старший байт равен нулю
ldi ZL,low(tabkd*2)  ; второе слагаемое начало таблицы
ldi ZH,high(tabkd*2) ;
add ZL,YL    ; Складыаем два 16-разр слагаемых
adc ZH,YH    ;
lpm YL,Z+    ; читаем младший байт коэфф. деления
lpm YH,Z    ; Читаем младший байт коэфф. деления
out OCR0A,YL   ; Вывод звука в порт
rcall sbros
sbic PINB,5        ;Если РВ5=0 (кнопка нажата), пропустить след. строку
rjmp m          ;Возврат к началу цикла
rcall delay         ;Вызов подпрограммы задержки на дребезг контактов
rjmp main
;================== Таблица коэффициентов деления ==================
tabkd:
.dw 4748,4228,3768,3556,3168,2822,2514


Сообщение отредактировал AVRик - Суббота, 09.03.2013, 23:23
 
miminoДата: Понедельник, 11.03.2013, 02:14 | Сообщение # 2
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир!
Вы, видимо, неправильно поняли смысл того, что нужно делать. Те частоты, которые вы задаете - это частоты, с которой должен срабатывать таймер. А в подпрограмме обработки прерывания таймера нужно просто переключать тот порт, к которому подключена пищалка в противоположное состояние. Таким образом будет меняться частота переключения вывода, а, значит, и высота тона. При этом нужно таймер настроить на режим, при котором он будет сбрасываться при достижении значения OCR0A, а не своего физического 16-битного максимума.
 
AVRикДата: Понедельник, 11.03.2013, 22:11 | Сообщение # 3
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей, а если таймер на АЦП и ШИМ один работает одновременно, так как
таймеров не имеется Tiny 13 ?

Добавлено (11.03.2013, 22:11)
---------------------------------------------
А как это программно выполнить: переключение порта OCR0A,
и как настроить таймер на сброс ? Когда работает непрерывно АЦП
и ШИМ.

Сообщение отредактировал AVRик - Понедельник, 11.03.2013, 21:33
 
miminoДата: Понедельник, 11.03.2013, 22:22 | Сообщение # 4
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир, я не понял о чем Вы.... Как это таймер на АЦП и ШИМ?
 
AVRикДата: Понедельник, 11.03.2013, 22:53 | Сообщение # 5
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
АЦП постоянно измеряет, при наступлении события при измерении, контроллер должен
издать звук, но Tiny 13A имеет один таймер и то 8 разрядов ?

Добавлено (11.03.2013, 22:53)
---------------------------------------------
Сергей, как в данном случае написать программу ?

 
miminoДата: Понедельник, 11.03.2013, 23:02 | Сообщение # 6
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Так разве АЦП использует таймер? Задайте ему непрерывный режим измерения, и тогда он будет работать сам по себе, а таймер сам по себе
 
AVRикДата: Вторник, 12.03.2013, 14:10 | Сообщение # 7
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Благодарю,  Сергей за подсказку, а я думал, что все сложнее будет.
 
miminoДата: Среда, 13.03.2013, 17:20 | Сообщение # 8
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Да нет, все проще, чем кажется)
 
AVRикДата: Понедельник, 08.04.2013, 21:26 | Сообщение # 9
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Добрый вечер Сергей !!!
Программный модуль звука, я написал и на макете
испытал. Месяц думал, но вчера меня осенило,
все получилось.
 
miminoДата: Понедельник, 08.04.2013, 22:43 | Сообщение # 10
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир! Поздравляю Вас!
А у меня со временем не только не появляется больше свободного времени, а только становится все меньше. Просто скоро собираюсь в командировку, все силы уходят на подготовку sad
 
AVRикДата: Вторник, 09.04.2013, 23:00 | Сообщение # 11
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей!
Вопросик про прерывания: если в программе есть прерывания и
присутствует подпрограмма, то вероятность ее исполнения подпрограммы
 где-то не более 1 сек. Это правильный ход программы ?
Больше она не работает.

Добавлено (09.04.2013, 23:00)
---------------------------------------------
Еще вопросик: из подпрограммы может вызываться подпрограмма ?

 
miminoДата: Среда, 10.04.2013, 11:04 | Сообщение # 12
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир,
не совсем понял вопрос, как это вероятность исполнения не больше 1 сек.
Насчет второго вопроса, да, может. Но не слишком увлекайтесь, не более нескольких вложенных подпрограмм.
 
AVRикДата: Четверг, 11.04.2013, 13:56 | Сообщение # 13
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей !
Вопрос такого плана: в программе используется прерывание АЦП. При
измерении тока более 17 мА программа должна выдать сигнал, который вызыается
подпрограммно, но работает эта подпрограмма всего 1 секунду.
Немогу понять почему ?
 
miminoДата: Четверг, 11.04.2013, 20:22 | Сообщение # 14
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
То есть звук генерируется всего одну секунду, а затем прекращается?
 
AVRикДата: Четверг, 11.04.2013, 22:37 | Сообщение # 15
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Совершенно верно, пока причину ненашел.

Добавлено (11.04.2013, 22:37)
---------------------------------------------
Сергей !!!
Нашел !!! После серий экспериментов проб и ошибок.
Убрал лишнее  в звуковом модуле, пошла родимая !!!

 
Форум » Основной форум сайта » Общее » Звук через PWM (Воспроизведение звука)
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

 

Copyright MyCorp © 2024
Бесплатный конструктор сайтов - uCoz