Например TDA7294

Форум РадиоКот • Просмотр темы - mp3 плеер на attiny2313 на ммс/сд картах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс дек 28, 2025 17:41:59

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 465 ]    , , , , 5, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Пт мар 11, 2011 12:04:46 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
Первая сырая но рабочая версия
Вложение:
WAV_PLAYER.rar [2 KiB]
Скачиваний: 421
файлы от 0.wav -Z.wav проверял с флешками 128, 512 2Г
Звук файлы на 8 MГЦ 22 кгц 16 бит моно или 8 бит стерео
Звук файлы на 16 MГЦ 44 кгц 16 бит моно или 8 бит стерео


Последний раз редактировалось phanis Пт мар 11, 2011 19:41:07, всего редактировалось 3 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Пт мар 11, 2011 15:09:02 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Вс янв 30, 2011 22:31:18
Сообщений: 23
Откуда: Украина Харьков
Рейтинг сообщения: 0
а я использовал самую последнюю прошивку,и карту памети 1 гиг тошыба*.От лопатки из под карты памяти соединял проводками от иде шлейфа размером примерно 1,5 см к микрухе attiny2313,что-то не пашет,слышно щелкание,кто может примерно сказать в чём ошибка?) и есть те у кого заработало ?)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Пт мар 11, 2011 19:35:17 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
Прошу прощения я не тот файл залил
Вот CRC 56B7 h в PonyProg 8 бит стерео 22 кгц для 8 МГц 44 для 16 МГц
Вложение:
WAV_PLAYER.rar [2 KiB]
Скачиваний: 325


CRC 8DAE h в PonyProg 16 бит моно через 5 -10 кОм между каналами 22 кгц для 8 МГц 44 для 16 МГц
Вложение:
WAV_PLAYER_mono.rar [2.01 KiB]
Скачиваний: 320


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Сб мар 12, 2011 02:49:06 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Сб фев 07, 2009 19:21:25
Сообщений: 346
Рейтинг сообщения: 0
[quote="phanis"][/quote]
а вы на словах или блок схемой можете описать алгоритм работы сваей программы что она на 16 МГц такую производительность даёт.

_________________
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Сб мар 12, 2011 08:35:49 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
Да, хитрость заключается в том что файлы нужно закидывать после форматирования флешки или производить дефрагментацию после удаление файлов замены. Для того что бы кластеры файла расположились
по порядку, это позволяет избежать работы связанные с поиском по таблице(FAT 16) следующего кластера. Достаточно знать длину файла и начальный кластер файла, производить по секторное чтение файла пока не прочитали всю длину.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Сб мар 12, 2011 14:37:35 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Сб фев 07, 2009 19:21:25
Сообщений: 346
Рейтинг сообщения: 0
это я знаю я делал именно также. сначала вычислял первый физический сектор файла затем его размер измеряемый в секторах и и считывал эти данные, мне больше интересен сам алгоритм считывание данных с флешки и последующие его воспроизведение.

_________________
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Сб мар 12, 2011 17:13:00 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
Создаю не большой кольцевой буфер у меня 64 байта(ОЗУ Atiny 2313 всего 128 байт)
Далее заполняю буфер.
Запускаю таймер с прерыванием на частоте 44100 Гц для 16 МГц
С каждым прерыванием записываю в 2 регистра ШИМ из буфера

Код:
#define AUDIO_BUFFER 64

#define MAX_ERROR  10
volatile  unsigned char   ERROR_COUNT;
volatile  unsigned char   audio_data_count;
uchar   _FF_buff[AUDIO_BUFFER];




#pragma vector = TIMER0_OVF0_vect
__interrupt void Timer0_Ovf (void)

