Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.51/49: Рейтинг темы: голосов - 49, средняя оценка - 4.51
kykir55
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 3
1

помогите новичку с таймер счетчиками

19.12.2010, 01:58. Просмотров 8869. Ответов 20
Метки нет (Все метки)

проблема такая,хочу сделать что то издающее звуки на основе авр микроконтроллера.
решил вот взяться и сделать музыкальную шкатулку,в теории понял как все делать,но столкнулся с такими проблемами,как написать программу которая будет подавать сигнал определенной(нужной мне) частоты на ножки микроконтроллера,еще задумался над тем как записать код звуков в EEPROM
помогите плиз
заранее спасибо
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2010, 01:58
Ответы с готовыми решениями:

Помогите новичку!!!
изучаю ассемблер для авр по книге ревича(есть в инете).там значит прога есть - счетчик нажатий.Есть...

Помогите новичку.
Здравствуйте, уважаемые форумчане. Возникла проблема. Программирую на тини2313. К одному порту...

Помогите новичку.
Купил МК atmego32, и программатор usbasp (выход на 10 пинов). Требуется ли доп.питание для...

Помогите новичку.
Здравствуйте, нужна помощь в освоении мк. Когда будут появляться вопросы буду кидать сюда. Заранее...

Помогите новичку!
http://avrlab.com/node/130 Только я собрал на МК Атmega8515. рис1. Программатор USBasp, на...

20
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
19.12.2010, 02:07 2
Звук в еепром можно писать так:
Код
1 байт: Частота
1 байт: длительность.
Вместо частоты можно записывать период. Так получается удобнее.

А импульсы генерить таймером. В прерывании по совпадению (sompare) инвертим нужный пин. И там-же сбрасываем счётчик (TCNT) в ноль. Частоту устанавливаем, изменяя значение регистра сравнения (OCR).

Сам такую штуку когда-то делал. Даже где-то бинарик с гимном СССР остался :)
0
qbyt
0 / 0 / 0
Регистрация: 13.08.2010
Сообщений: 58
19.12.2010, 02:11 3
2 kykir55
Под словом “звук" понимается сигнал с одной гармоникой (одной частоты) или же некая смесь, в том числе и речь?
0
kykir55
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 3
20.12.2010, 19:52 4
да,я имел в виду сигнал определенной частоты
0
20.12.2010, 19:52
kykir55
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 3
20.12.2010, 19:53 5
Цитата Сообщение от dsodir
Звук в еепром можно писать так:
Код:
1 байт: Частота
1 байт: длительность.
Вместо частоты можно записывать период. Так получается удобнее.

А импульсы генерить таймером. В прерывании по совпадению (sompare) инвертим нужный пин. И там-же сбрасываем счётчик (TCNT) в ноль. Частоту устанавливаем, изменяя значение регистра сравнения (OCR).

Сам такую штуку когда-то делал. Даже где-то бинарик с гимном СССР остался :)

если есть,можешь мне кинуть код какой-нибудь мелодиичтобы я видел как должно быть)
0
kotobyti
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,352
05.06.2011, 19:43 6
порылся я и что-то не нашел нормального мануала
вот я хочу генерить 1кгц и паузу между ними
тактовая 1мгц
использовать надо таймеры тини13

что мне надо делать?
0
motfriiusir
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 188
05.06.2011, 21:49 7
если есть,можешь мне кинуть код какой-нибудь мелодиичтобы я видел как должно быть)
вот пример, с комментариями

[1.92 Кб]
0
Otikzzz
0 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 461
05.06.2011, 22:33 8
Цитата Сообщение от kotobyti
порылся я и что-то не нашел нормального мануала
вот я хочу генерить 1кгц и паузу между ними
тактовая 1мгц
использовать надо таймеры тини13

что мне надо делать?
Код
.include "tn13adef.yms"

.cseg
.org 0

