Цитата
unsigned char Read_Byte_MMC (void)
{
unsigned char Byte = 0;
SPDR = 0xff;
loop_until_bit_is_set(SPSR, SPIF);
Byte = SPDR;
}
Тут функция ничего не возвращает (нет return Byte;)
Кроме этого как сделано преобразование уровня сигнала MISO? Если подключен напрямую, то его уровень будет на грани, что может вызывать сбои.