Странно, что не помогло. Больше, вроде как, ничего такого необычного я не вижу в программе.
А надпись можно убрать в файле fat.h (там sprintf стоит)- это просто сигнатура FAT- остатки от отладки. Просто были карты, на которых не находилась файловая система - почему-то при чтении были разные байты каждый раз и сигнатура не отыскивалась. Вот я считанные байты и вывел на экран и забыл убрать после этого.
Один МК раз десять записал, второй раз двадцать и теперь при записи сразу же вываливается ошибка и запись прекращается.
Это очень странно. А вот интересно, не может у вас МК просто сбоить при некоторых условиях, которые складываются с теми четырьмя картами, на которых и выводится имя диска. Дело в том, что даже если бы я не смотрел бы тип файла, который является именем диска, то выводились бы всё равно все буквы имени - это же просто файл с нулевой длиной и атрибутом "Имя диска". А у вас всё не так. Может быть, с этих карт читаются некие данные, которые контроллер искажает в памяти (достаточно 1 биту в нужном месте и поедет смещение корневого каталога, а с ним и имена файлов)? Скажем, когда бит 1 должен быть всё хорошо, а когда 0, контроллер всё равно ставит 1 и получает левое смещение. В китайских контроллерах бывает и не такое. Это обсуждалось много раз на том же easyelectronic. Попробуйте заведомо исправный и хороший контроллер погонять.
потер пальцем надпись на МК, и она стерлась, ну не может же быть такое.
Надпись, конечно, не очень стойкая, но так легко она стираться вроде как не должна.