{
char temp1,temp2,temp3;
TCNT0 = 0xd5; //reload counter value

temp1= audio_data_count;

temp2=_FF_buff[temp1+1];
temp3=_FF_buff[temp1] ;
temp2+=0x80;
OCR1AL=temp2;//регистры шим
OCR1BL  =temp3;//регистры шим

 temp1+=2;

 if (temp1>=AUDIO_BUFFER) temp1=0;
 audio_data_count=temp1;

}

  START_TIMER_0;
                           
                            while (length )
                     
                           {
                                     
                             if  (audio_data_count != i2)   
                                     
                             {
                                       
                                     
                               if (!i)
   
 
                                  {   

                                   _SD_send_cmd( TEMP_POSITION  );
                                   
                                   TEMP_POSITION++;
     
                                   length--;
                                       
                                  }

                     
                               _FF_buff[i2]=_FF_spi(0xFF);
 
                     
                               _FF_buff[i2+1]=_FF_spi(0xFF);
 
                               i ++;
                               
                               i2+=2;
                               
                               if (i2>=AUDIO_BUFFER) i2=0;   
                           
                                     
                             }
      
                           }






Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Сб мар 12, 2011 17:28:25 
Открыл глаза

Зарегистрирован: Ср апр 14, 2010 20:42:24
Сообщений: 40
Откуда: Молдова г,Кишинев
Рейтинг сообщения: 0
phanis здравствуйте я хотел спросит так-как я в этом деле новичок
Сначала надо отформатировать флешку под FAT16 загрузить в нее мелодии WAV
прошить контроллер или в флешку нечего не нужно загружать?
И еще в какой вы среде работаете над исходником


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Сб мар 12, 2011 17:45:41 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
alex1991 писал(а):
phanis здравствуйте я хотел спросит так-как я в этом деле новичок
Сначала надо отформатировать флешку под FAT16 загрузить в нее мелодии WAV
прошить контроллер или в флешку нечего не нужно загружать?
И еще в какой вы среде работаете над исходником


Здравствуйте alex1991!

прошить контроллер
отформатировать флешку (не память контроллера FLASH, а карту памяти SD MMC ) под FAT16 загрузить в нее мелодии с названием файлов от 0.wav 1.wav ит д можно до z.wav
Код:

   _FF_buff[0 ]=SOUND_N;//название пример 1.wav
        _FF_buff[1 ]=0x20;
        _FF_buff[2 ]=0x20;
        _FF_buff[3 ]=0x20;
        _FF_buff[4 ]=0x20;
        _FF_buff[5 ]=0x20;
        _FF_buff[6 ]=0x20;
        _FF_buff[7 ]=0x20;
        _FF_buff[8 ]='W';
        _FF_buff[9 ]='A';
        _FF_buff[10]='V';


Среда IAR AVR 5.50

Еще по вопросуБАТАРЕЙКУС на счет скорости
если у вас используется аппаратный SPI, (в attiny2313 к сожалению полу аппаратный USI, SPI только для программирования ) то можно не много увеличить скорость
за счет выполнения операций, во время ожидания отправки приема байта в меге примерно 20 циклов

меговский пример


unsigned char _FF_spi(unsigned char byte)
{
SPDR = byte;
while (!(SPSR & 0x80));// вот главный тормоз ожидание
byte = SPDR;
}


_FF_buff[i2]=_FF_spi(0xFF);

i ++;


можно примерно так
SPDR = 0xFF;
i ++;
while (!(SPSR & 0x80));

_FF_buff[i2]=SPDR;
во первых мы не перешли в подпрограмму unsigned char _FF_spi(unsigned char byte)
во вторых мы прибавили к i 1;
А если еще на ассемблере ..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Сб мар 12, 2011 23:31:12 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Сб фев 07, 2009 19:21:25
Сообщений: 346
Рейтинг сообщения: 0
phanis писал(а):


спасибо за ответ. а если можно на аsm. то скинти пожайлусто этот <<кольцевой буфер>> на аsm. и если можно в 2 словах расскажите как им пользоваться. попробую усовершенствовать своё изобритение поставив туда колцевой буфер.