rjmp RESIT         ;External Pin, Power-on Riset, Brown-out Riset, Watchdog Riset
reti ;INT0_HND      ;External Ymtirrupt Request 0
reti ;PCINT_HND      ;Pin Change Ymtirrupt Request 0
reti ;TIM0_OVF      ;Timer/Counter Overflow
reti ;EE_RDY      ;EEPROM Ready
reti ;AN_COMP      ;Analog Comparator
rjmp TIM0_COMPA      ;Timer/Counter Compare Match A
reti ;TIM0_COMPB      ;Timer/Counter Compare Match B
reti ;WDT         ;Watchdog Time-out
reti ;ADCCC         ;ADC Conversion Complete

TIM0_COMPA:
;Здесь код задержки
reti

RESIT:
ldi R16,ROMEND
out   SPL,R16
ldi R16,0x80
out ACSR,R16
;******************
ldi R16,0xFF
out DDRB,R16
ldi R16,0x0
out PORTB,R16      ;Порт на выход
;******************
ldi R16,4
out TIMSK0,R16      ;Прерывание по сравнению канала A

ldi R16,62
out OCR0A,R16      ;Число для сравнения (f~1000000/8/62~1008,06 Гц)

ldi R16,0b01000010
out TCCR0A,R16      ;Смена уровня на OC0A и очистка TCNT0 по сравнению

ldi R16,0x2
out TCCR0B,R16      ;Предделитель 8

sei

rjmp PC
Дёргает OC0A ака PB0 c частотой ~1кГц.
Про задержку не понял.
0
kotobyti
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,352
06.06.2011, 00:41 9
задержка типа длительность писка и длительность паузы
я думаю это второй таймер надо заюзать и флаги

щас поковыряю хотя бы писк
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
06.06.2011, 00:47 10
Ты можешь заставить его пищать аппаратным ШИМом (1кгц), а в прерывании переполнения пустить счётчик и когда он натикает нужное время (пора выключить пищалку) - отключить ШИМ от вывода (Биты COMxx в регистре TCCR1A) или наоборот подключить если пауза закончилась.
0
kotobyti
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,352
06.06.2011, 01:13 11
Цитата Сообщение от dsodir
Ты можешь заставить его пищать аппаратным ШИМом (1кгц), а в прерывании переполнения пустить счётчик и когда он натикает нужное время (пора выключить пищалку) - отключить ШИМ от вывода (Биты COMxx в регистре TCCR1A) или наоборот подключить если пауза закончилась.
и это все на одном таймере?
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
06.06.2011, 01:14 12
Угу.
0
somyo_3
0 / 0 / 0
Регистрация: 09.01.2011
Сообщений: 544
06.06.2011, 01:20 13
У меня тупо программным ШИМом пищала тинька- только это было давно и неправда. :)
0
Otikzzz
0 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 461
06.06.2011, 01:26 14
Ах это пищалка...
0
kotobyti
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,352
06.06.2011, 15:04 15
Цитата Сообщение от dsodir
Угу.
и как так? таймер может в 2х режимах одновременно работать - шим и счетчик?
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
06.06.2011, 15:06 16
А почему-бы и нет? ШИМ сам по себе - аппаратно, а прерывание по переполнению вызывается независимо от него.
0
Гарнист
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 3,496
06.06.2011, 15:12 17
Ещё как работает. Например, в сопроцессоре у меня так и сделано: и шим и прерывание по переполнению. Самая навороченная конфигурация, которая возможна - два независимых шима и прерывание по сравнению, с одного таймера.
0
kotobyti
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,352
06.06.2011, 16:13 18
код мне запилите
0
Гарнист
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 3,496
06.06.2011, 16:45 19
<Изображение удалено>
0
Bomomd
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,020
06.06.2011, 17:10 20
!


<Изображение удалено>
0
06.06.2011, 17:10
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2011, 17:10

Помогите, пожалуйста, новичку.
Покажите мне пример умножения 2-х дробных знаковых чисел в AVR Studyo.

Atmega 48 помогите новичку
Помогите пожалуста, у меня не получается выдать информационные посылки на лазер(PB0) и по...

Помогите новичку с avr.
На плате стоял atmega 162av.Надо было прочитать прошивку.К плате подключается 12 вольт через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru