NewSistems Опубликовано 28 марта, 2016 Жалоба Поделиться Опубликовано 28 марта, 2016 В общем тут такое дело, считываю значит в буффер данные из wav файла, но при достижении адреса 33040 относительно начала файла, почему-то проверка на f_eof() оказывается положительной, как будто я достиг конца файла, как так ? Причем какой бы файл я не хотел считать - одно и тоже пишет. С чего это вдруг я мог достигнуть конца файла, когда это вовсе не конец ? http://forum.cxem.net/public/style_emoticons/default/unknw.gif Может какие то макросы в ffconf есть, которые выдают такое вот ограничение ? Вот код: // прерывание по переполнению, ШИМISR(TIM0_OVF){if(temp <= BUF_SIZE){OCR0A = audiobuf[nAudioBufferIndex];nAudioBufferIndex++;}}if(mres) /// если произошла какая то ошибка при работе с файлом{PORTD.0 = 1;mres = f_open(&mfile,g_FileInfo[nFileIndex].szFileName,FA_OPEN_ALWAYS | FA_READ); // открываем файл// Стартуем таймер 8 битTCCR0A=(1< 33040 )}if(nAudioBufferIndex > BUF_SIZE){nAudioBufferIndex = 0; }mres = f_lseek(&mfile,44+HALF_BUF*nHalfBuffers);switch (state){case 0:if (nAudioBufferIndex >= HALF_BUF){ mres = f_read(&mfile,&audiobuf[0], HALF_BUF, &bw); state = 1; nHalfBuffers++; if(bw < HALF_BUF) { // здесь тоже самое, как будто достигли конца файла }}break;case 1:if (nAudioBufferIndex < HALF_BUF){mres = f_read(&mfile,&audiobuf[HALF_BUF], HALF_BUF, &bw);state = 0;nHalfBuffers++;if(bw < HALF_BUF) { }}break;} Все выборки спокойно идут в OCR0A, но по достижении 33040 , звук обрывается, выдается EOF и все по новой стартует с начала файла. Раздел: AVR Читать дальше Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.