_________________
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Вс мар 13, 2011 00:13:14 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
К сожалению в asm только начинаю изучать. :(
Если в двух словах.
Нужно считывать с флеш в буфер пока номер считываемого байта не равен воспроизводимому
Например закинули один байт в регистр ШИМ из буфера, прибавили 1 в одном счетчике (воспроизведено) - это все в прерывании
Теперь вышли из прерывания вернулись в программу чтения с флеш, сравниваем счетчик (воспроизведено) с счетчиком(прочитано), если не равно читаем байт с флеш прибавляем 1 счетчик(прочитано)
И опять сравниваем.Если равно. сидим ждем (можно рассчитать адрес следующего сектора, на перёд приготовить). Происходит прерывание и опять по новому.
Счетчик(воспроизведено) обнуляем в прерывании при достижении нашего размера буфера.
Счетчик(прочитано) обнуляем в в программе чтения с флеш при достижении нашего размера буфера.
Получается что то вроде 2х потоков.
Т.е нужно максимально задействовать контроллер.
А не так прочитали 512 байт в буфер и пока не воспроизвели все 512 байт ждем.
Пока мы будем отправлять CMD17 с адресом следующего сектора ждать от флеш 0xFE потом читать 512 байт
Откуда проигрывать, буфер прочитали.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Вс мар 13, 2011 13:43:46 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
У кого нибудь заработало с новыми прошивками?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Вс мар 13, 2011 14:25:34 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Я понял так, по поводу буфера:
Значит у нас воспроизведение идёт медленнее, чем загрузка данных с флешки. Так?
При первом запуске мы заполняем сначала буфер данными с флешки. Как заполним, начинаем воспроизведение из буфера. Так? Прочитали первый байт и перешли ко второму. Так? Следом же грузим следующий байт из флешки и заполняем им первую освободившуюся ячейку в буфере, пока воспроизводится второй байт. Так? Прочитали второй байт и переходим к третьему. Так? второй заменяем новым байтом с флешки. Так? Далее так-же поступаем с остальными байтами. Так? Как прочитали последний байт в буфере, переходим в начало буфера, а там уже новые байты. То есть как прочитали байт из буфера, то сразу же заменяем прочитанный новым. Так? Причём алгоритм надо организовать так, чтобы загрузка данных с флешки продолжалась до тех пор, пока счётчик загрузки не сравняется с текущим содержимым счётчика воспроизведения, чтобы, если мы задержимся на инициализации нового блока данных на флешке, мы не опоздали с заменой устаревших байтов. На этом-же принципе и ориентироваться при замене проигранных байтов. Так?

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Вс мар 13, 2011 14:40:31 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
Да именно так.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Вс мар 13, 2011 14:50:47 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Ясно, а считывание нового байта можно организовать по прерыванию таймера, который настроен на режим PWM для воспроизведения. Понял. Хочу собрать устройство голосового оповещения для кое-каких систем автоматизации. Имею на вооружении МК tiny26 и старую флешку MMC на 30 MB.
Аудио планирую использовать в wav формате. Плохо, что у меня выходы USI и ШИМа находятся на одних и тех же ногах, но один инвертированный выход ШИМ выходит рядом. А таймер, как оказалось, можно настроить на вывод ШИМа только через него. :) Так как ШИМ инвертированный, то мне придётся его проинвертировать инвертором на быстродействующей логике.
Или можно не инвертировать выход?

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Вс мар 13, 2011 15:22:05 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
DX168B писал(а):
Ясно, а считывание нового байта можно организовать по прерыванию таймера, который настроен на режим PWM для воспроизведения.

Можно, но думаю будут потери в скорости воспроизведения.А чем while не устраивает.

Цитата:
Плохо, что у меня выходы USI и ШИМа находятся на одних и тех же ногах, но один инвертированный выход ШИМ выходит рядом. А таймер, как оказалось, можно настроить на вывод ШИМа только через него.


Да, весьма проблематичное место. Может ЦАП отдельно поставить.


