roboforum.ru

Технический форум по робототехнике.
Текущее время: 03 дек 2024, 17:46

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 03 июн 2009, 21:34 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
Привет всем!
Сделал по http://eldigi.ru/site/house/18.php(там исходник на ИАР), только вывел на ШИМ +добавил буфер 256 байт, чтобы не было паузы во время чтения с флеш (кварц 24.576 МГц (во время прошивания устанавливал 16 Мгц, иначе не шьеться)), звук
8 бит дискр 44100 Гц моно, вполне приемлемо для игрушек. флешка Микро СД 512 МБ,
питание от аккумулятора сотика + усилитель от китайского радио.
вот здесь поменял часть кода исходника
Код:
/*
---------------------------------------------------------------------------------------------
   Глобальные переменные
---------------------------------------------------------------------------------------------
*/

unsigned int   count=0;// счетчик байт

unsigned char data[257]; //буфер от пауз
unsigned char         song;
unsigned char         play;
unsigned char         gotoNextSong;

__flash char         FileNames [10][11] =
{
   "muson01.wav","muson02.wav","muson03.wav","muson04.wav","muson05.wav",
   "muson06.wav","muson07.wav","muson08.wav","muson09.wav","muson10.wav"
};

/*
=============================================================================================
   Проверка заголовка WAV файла на соответсвие параметрам воспроизведения.
   Формат WAV файла должен быть:   PCM 8 бит 16000 КГц Моно.
=============================================================================================
*/
unsigned char WaveComp (char const __flash name[])
{
   //~~~~~~~~~~~~~
   FILE      *f;
   TitleWave   tw;
   //~~~~~~~~~~~~~

   f = fopenc(name,READ);
   if ( f==0 ) return (1);                           // Не открыть файл
   fread(&tw,sizeof(TitleWave),1,f);
   fclose(f);
   
   if ( strncmp_G(tw.id_riff,"RIFF",4) != 0 ) return (1);   // Не совпал идентификатор RIFF
   if ( strncmp_G(tw.id_chuck,"WAVE",4) != 0 ) return (1);   // Не совпал идентификатор CHUCK
   if ( strncmp_G(tw.fmt,"fmt ",4)!= 0 ) return (1);      // Не совпал идентификатор FMT
   if ( tw.type != 1 ) return (1);                     // Тип данных - не выборка
   if ( tw.channels != 1 ) return (1);                  // Не моно
   //if (( tw.freq != 16000 )) return (1);               // Не 16000 КГц
   //if (( tw.bytes != 16000 )) return (1);
   
        if ( tw.bits != 8 ) return (1);                        // Не 8 бит
   
     
   return (0);
}

/*
=============================================================================================
   MAIN.
=============================================================================================
*/
void main ()
{
unsigned int i=0;

   //~~~~~~~~~~
   FILE   *fp;
   //~~~~~~~~~~
   
        OCR2=0x80;
         SPSR = 0x01; //setup SPI
         //start
                         
   while (!initialize_media()){};
   
   
   
   PORTD_Bit2 = 1;
   PORTD_Bit3 = 1;
       
         
       
   // Sleep enable
   MCUCR |= (1 << SE);
   
   // External Interrupts enable
   GICR |= (1 << INT1)|(1 << INT0);
   
   



   SEI();
       
       
   while(1)
   {
      if (play)
      {
         GICR &= ~(1 << INT0);
         // Timer/Counter 0 initialization
         TCCR0 |= (1 << CS01);
         
         // Timer(s)/Counter(s) Interrupt(s) initialization
         TIMSK |= (1 << TOIE0);
                       
         if (!WaveComp (FileNames[song]))
         {
            fp = fopenc(FileNames[song], READ);
                         OCR2  = 0x80;       
                         DDRD = 0x80;       
          TCCR2 = 0x69;
            while ( ((fp -> position) < (fp -> length)) && !gotoNextSong )
            {
                                 
                                  while (!count)
                                   
                                  {
                                   
                            for (i=0;i<256;i++)
                            {
                           data[i]=fgetc(fp);
                            }
                                  }
                         
                               
                                SLEEP();
            }
                             
                            DDRD = 0x00;
            fclose(fp);
            if (!gotoNextSong) play = 0;
            gotoNextSong = 0;
         }
         else song = 0;
         TCCR2 = 0x00;
         // Stop Timer0
         TCCR0 &= ~(1 << CS01);
         TIMSK &= ~(1 << TOIE0);
         GICR |= (1 << INT0);
                       
      }
      else SLEEP();
   };
}

