Звуки AVR ...

Тема в разделе "AVR", создана пользователем Дмитрий BASIC, 26 дек 2015.

  1. Дмитрий BASIC

    Дмитрий BASIC В доску свой

    Сообщения:
    206
    Симпатии:
    107
    Очень интересно кто и как получает звуки от микроконтролера?
    Я пытаюсь получить звук сирены но пока не получается ;)
     
    : Звук
  2. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.915
    Симпатии:
    318
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    На звук сирены похож пилообразный сигнал. Прямоугольный не подойдет. Частоту надо менять от 400 до 800 Гц с периодом около секунды.
  3. Дмитрий BASIC

    Дмитрий BASIC В доску свой

    Сообщения:
    206
    Симпатии:
    107
    Так , и как это сделать ?
  4. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.915
    Симпатии:
    318
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    У нас разные МК, тут я не смогу подсказать.
  5. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.915
    Симпатии:
    318
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    На STM8 есть ЦАП в котором можно задать режим формирования пилообразного сигнала.
    Посмотрите по аналогии, может у АВР тоже есть.
  6. .ctor

    .ctor В доску свой

    Сообщения:
    720
    Симпатии:
    209
    Род занятий:
    парогенератор
    Адрес:
    Алматы
    нет у авр цап)
  7. _VN_

    _VN_ В доску свой

    Сообщения:
    500
    Симпатии:
    64
    Род занятий:
    Инженер
    Адрес:
    Алматы
    "Звуков сирены" в интернете много. Интереснее бы было что-то новое. Например, звук сирены с реверберацией или нулевые биения. Для этого нужно два источника звука с плавающей фазой сигнала. Мощность сигнала каждой не меняется и в точках, где сигнал в противофазе, будет тишина. Протяжённость зоны молчания зависит от длины волны. Эффект будет интересный. В зоне молчания вы сможете, например, разговаривать, но другие вне этой зоны услышат сирену...
    На основе этого эффекта разработаны ультразвуковые системы с высококачественным формированием звука в нужной зоне слышимости.
  8. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.915
    Симпатии:
    318
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    Если у АВР нет своего ЦАП, то для вывода простых звуков, можно использовать ШИМ. Для частоты 8МГЦ и скважности 0..255 получим 31250 значений в секунду. Вполне приемлемо для воспроизведения звуков.

    PS: Надеюсь ШИМ-то на АВР можно так настроить.
  9. Дмитрий BASIC

    Дмитрий BASIC В доску свой

    Сообщения:
    206
    Симпатии:
    107
    Шим можно настроить !
    Так а если на пальцах можете объяснить или хотя-бы фрагмент кода для наглядности ?!
    --- Сообщения объединены, 28 дек 2015 ---
    ЦАП можно резисторами распять и в порт например значения отсылать !
  10. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.915
    Симпатии:
    318
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    Все правильно, можно сделать внешний ЦАП на R2R цепи резисторов.
    ШИМ проще тем, что не нужен такой обвес, но программно сложнее. Надо у АВР-щиков спросить как он у вас там настраивается.
  11. koteika

    koteika В доску свой

    Сообщения:
    768
    Симпатии:
    118
    Род занятий:
    программирование
    Настройка ШИМ для attiny2313, меняем яркость диода:
    Код:
    #include <avr/io.h>
    #include <math.h>
    #include <util/delay.h>
    #include <avr/interrupt.h>
    
    void f(void)
    {
        while (TCNT0<255)
        {
            TCNT0++;
        }
    }
    
    ISR(TIMER0_COMPA_vect)
    {
        OCR0A++;
        _delay_ms(10);
    }
    
    int main(void)
    {
        PORTB=0x00;
        DDRB=0xC5;
        TCCR0A =(1<<WGM01)|(1<<WGM00)|(1<<COM0A1)|(1<<COM0A0);
        TCCR0B =(1<<CS00);
        TCCR1B=(1<<CS11)|(1<<CS10);
        TCNT0 = 0xC8;
        TCNT1 = 0xC8;
        OCR0A = 0x01;
        OCR1A = 0xF;
        TIMSK=(1<<TOIE0)|(1<<TOIE1);
        sei();
        while(1)
        {
            if (TIFR&(1<<TOV0))
            {
                f();
                cli();
                f();
            }
            else
            {
                if (TIFR&(0<<TOV1))
                {
                    sei();
                    f();
                }
            }
        }
    }

    Все сводится к настройке таймера который может генерировать шим.
  12. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.503
    Симпатии:
    376
    Адрес:
    Талгар
    блин Саня кинул код сюда полезный, я его потом не найду если надо будет.
    Было бы неплохо подобное выкладывать в раздел AVR
  13. Дмитрий BASIC

    Дмитрий BASIC В доску свой

    Сообщения:
    206
    Симпатии:
    107
    Спасибо UL7AAjr за подсказку и вот что получилось
    --- Сообщения объединены, 5 янв 2016 ---
    И в довесок пара мелодий

    Вложения:

    • Sirena.rar
      Размер файла:
      214,2 КБ
      Просмотров:
      55
    • Sounds.rar
      Размер файла:
      372,9 КБ
      Просмотров:
      66
    radioengineer и koteika нравится это.
  14. koteika

    koteika В доску свой

    Сообщения:
    768
    Симпатии:
    118
    Род занятий:
    программирование
    Buba_Chkhadze нравится это.
  15. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.503
    Симпатии:
    376
    Адрес:
    Талгар

Поделиться этой страницей