Я например проверял с микро сд 128, мини сд 512, микро сд 2г, обнаружил отличие по времени инициализации кто то быстрее кто то медленнее. Да и по скорости чтения отличаются. А вот просто СД или ММС проверить не смог, не оказалось под рукой.
phanis здравствуйте ! У меня вот только такая проблема не хочет читать файлы которые идут от 10.wav и далее После воспроизведении 9.wav он начинает воспроизводить первый файл с карты Не пойму что я сделал не так
Все правильно я же писал файлы 0.wav 1.wav .... 9.wav a.wav b.wav c.wav... z.wav все и опять по новой. имя файла 1 символ + расширение .wav 10.wav это уже 2 символа в имени файла
phanis еще раз здравствуйте ! У меня такой вопрос в исходнике который вы выложили (за что огромное вам спасибо ) чтобы он работал на Atmega8 нужно только регистры ШИМ-а поменять или что-то еще?
Основное отличие я думаю такое. ATtiny2313 работает с картой через интерфейс USI(в режиме полу аппаратный SPI ),а Мега8 имеет аппаратный SPI, его и нужно будет задействовать для работы с картой памяти. Ну и входа выхода по мелочи. Для Atmega8 можно найти в интернете готовые решения т.к ОЗУ у нее достаточно.
phanis здравствуйте ! Спасибо за ссылки жалко исходники на кодевижн а я предпочитаю авр студио си И еще хотел спросить я решил заняться переносом вашего исходника в авр студио и он не хотел компилироваться из за этих строк asm("jmp 0"); я поменял ее на asm("rjmp 0"); и все пошло только нечего в железе не работает Ну заменил прерывание на ISR (TIMER0_OVF_vect) ну все равно выдает 5 предупреждений
Код:
d:/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>." ../main.c:444: warning: array subscript has type 'char' ../main.c: In function 'main': ../main.c:114: warning: 'BPB_SecPerClus' may be used uninitialized in this function ../main.c:108: warning: 'c' may be used uninitialized in this function ../main.c:108: warning: 'n1' may be used uninitialized in this function
У меня просто опыта не хватает если можете помогите И вот весь код
case 0x00: if(resp==0xEB) n=1,ent_cntr=0x1F8;break;
case 0x1BF: if(resp) n=1;break; case 0x1C6: if(n) PT_SecStart.cval.LO = resp;break; case 0x1C7: if(n) PT_SecStart.cval.HI = resp,ent_cntr=0x1F8;break;
case 0x1CF: if(resp) n=1;break; case 0x1D6: if(n) PT_SecStart.cval.LO = resp;break; case 0x1D7: if(n) PT_SecStart.cval.HI = resp,ent_cntr=0x1F8;break;
case 0x1DF: if(resp) n=1;break; case 0x1E6: if(n) PT_SecStart.cval.LO = resp;break; case 0x1E7: if(n) PT_SecStart.cval.HI = resp,ent_cntr=0x1F8;break;
case 0x1EF: if(resp) n=1;break; case 0x1F6: if(n) PT_SecStart.cval.LO = resp;break; case 0x1F7: if(n) PT_SecStart.cval.HI = resp,ent_cntr=0x1F8;break;
}
ent_cntr++ ; } SD_CS_OFF();
if (n==0) asm("rjmp 0");
for (ent_cntr=0; ent_cntr<512; ent_cntr++) _FF_spi(0xFF);
_SD_send_cmd(PT_SecStart.ival); for (n=0; n<0x3B; n++) { resp=_FF_spi(0xFF);
switch(n) {
// Количество секторов на кластер case 0x0D: BPB_SecPerClus = resp;break;
// Зарезервированные сектора case 0x0E: BPB_RsvdSecCnt.cval.LO = resp;break; case 0x0F: BPB_RsvdSecCnt.cval.HI = resp;break;
case 0x10: c = resp;break;
case 0x11: BPB_RootEntCnt.cval.LO = resp;break; case 0x12: BPB_RootEntCnt.cval.HI = resp;break;
// Get the FATSz16 value case 0x16: BPB_FATSz16.cval.LO = resp;break; case 0x17: BPB_FATSz16.cval.HI = resp;break;
case 0x36: if (resp != 'F') asm("rjmp 0"); ;break; case 0x37: if (resp != 'A') asm("rjmp 0"); ;break; case 0x38: if (resp != 'T') asm("rjmp 0"); ;break; case 0x39: if (resp != '1') asm("rjmp 0"); ;break; case 0x3A: if (resp != '6') asm("rjmp 0"); ;break;
Побывал переносить на CAVR ICCAVR не чего хорошего не вышло. На AVR Studio ни когда не работал . Даже не знаю чем помочь. Может здесь что полезное можно нарыть.. http://en.pudn.com/search_db.asp?keyword=mmc
phanis спасибо за ссылки и еще хотел спросить asm ("rjmp 0"); и asm ("jmp 0"); я так понял отличаю только тем что у asm ("jmp 0"); адресное пространство переноса 2 Кбайт а у asm ("rjmp 0"); 4 Кбайт так?
phanis здравствуйте ! Я хотел спросить хотел в вашем исходнике добавить функцию переключения мелодии при нажатию на кнопку я так понял за переход на следующую мелодию отвечает SOUND_N; Но что-то он не переключает когда делаю так if (!(PIND & (1<<Knopka)) || (SOUND_N > '0'))SOUND_N='0';// проверить "0" на линии 4 порта D Может и неправильно я так вписал в программировании я начинающий Помогите ели можете пожалуйста с примером кода как можно заставить переключать следующую мелодию Если надо вот код на данный момент
case 0x00: if(resp==0xEB) n=1,ent_cntr=0x1F8;break;
case 0x1BF: if(resp) n=1;break; case 0x1C6: if(n) PT_SecStart.cval.LO = resp;break; case 0x1C7: if(n) PT_SecStart.cval.HI = resp,ent_cntr=0x1F8;break;
case 0x1CF: if(resp) n=1;break; case 0x1D6: if(n) PT_SecStart.cval.LO = resp;break; case 0x1D7: if(n) PT_SecStart.cval.HI = resp,ent_cntr=0x1F8;break;
case 0x1DF: if(resp) n=1;break; case 0x1E6: if(n) PT_SecStart.cval.LO = resp;break; case 0x1E7: if(n) PT_SecStart.cval.HI = resp,ent_cntr=0x1F8;break;
case 0x1EF: if(resp) n=1;break; case 0x1F6: if(n) PT_SecStart.cval.LO = resp;break; case 0x1F7: if(n) PT_SecStart.cval.HI = resp,ent_cntr=0x1F8;break;
}
ent_cntr++ ; } SD_CS_OFF();
if (n==0) asm("rjmp 0");
for (ent_cntr=0; ent_cntr<512; ent_cntr++) _FF_spi(0xFF);
_SD_send_cmd(PT_SecStart.ival); for (n=0; n<0x3B; n++) { resp=_FF_spi(0xFF);
switch(n) {
// Количество секторов на кластер case 0x0D: BPB_SecPerClus = resp;break;
// Зарезервированные сектора case 0x0E: BPB_RsvdSecCnt.cval.LO = resp;break; case 0x0F: BPB_RsvdSecCnt.cval.HI = resp;break;
case 0x10: c = resp;break;
case 0x11: BPB_RootEntCnt.cval.LO = resp;break; case 0x12: BPB_RootEntCnt.cval.HI = resp;break;
// Get the FATSz16 value case 0x16: BPB_FATSz16.cval.LO = resp;break; case 0x17: BPB_FATSz16.cval.HI = resp;break;
case 0x36: if (resp != 'F') asm("rjmp 0"); ;break; case 0x37: if (resp != 'A') asm("rjmp 0"); ;break; case 0x38: if (resp != 'T') asm("rjmp 0"); ;break; case 0x39: if (resp != '1') asm("rjmp 0"); ;break; case 0x3A: if (resp != '6') asm("rjmp 0"); ;break;
Все разобрался Ступил не убрал вот эту строку while (length ) и все заработало как я хотел спасибо Вот такой еще вопрос как можно улучшить качество звука ставил RC-фильтр но что есть что нет звук все равно ужасно искажен
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения