Страница 14 из 30
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Вс янв 22, 2017 19:53:53
oleg88
da-nie писал(а):Может, у вас он и происходит?
Да нет, может и через две позиции, и через три перескочить. Каждый раз по-разному.
А вот для этого все исходники и идут в комплекте.
Эх, если бы в них что-то понимать. Ну, а если бы я понимал, то вряд ли повторял чужое

Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Пн янв 23, 2017 07:37:43
da-nie
Ну, а если бы я понимал, то вряд ли повторял чужое
Так это повод разобраться и начать делать своё.

Там же очень простой код с кучей комментариев. Правда, для того, что вы хотите (перечитать каталог) нужно заново делать переинициализацию SD-карты и переустановку всех нужных переменных, а тут могут быть нюансы.
Да нет, может и через две позиции, и через три перескочить. Каждый раз по-разному.
Интересно, а у кого-нибудь ещё такие фишки есть?

Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Пн янв 23, 2017 14:01:47
Ser1961
У меня всё работает нормально и с русским ,и с китайским lcd.Проверьте на ляпы плату,подтягивающие резисторы.
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Пн янв 23, 2017 23:52:14
oleg88
da-nie писал(а):Так это повод разобраться и начать делать своё
Для того чтобы быть телезрителем необязательно самому собирать телевизор
P.S.
da-nie, чуть больше попользовался магнитофоном и не совсем пойму – то ли это небольшой дребезг, то ли я на кнопку слишком долго жму, они у меня немного тугие. Это что-то типа двойного клика – один быстро кликает, другой так не умеет и у него получается более длинная пауза между кликами (ну, для этого имеется соответствующая настройка). С возрастом сноровка теряется

Где регулировать время задержки между нажатиями на кнопку?
Кстати, кнопки "местами поменял", спасибо.
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Вт янв 24, 2017 03:04:56
Ser1961
Фото посмотреть
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Вт янв 24, 2017 17:33:40
da-nie
Для того чтобы быть телезрителем необязательно самому собирать телевизор
Но если телезритель захотел улучшить управление телевизором, то придётся ему изучить, как это можно сделать.
Где регулировать время задержки между нажатиями на кнопку?
Вот тут:
Код: Выделить всё
level_index[0]=index;
while(1)
{
//выводим данные с SD-карты
//читаем имя файла
if (FAT_GetFileSearch(string,&FirstCluster,&Size,&Directory)==true) WH1602_SetTextDownLine(string);
if (Directory==false) sprintf(string,"[%02u:%05u] Файл",level,index);
else sprintf(string,"[%02u:%05u] Папка",level,index);
WH1602_SetTextUpLine(string);
_delay_ms(200);
//ждём нажатий кнопок
while(1)
{
Вот этот _delay_ms(200); и надо менять.
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Вт фев 14, 2017 22:16:37
oleg88
Ошибочку нашел. Но по какой-то причине проявляется только на некоторых SD картах. Например, у меня из пяти карт на четырех ошибка проявляется, на одной нет.
Итак, беру карту, называю ее ZX_Games, в корень записываю три, четыре TAP файла.
В магнитофоне имя первого файл почему-то отображается как XGMS. Имена всех последующих файлов отображаются корректно. Т.е. неверно отображается только имя первого файла (сам файл воспроизводится) и оно формируется из 2, 4, 6, 8 символов названия карты - "ZX_Games" -> "XGMS".
Назв.карты -> Имя 1-го файла
123456789A -> 2468A
1234567 -> 246
12345 -> 24
123 -> 2
1 -> пусто
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Ср фев 15, 2017 05:04:02
da-nie
Плохо.

Чтобы исправить, придётся, наверное, вспоминать FAT и пытаться понять, в чём дело... Когда это будет, правда, не скажу.
У кого-нибудь такая ошибка тоже проявляется? Очень похоже, что на месте имени первого файла записано что-то левое из имени карты. Либо МК читает не из той области таблицы FAT, что странно.
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Ср фев 22, 2017 04:58:40
gdv2002
Спасибо за конструкцию! Собрал еще один мафон - все работает безупречно!
От себя добавлю пару плат. Платы сделаны под ЛУТ, да хоть под маркер, дорожки и площадки по возможности большие. Добавил подсветку экрана.

Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Вт фев 28, 2017 21:00:45
oleg88
da-nie писал(а):Очень похоже, что на месте имени первого файла записано что-то левое из имени карты.
Но на РС-то карта читается правильно. Еще раз обращу внимание – у меня есть пара карт, с которых имя первого файла читается корректно.
P.S. Не знаю по какой причине, но мне не приходят нотификации с форума, поэтому ответил с такой задержкой.
Добавлено after 11 minutes 34 seconds:
Кстати, Вы как-то сказали
da-nie писал(а):Поискал материал, оказалось, всё-таки карты на 4 ГБ уже SDHC, а не SD. Поэтому с ними работать не будет. Максимальный размер 2 ГБ. Можно, конечно, сделать поддержку карт SDHC, но FAT16 всё равно ограничена 2 ГБ.
Здесь главное не сколько потеряется места на SDHC карте при ее форматировании в FAT16, а доступность карт. Карты объемом 1-2Гб становится найти все труднее и труднее с каждым днем. Ну, а купить карту, например на 8Гб и потерять 6Гб при ее форматировании в FAT16 – не так важно при ее-то "копеечной" цене.
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Ср мар 01, 2017 05:08:52
da-nie
Но на РС-то карта читается правильно. Еще раз обращу внимание – у меня есть пара карт, с которых имя первого файла читается корректно.
У меня все карты читаются верно.

И, я так понял, у остальных тоже. Но с другой стороны, у вас тоже какой-то дребезг кнопок был, которого ни у кого не было. Отсюда можно заключить, что у вас устройство как-то специфически работает само по себе.
Попробуйте зафильтровать питание карты (3.3 В) конденсаторами 0.1 мкФ и 100 мкФ. Есть подозрение, что у вас ошибки чтения карты (я вроде бы CRC принятых блоков 512 байт не проверяю).
Карты объемом 1-2Гб становится найти все труднее и труднее с каждым днем.
Ну, пока ещё ими даже в электричке торгуют.

Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Ср мар 01, 2017 06:54:41
oleg88
Конденсаторы по питанию я поставил изначально и на МК, и на картридер. Если бы проблемы были с питанием, или возникали ошибки с чтением карты, то глюк не воспроизводился бы в точности при каждом включении магнитофона/чтении карты.
Мысля, появилась – может быть не карты в магнитофоне читаются с ошибкой, а как-то неверно/иначе/по-разному может записаться информация на карту. На РС это не влияет, т.к. там информация с карты может читаться другими, более полными библиотеками. Например, с более полной или иной корректировкой ошибок. Я вспомнил, у меня в наличии два картридера, и они как-то по-разному работают (читают, пишут, форматируют карты), т.е. конечный результат у них может быть разный. Буду проверять.
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Ср мар 01, 2017 07:20:11
da-nie
Кажется, понял, в чём дело. У файла бывает атрибут "Имя диска" (хотя для имени диска есть и отдельное поле, но там 11 символов).
Попробуйте вот эту прошивку - я её не проверял в железе (я на работе сейчас, так что устройства с собой нет).
[файл удалён]
А изменил я там вот что:
Код: Выделить всё
...
if (res==true)
{
unsigned char type=GetByte(sFATRecordPointer.CurrentFolderAddr+11UL);
if (type&ATTR_VOLUME_ID) return(false);//этот файл - имя диска
if ((type&ATTR_DIRECTORY)==0)//это файл
{
unsigned char a=GetByte(sFATRecordPointer.CurrentFolderAddr+10UL);
unsigned char b=GetByte(sFATRecordPointer.CurrentFolderAddr+9UL);
unsigned char c=GetByte(sFATRecordPointer.CurrentFolderAddr+8UL);
if (!(a=='P' && b=='A' && c=='T')) return(false);//неверное расширение
}
else//если это директория
{
unsigned char a=GetByte(sFATRecordPointer.CurrentFolderAddr);
unsigned char b=GetByte(sFATRecordPointer.CurrentFolderAddr+1UL);
if (a==(unsigned char)'.' && b==(unsigned char)'.') *directory=-1;//на директорию выше
else *directory=1;//на директорию ниже
}
...
Вписал
if (type&ATTR_VOLUME_ID) return(false);//этот файл - имя диска
Вроде бы должно помочь.
Спецификация FAT для интересующихся.
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Ср мар 01, 2017 07:57:15
oleg88
da-nie писал(а):изменил я там вот что
Это, в каком файле? Я прошивку изменял – переназначил кнопки, окультурил отображение информации на дисплее, плюс задержки под китайский дисплей свои. Поэтому готовую прошивку мне неудобно шить, я свою поправлю.
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Ср мар 01, 2017 08:01:24
da-nie
Тогда просто замените файл fat.h и перекомпилируйте.
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Ср мар 01, 2017 11:26:50
oleg88
К сожалению не помогло. Да и пока закончу эксперименты ибо, во-первых, панелька скоро придет в негодность от частых извлечений МК. Нужно сделать так чтобы программировать МК не вынимая его из панельки. Во-вторых, нужно МК покупать. У меня уже второй дохнет (ошибка записи по одному из адресов вываливается). Наверное, купил дерьмовые. У них даже маркировка уже стерлась. Ох уж эти китайцы

Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Ср мар 01, 2017 12:20:56
da-nie
Вот блин, я не во всех местах внёс исправление.
Вот тут вроде бы все места с контролем типа файла исправил.
[файл удалён]
А вы что же, убили опять контроллер? Как вам это удалось?

Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Ср мар 01, 2017 14:06:58
oleg88
da-nie писал(а):Вот тут вроде бы все места с контролем типа файла исправил.
К сожалению не помогло
da-nie писал(а):А вы что же, убили опять контроллер? Как вам это удалось?
Не знаю. Один МК раз десять записал, второй раз двадцать и теперь при записи сразу же вываливается ошибка и запись прекращается. Наверное, качество плохое, потер пальцем надпись на МК, и она стерлась, ну не может же быть такое. Ну, либо я что-то не так делаю. У меня есть еще один, записывал уже раз пять, больше не буду, а то вообще останусь без магнитофона.
P.S. Забыл сказать. С новым файлом fat.h появляется какая-то запись на LCD. После сообщения Объем SD карты …МБ, в нижней строке LCD, секунд на 10, появляется сообщение eb_55_aa (подчеркивание это пробел) и затем уже идет сообщение Файловая система FAT16- ок.
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Ср мар 01, 2017 15:03:57
da-nie
Странно, что не помогло. Больше, вроде как, ничего такого необычного я не вижу в программе.
А надпись можно убрать в файле fat.h (там sprintf стоит)- это просто сигнатура FAT- остатки от отладки. Просто были карты, на которых не находилась файловая система - почему-то при чтении были разные байты каждый раз и сигнатура не отыскивалась. Вот я считанные байты и вывел на экран и забыл убрать после этого.
Один МК раз десять записал, второй раз двадцать и теперь при записи сразу же вываливается ошибка и запись прекращается.
Это очень странно. А вот интересно, не может у вас МК просто сбоить при некоторых условиях, которые складываются с теми четырьмя картами, на которых и выводится имя диска. Дело в том, что даже если бы я не смотрел бы тип файла, который является именем диска, то выводились бы всё равно все буквы имени - это же просто файл с нулевой длиной и атрибутом "Имя диска". А у вас всё не так. Может быть, с этих карт читаются некие данные, которые контроллер искажает в памяти (достаточно 1 биту в нужном месте и поедет смещение корневого каталога, а с ним и имена файлов)? Скажем, когда бит 1 должен быть всё хорошо, а когда 0, контроллер всё равно ставит 1 и получает левое смещение. В китайских контроллерах бывает и не такое. Это обсуждалось много раз на том же easyelectronic. Попробуйте заведомо исправный и хороший контроллер погонять.
потер пальцем надпись на МК, и она стерлась, ну не может же быть такое.
Надпись, конечно, не очень стойкая, но так легко она стираться вроде как не должна.
Re: Эмулятор магнитофона для ZX-Spectrum
Добавлено: Ср мар 01, 2017 15:13:11
oleg88
da-nie писал(а):не может у вас МК просто сбоить при некоторых условиях
Микроконтроллеров у меня было пять штук и все пять работали одинаково.