реклама на сайте
подробности

 
 
> Не работает SPI
yshur
сообщение Jan 20 2007, 13:29
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 20-01-07
Пользователь №: 24 624



Используем ARM AT91M42800 и АЦП с SPI интерфейсом.
Драйвер для чтение АЦП отказывается работать, если поместить чтение АЦП в прерывание от таймера (на ножках SPI ничего нет).
Вне прерывания драйвер работает нормально.

В чем может быть проблема?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexBoy
сообщение Jan 21 2007, 16:07
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394



Цитата(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;
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 01:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016