Цитата
Я бы попробовал с таким максимально простым кодом
Да у меня и было максимально просто, а как пошли глюки, так я постарался сделать точно так, как написано в даташите на LPC2214 в разделе SPI:
The following sequence describes how one should process a data transfer with the SPI block when it is set up to be the master.
This process assumes that any prior data transfer has already completed.
1. Set the SPI clock counter register to the desired clock rate.
2. Set the SPI control register to the desired settings.
3. Write the data to transmitted to the SPI data register. This write starts the SPI data transfer.
4. Wait for the SPIF bit in the SPI status register to be set to 1. The SPIF bit will be set after the last cycle of the SPI data
transfer.
5. Read the SPI status register.
6. Read the received data from the SPI data register (optional).
7. Go to step 3 if more data is required to transmit.
Ну и т.д.

Цитата
просто чтобы обратить внимание на причинно следственную связь.
Это да, но про варианты я сказал не особо серьезно, так как внимание уже было обращено на тот факт, что
почти везде работает
как надо, т.е. пишет, читает то, что писалось, читается статус - занятость, результат сравнения и т.д.
Цитата
Я бы так ни в жизнь не написал.
Никогда не говорите никогда.
Плохо кончится, родной © Кин-дза-дза

Однако я так пишу потому что
Цитата
А меня задолбали варнинги на неиспользуемые dummy и стал писать только так
полностью согласен

. Более того - Вы смотрели листинг с использованием этих dummy? Я решил проверить. почему выходит варнинг, и оказалось, что для таких случаев строки типа
Цитата
V32 dummy = S0SPSR; // dummy read of SPIF
просто выкинуты и отсутствуют в ассемблерном коде.
Сообщение отредактировал Ykidia - Apr 2 2007, 00:03