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

 
 
> Чтение Dataflash в обработчике прерывания, зависания
athlon64
сообщение Aug 2 2010, 09:25
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 156
Регистрация: 10-03-10
Из: Уфа
Пользователь №: 55 882



Процессор AT91SAM7X, IAR 5.4
Необходимо в обработчике прерывания производить чтение из Dataflash.
Если делать это из main то всё нормально. Если же читать Dataflash в обработчике прерывания от таймера (период 250 мс) или в другом обработчике прерывания, то происходит зацикливание при проверке (while (AT45_IsBusy(pAt45)) wink.gif. Для работы с Dataflash использовались библиотеки из примеров в IAR (at45.c и spid.c).

Обработчик прерывания от таймера:
Код
void IRQ_TIMER_TC0()
{
  unsigned char temp_char;
  volatile unsigned int dummy;

dummy = AT91C_BASE_TC0->TC_SR; // Сбрасываем статусный бит
temp_char=EPR_Rd(MyAdr);
}


Функции чтения из Dataflash:
Код
char EPR_Rd(unsigned int adr)
{
unsigned char temp;

AT45_Read(&at45, &temp, 1, adr);

return(temp);
}

Код
void AT45_Read (At45 *pAt45, unsigned char *pBuffer, unsigned int size, unsigned int address)
{
  AT45_SendCommand(pAt45, AT45_CONTINUOUS_READ_LEG, 8, pBuffer, size, address, 0, 0);  // Issue a continuous read array command
  while (AT45_IsBusy(pAt45));  // Тут зацикливаемся
}



--------------------
Руслан
Go to the top of the page
 
+Quote Post



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

 


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


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