Программные ошибки тут:
Цитата(kostik2 @ May 18 2009, 07:24)

SPI_Write_Byte((char)(addr>>13));
Цитата(kostik2 @ May 18 2009, 07:24)

SPI_Write_Byte((char)(addr>>8));
Чересчур много сдвигаете. Подумайте.
Но ошибка систематическая, при чтении и записи одинаковая, так что должно было записанное прочитаться все равно (только не туда куда надо). М.б. жело в железе, или security опциях.
UPD:
Похоже есть программная ошибка серьезнее: готовность надо проверять _после_ отпускания чипселекта, т.к. команда обращения к памяти выполняться начинает именно в этот момент.
Сообщение отредактировал SysRq - May 18 2009, 05:24