Я например проверял с микро сд 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-фильтр но что есть что нет звук все равно ужасно искажен
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения