Цитата(Alex Truhin @ Oct 7 2010, 09:33)

uint8_t rx;
SPDR = tx;
while(!(SPSR & 0x80));
rx = SPDR;
при первом чтении все ОК, но при повторном чтении, на строке status = DF_SPI_RW(0x00); программа зависает, т.е. SPSR не взводиться
Явно есть проблема с периферией МК, нельзя ли оторвать SCLK и MOSI от чипа памяти и повторить тест?
Ещё интересует, почему вы читаете статус памяти, но не дожидаетесь готовности бита BUSY?
Вот кусок из старой библиотеки
Код
//================================================
// Ожидание готовности DataFlash,
// проверяем BUSY в регистре статуса
//------------------------------------------------
//аргументы: нет
//возвращает:значение регистра статуса
//================================================
xByte at45WaitReady(st_at45_Data *pntr)
{
xByte res=0;
SET_CS_DATAFLASH; //установим CS для DataFlash
txrxByteSpi(at45_StatusRegRead1, pntr->num); //передаем номер команды
while (!(res&AT45BUSY)) //ждем пока не установится
{
res=txrxByteSpi(0, pntr->num); //бит READY/nBUSY в регистре
} //статуса DataFlash
RESET_CS_DATAFLASH; //сбросим CS для DataFlash
return(res);
}