Цитата:
Так как ШИМ инвертированный, то мне придётся его проинвертировать инвертором на быстродействующей логике.
Или можно не инвертировать выход?

На счет этого даже не беспокойся. Можно не инвертировать выход.По даташиту PB3 (OC1B) PB3.Не инверсный.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Вс мар 13, 2011 16:18:14 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
phanis писал(а):
1.
Можно, но думаю будут потери в скорости воспроизведения.А чем while не устраивает.

2.
Да, весьма проблематичное место. Может ЦАП отдельно поставить.

3.
На счет этого даже не беспокойся. Можно не инвертировать выход.По даташиту PB3 (OC1B) PB3.Не инверсный.

1. Цикл while не устраивает, по тому, что я на ассемблере пишу. :)
На Си пишу только для ПК. Можно попробовать организовать прерывание по сравнению с регистром OCR1A, а выводить всё равно придётся через OCR1B. В OCR1A кинуть число, чуть меньшее, чем в регистре OCR1C, который отвечает за частоту ШИМ. Так можно добиться более раннего прерывания, для того, чтобы успеть загрузить новый байт и проделать все необходимые операции.

2. Есть парочка 16-битных ЦАПов, но они рассчитаны для воспроизведения CD потока через SPI интерфейс. Незнаю, пойдут или нет.

3. Спасибо. :)

Писать пока не начал. Пока продумываю алгоритмы и варианты. :)

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Вс мар 13, 2011 16:29:31 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
Если PORTA свободен, может собрать матрицу R-2R в качестве параллельного ЦАП.

Цитата:
Можно попробовать организовать прерывание по сравнению с регистром OCR1A, а выводить всё равно придётся через OCR1B. В OCR1A кинуть число, чуть меньшее, чем в регистре OCR1C, который отвечает за частоту ШИМ. Так можно добиться более раннего прерывания, для того, чтобы успеть загрузить новый байт и проделать все необходимые операции.


Не совсем понял.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Вс мар 13, 2011 17:42:43 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Значит так:
У нас есть таймер с двухканальным ШИМ.
Там есть три регистра для сравнения с регистром TCNT. Эти регистры: OCR1A - для вывода в первый канал ШИМ, OCR1B - для вывода во второй канал ШИМ и OCR1C - задаёт частоту и разрешение (resolution) ШИМ. То есть мы кидаем например в OCR1C число 0х0F и таймер всегда будет считать до этого числа и сбрасываться в нуль. Если мы кинем в регистр OCR1B число меньшее (обязательно), чем число в регистре OCR1C, то таймер дёрнет флагом прерывания и изменит аппаратно состояние на выходе OC1B. То же самое происходит и с OCR1A и выходом OC1A.
Так вот, что я думаю сделать:
Отрубаю полностью вывод с OCR1A и вырубаю инверсный выход ^OC1B.
В OCR1C кидаю значение 0xFF, в OCR1B буду грузить данные из буфера, а в OCR1A кину число, чуть меньшее, чем в регистре OCR1C, например 0xFB и разрешу прерывание по сравнению с регистром OCR1A. Как таймер досчитает до значения 0xFB, тут-же сработает прерывание по сравнению с OCR1A. В этом прерывании я загружу новый байт из буфера. (А заполнять буфер можно в основной программе. Это для моей задачи подойдёт.) Таймер продолжит считать до 0xFF и сбросится. Но там уже к тому времени будет новое значение в регистре OCR1B. Надо только посчитать такты и максимально подогнать эти моменты впритык. То есть, чтобы сброс таймера и выброс байта в OCR1B происходили одновременно, желательно в один и тот же такт.

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
СообщениеДобавлено: Вс мар 13, 2011 18:26:45 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
Да, действительно интересно получается, одним таймером и ШИМ и запись байта в регистр OCR1B.
Спасибо, за разъяснения.

А как можно выключить инверсный OCR1B? Во время работы ШИМ и одновременной работы USI.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 465 ]    , , , , 5, , , ...  

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y