Излогаю проблему ещё раз, максимально полно. Расчитываю на помощь !
Ответы карточки не синхронны с FFами, которые я в неё шлю, что бы принять ответ.
Т.е. первая половина ответа приходится на один FF, а вторая-на следующий.
Поэтому из приёмного буфера SPI в МК я получаю непойми что. Хотя на экране осциллографа видно,
что карточка отвечает- проблема только в том, что я этот ответ не могу принять. Что я не так делаю ???
Всё на прикреплённых картинках. И код- на всякий случай.
void sent_byte(char B )
{
SETBIT(SPCR,MSTR ); // Контроллер будет Master
SPDR=b; // Начинаем передачу
while (!TESTBIT(SPSR,SPIF )) {} ; //Ждём завершения передачи
data=SPDR;
if (!TESTBIT(data,0x07 )) received_data=data;
}
.........
CLEARBIT(PORTB,CS ); //Сбрасываем CS
sent_byte(0xFF );
sent_byte(0x40); //Передаём CMD0
sent_byte(0x0);
sent_byte(0x0);
sent_byte(0x0);
sent_byte(0x0);
sent_byte(0x95);
sent_byte(0xFF); //Ждём ответ
sent_byte(0xFF); //
sent_byte(0xFF); //
sent_byte(0xFF); //
sent_byte(0xFF); //
sent_byte(0xFF); //
Сообщение отредактировал MiklPolikov - Mar 1 2008, 00:58
Эскизы прикрепленных изображений