ATTiny2313 генератор звуковой частоты
ATTiny2313 генератор звуковой частоты
Извините, что ломлюсь с таким вопросом, но уже сил и нервов нет гуглить, везде попадается не то... у меня стоит CV AVR, пишу на Си. мне нужна программка (исходник) для того, чтобы МК генерировал звуковую частоту... допустим, на PORTA. исходник обязательно на Си (на ассемблере нашел прилично, но понять не могу) и, если можно, на какие ноги вешать звукоизлучатель?
спасибо
п.с., модераторы, сильно не бейте меня
спасибо
п.с., модераторы, сильно не бейте меня
- Реклама
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: ATTiny2313 генератор звуковой частоты
Код: Выделить всё
while(1){
PORTA= 0xFF;
delay_us(скока надо);
PORTA= 0x00;
delay_us(скока надо);
}Звукоизлучатель, если он пьезо, можно вешать прямо на порт, а чтобы громче - на два порта. Если это динамик, то через усилитель, вернее буфер, дабы не запалить порт.
Последний раз редактировалось pyzhman Сб сен 10, 2011 20:27:29, всего редактировалось 1 раз.
Docendo discimus
Re: ATTiny2313 генератор звуковой частоты
какой звукоизлучатель? параметры? схему примерную нарисуй устройства. Какой звук нужен?
Re: ATTiny2313 генератор звуковой частоты
pyzh_man, я так делал в эмуляторе (Proteus 7), эффекта не было, хотя логика мне именно такой вариант и подсказала. на реальном МК пока не пробовал, был уверен, что эмулятор даст нужный эффект, там использовал Buzzer.
Flasher, стандартный Buzzer в протеусе, один контакт подключен к PA0, другой к GND, настройки Buzzer'а стандартные, вывод на звуковую карту
вот весь код в АВР студио
Flasher, стандартный Buzzer в протеусе, один контакт подключен к PA0, другой к GND, настройки Buzzer'а стандартные, вывод на звуковую карту
вот весь код в АВР студио
Код: Выделить всё
#include <tiny2313a.h>
#define nop() {asm("nop");}
unsigned int x;
void delay_ms(int ms)
{
for (x = ms; x > 0; x--)
nop ();
}
main ()
{
DDRA=0xFF;
while (1)
{
PORTA = 1;
delay_ms(10);
PORTA = 0;
delay_ms(10);
}
}
Re: ATTiny2313 генератор звуковой частоты
Скорее всего, косяк связан с
void delay_ms(int ms)
{
for (x = ms; x > 0; x--)
nop ();
}
Оптимизатор, при включенный по умолчанию опции максимальной оптимизации по размеру выкинул весь этот код. Рекомендую пользоваться встроенной библиотекой delay.h функцией delay_us(500); Не забудьте правильно выставить частоту в настройках проекта кодвижена и в протеусе.
void delay_ms(int ms)
{
for (x = ms; x > 0; x--)
nop ();
}
Оптимизатор, при включенный по умолчанию опции максимальной оптимизации по размеру выкинул весь этот код. Рекомендую пользоваться встроенной библиотекой delay.h функцией delay_us(500); Не забудьте правильно выставить частоту в настройках проекта кодвижена и в протеусе.
- Реклама
Re: ATTiny2313 генератор звуковой частоты
о, спасибо, помогло =) но в первую очередь помогла замена Buzzer на Speaker
заработало
заработало
Код: Выделить всё
#include <tiny2313a.h>
#include <delay.h>
main ()
{
DDRA=0xFF;
while (1)
{
PORTA = 1;
delay_us(10);
PORTA = 0;
delay_us(10);
}
}
Re: ATTiny2313 генератор звуковой частоты
2 задержки в 10 мкс дадут частоту в 50 кГц. Верните назад BUZZER и ставьте 500 мкс.
Re: ATTiny2313 генератор звуковой частоты
беда в том, что Buzzer вообще молчит...
Re: ATTiny2313 генератор звуковой частоты
Беда в том, что этот недосимулятор чего-то там не позволит нормально отладить проект. Отлаживайте в железе.


