Цитата(yshur @ Jan 20 2007, 12:29)

Используем ARM AT91M42800 и АЦП с SPI интерфейсом.
Драйвер для чтение АЦП отказывается работать, если поместить чтение АЦП в прерывание от таймера (на ножках SPI ничего нет).
Вне прерывания драйвер работает нормально.
В чем может быть проблема?
Проверьте вызывается ли вообще это прерывание (помигать светодиодом), и если вызывается то может слишком часто, не успевает пройти предыдущий байт, смотрю сейчас стоит делитель скорости 10. И еще у меня проверки немного в другом порядке, попробуйте так:
//----------------------------------------------------------------------------
BYTE AT91F_ByteSPI(int channel, BYTE data)
{
AT91PS_SPI pSPI = SpiChannels[channel].spi_base;
while(!(pSPI->SPI_SR & AT91C_SPI_TDRE)); // ожидание пока буфер передачи не пустой
pSPI->SPI_TDR = data; // запись в регистр передачи
while(!(pSPI->SPI_SR & AT91C_SPI_RDRF)); // ожидание пока буфер приема пустой
data = pSPI->SPI_RDR; // чтение из регистра приема
return data;
}