Здравствуйте.
Имеется проблема:
Atmega8L, к ней подключена SD карточка (Uпит 3,3В).
Инициализация проходит успешно, сектора читаются, но после записи сектора приходит Data Response 0хF2, хотя по описанию такого быть не может в принципе. И после этого карточка перестает читаться и писаться. Если затем сделать инициализацию, то она начинает читаться и тот сектор оказывается записанным правильно. Частоту SPI менял, не помогает.

В чем может быть проблема?
Исходиники библиотек работы с катрой брал где-то здесь на форуме, проверял с двумя карточками SD TOSHIBA 16Mb и Kingston 1Gb.
п/п записи сектора:
Код
unsigned char MMC_WriteSector(unsigned long int sector,unsigned char *buffer)
{
char r1;
int i;
PORTC.2=0;//Активировать карту
r1=MMC_Command( CMD24 , sector<<9);//Установить номер сектора
if(r1!=0)//Если комманда не выполнена сообщить код ошибки
{
PORTC.2=1;//Освобождаем карту
return r1;
}
// пЕРЕДАТЬ ПУСТОЙ БАЙТ
spi(0xFF);
spi(0xFF);
//Передать стартовый байт
spi(0xFE);
//Записываем в карту данные
for(i=0; i<512; i++)
{
spi(buffer[i]);
}
//Читаем 2 байта CRC
spi(0xFF);
spi(0xFF);
//Читаем ответ карты
r1 = spi(0xFF); //---- вот здесь приходит F2 вместо 05
/*if( (r1&MMC_DR_MASK)!= MMC_DR_ACCEPT)
{
PORTC.2=1;//Освобождаем карту
return r1;
} */
// wait until card not busy
while(!spi(0xFF));
PORTC.2=1;//Освобождаем карту
spi(0xFF);
return r1;//0;
}