Надо сделать обмен данными по SPI на Mega8. Взял абсолютно рабочий код с Mega16, изменил под Mega8, запускаю, а он не работает. При попытке послать данные, МК намертво зависает. Выяснил, что это происходит из-за строчки:
Код: Выделить всё
while(!(SPSR & (1<<SPIF)));Код: Выделить всё
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);Код: Выделить всё
void spi_write(unsigned char adress, unsigned char data){
CE_LOW; // низкий уровень на CE, инициализация начала обмена данными
SPDR = adress; // передача адреса
while(!(SPSR & (1<<SPIF))); // ждем, если линия зянята
SPDR = data; // передача данных
while(!(SPSR & (1<<SPIF))); // ждем, если линия зянята
CE_HIGH; // высокий уровень на CE, конец обмена данными
}


