Цитата(etoja @ Sep 24 2008, 14:58)

Длина блока зашита в карточку и работать с другой длиной блока не будет.
Читать карточку можно только блоками. С произвольного адреса - нельзя.
Для карточек более 2Гбайт размер блока может быть 1024 байта.
Не старайтесь решить задачу вывода изображения и звука на AVR.
Возьмите дешёвый ARM, например LPC2103. Сделаете гораздо быстрее.
Это все не так! Вам надо внимательней читать спецификацию
Если брать CSD версии 1.0 ( standart capacity)
то там есть параметр READ_BL_LEN он обычно 512 ( но для карт больше 1 гб т.е. в районе 2 GB это максимум для standart capacity READ_BL_LEN = 1024.
Но этот параметр не влияет на чтение, при чтении по умолчанию BLOCK_LEN = 512.
И больше 512 его устанавливать нельзя! (Block Length set by CMD16 can be set up to 512 bytes regardless of READ_BL_LEN.)
к тому же! ВЫ МОЖЕТЕ читать хоть по байту! Главное не пересекать границу 512 байтового сектора!
( у standart capacity для чтения выставляется абсолютный адрес байта! )
Block read is block oriented data transfer. The basic unit of data transfer is a block whose maximum
size is always 512 bytes. Smaller blocks whose starting and ending address are entirely contained
within 512 bytes boundary may be transmitted.