/*
=============================================================================================
   Timer0 interrupt.
=============================================================================================
*/
#pragma vector = TIMER0_OVF_vect
__interrupt void Timer0_Ovf (void)
{
TCNT0 = 0xBD;
OCR2=data[count];
if (count<255) count++;else count=0;

}

/*


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 04 июн 2009, 08:29 
Не в сети
Аватара пользователя

Зарегистрирован: 27 ноя 2004, 00:42
Сообщения: 3339
Откуда: совсем Москва
ФИО: Григорий
это Вы хвастаетесь? Или что-то спрашиваете?

_________________
злой полицейский


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 04 июн 2009, 09:38 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2008, 14:41
Сообщения: 997
Откуда: СПб
прог. языки: C,Python
по моему 1 вариант бедная мега на 24.576 МГц :crazy:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 04 июн 2009, 14:33 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
как 32я может на 24МГц запуститься? может несколько импульсов с кварца за период она просто проглатывает?

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 04 июн 2009, 14:35 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
на 24 Мгц, мега32 вообще не запускается.

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 04 июн 2009, 14:47 
Не в сети
Аватара пользователя

Зарегистрирован: 20 мар 2009, 12:45
Сообщения: 682
Откуда: Украина, Одесса
ФИО: Сергей
Я проверял штук 5 МЕГ128 и штук 10 МЕГ16
все запустились на 20 МГц, пару штук програмиться не хотели, но работали
на 25 МГц ниодна не шилась и пару МЕГ16 как-то работало (АЦП сбоил)...
так что все может быть :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 04 июн 2009, 15:33 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Единичный экземпляр может и будет работать, но ИМХО нестабильно

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 04 июн 2009, 17:03 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
мега32 работала и на 25 и на 27Мгц, сегодня проверял.
Поет быстрее.
Для серьезных проектов не рискнул бы.А для игрушек пойдет.
Не шьется эт факт!
Шить нужно при стандартных частотах, а затем перепаивать кварц.
Чем спорить (может не может) попробуйте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 04 июн 2009, 17:09 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Пробовал, мега32 больше 20 не работала (хотя на корпусе 16 мгц), мега88 и на 25 мгц работала, больше кварца не было - не проверял

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 04 июн 2009, 17:14 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
Вообще у меня Atmega32L питал 3.7 вольта, по даташиту до 8 МГц.Как проц может работать на 27 МГц расщитанный на 8? Но ведь работает.
Если просто нужен звук то пойдет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 04 июн 2009, 17:18 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Нечего спорить. Попадаются экземпляры которые удаётся разогнать, попадаются и такие, что не разгоняются. Для единичного изделия разгонять можно, если рассчитывать на повторяемость - надо соблюдать рекомендации производителя

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 04 июн 2009, 17:19 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
MiBBiM писал(а):
может несколько импульсов с кварца за период она просто проглатывает?

т.е. кварц-то на 24, но мега в реале работает медленнее

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 04 июн 2009, 17:24 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
Если бы она работала помедленнее с 24, какой резон ставить такой кварц. Просто 16 не хватило
для звука с дискр 44100,для 32000 16 Мгц вполне(прошивка такая).
по материалам http://eldigi.ru/site/house/18.php прошивка исходник (http://ifolder.ru/12499310) с шим, wav с дискр 44100 8 bit mono
ссылка до 06.07.09
Без огранич
Вложение:
Комментарий к файлу: Тоже самое
code.rar [317.58 КиБ]
Скачиваний: 62


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ВАВ через ШИМ
СообщениеДобавлено: 07 дек 2010, 00:02 
Не в сети

Зарегистрирован: 06 дек 2010, 23:59
Сообщения: 1
=DeaD= писал(а):
А в чем проблема? Как выдать на ШИМ нужную скважность или что?

Добавлено спустя 1 минуту 48 секунд:
Допустим у вас дискретизация 8 бит, 44КГц, 44000 раз в секунду ставите прерывание и в нём берете очередной байт и выставляете в него скважность ШИМ. Готово.


А как при эом будет с realtime'овостью? То же использование в роботе - получится 1) одновременно крутить сервами, анализировать датчики, просчитыват путь и реакцию, и 2) чтобы звук не затыкался?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЦАП в AVR через ШИМ и вывод звука .WAV
СообщениеДобавлено: 23 фев 2011, 16:18 
Не в сети

Зарегистрирован: 03 июн 2009, 21:16
Сообщения: 50
Откуда: пос. Актюбинский
Skype: ffaanniiss777
Вот еще wav плеер на Atiny2313 16MHz mmc fat16 mono 16bit
Изображение
Исходный код на IAR
http://narod.ru/disk/6206592001/IAR_WAV%2B2.rar.html


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO