Вс май 03, 2020 13:31:29
Совпадает ли инициализация с примером?
Я не вижу где CRC 0х95?
И всегда одинаковый при любых экспериментах. 29 МБ
eb 0 ef
Вс май 03, 2020 14:08:23
Вс май 03, 2020 14:52:07
Я не знаю, что эта проверка делает, но карта 32 МБ заработала без проблем.
Попробуем вернуть на аппаратный SPI и буфер 512?
Вс май 03, 2020 15:34:13
da-nie писал(а):Как я понимаю, сообщений об ошибках чтения не было?
da-nie писал(а):Вот версия с задержкой, аппаратным SPI и 256-байтным буфером.
uint32_t GetByte(uint32_t offset)
{
offset+=FATOffset;
uint32_t s=offset>>8UL;//делим на 256
if (s!=LastReadSector)
{
LastReadSector=s;
bool first=true;
if ((offset&0x1ffUL)>=256) first=false;
if (SD_ReadBlock(s>>1UL,Sector,first)==false)
{
sprintf(String,"E:%lu O:%lu",offset,s>>1UL);
WH1602_SetTextDownLine(String);
_delay_ms(5000);
WH1602_SetTextDownLine("");
}
//ошибки не проверяем, всё равно ничего сделать не сможем - либо работает, либо нет
}
return(Sector[offset&0xFFUL]);
}
SD_ReadBlock(s>>1UL,Sector,first);
uint32_t GetByte(uint32_t offset)
{
offset+=FATOffset;
uint32_t s=offset>>8UL;//делим на 256
if (s!=LastReadSector)
{
LastReadSector=s;
bool first=true;
if ((offset&0x1ffUL)>=256) first=false;
/* ТУТ КОСТЫЛЬ */
SD_ReadBlock(s>>1UL,Sector,first);
SD_ReadBlock(s>>1UL,Sector,first); // и повторяем
//ошибки не проверяем, всё равно ничего сделать не сможем - либо работает, либо нет
}
return(Sector[offset&0xFFUL]);
}
Вс май 03, 2020 16:07:54
Посмотрел fat.c, забыли задержку поставить
В итоге, сейчас вот такой костыль и он работает. Почему - думать Вам
Вс май 03, 2020 16:19:07
da-nie писал(а):Попробуйте заменить на _delay_ms(10); (обращаю внимание - на 10 мс! Не мкс!).
da-nie писал(а):Если не поможет, давайте вместо задержки поставим SD_TransmitData(0xff);
Вс май 03, 2020 16:31:42
А так все работает без проблем.
Вс май 03, 2020 16:36:03
da-nie писал(а):Все карты заработали и корректно работают?
da-nie писал(а):Сейчас скоро сделаю новую прошивку и обновлю репозиторий.
Вс май 03, 2020 16:36:57
Там будут отличия от той прошивки, что я тестирую?
Вс май 03, 2020 17:13:46
Вс май 03, 2020 19:12:35
Вс май 03, 2020 20:14:21
Вс май 03, 2020 20:24:44
А можно сделать так, чтобы после выбора файла, после нажатия кнопки CENTER, можно было выбирать загружаемые блоки?
но что-то мне подсказывает, что если на ходу переключать блоки, то Спектруму башку снесет.
Вс май 03, 2020 21:01:59
da-nie писал(а):И CENTER там была выбор файла и выход из воспроизведения файла.
da-nie писал(а):там уже все 16 кб почти под завязку.
da-nie писал(а):А вообще, я не припомню, чтобы часто надо было переключать блоки вообще.
Вс май 03, 2020 22:27:33
У этого эмулятора 4 кнопки: UP, DOWN, CENTER, SELECT. У них есть сочетания.
В меню магнитофона: при нажатой CENTER и UP/DOWN - прокрутка файлов по 10 вверх или вниз.
Во время воспроизведения файла: CENTER - пауза при воспроизведении блоков, UP/DOWN - смена блока, SELECT - выход в меню магнитофона.
Ср май 06, 2020 16:50:48
Ср май 06, 2020 17:08:47
Ср май 06, 2020 17:13:51
Ср май 06, 2020 19:33:50
if (BUTTON_UP_PIN&(1<<BUTTON_UP))
{
_delay_ms(200);
new_block=block+1;
break;
}
if (BUTTON_DOWN_PIN&(1<<BUTTON_DOWN))
{
_delay_ms(200);
if (block>0) new_block=block-1;
break;
}
Чт май 07, 2020 07:28:34