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

 
 
> Разделение ресурса, под ucOS-II
prottoss
сообщение Feb 6 2008, 08:48
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Всем привет!

Такая вот проблемка. Есть железный SPI0 на AT91SAM7X. По этому интерфейу подключено два устройства, каждое устройство обслуживается своей задачей. Написал вот такой код для обращения к SPI:

Код
SPI_RESULT SPI_Xfer(SPI_XDesc_t *desc)
{

/* Check valid device number */
   if(g_DevCnt <= desc->dev_idx)
        return SPI_RES_INVALID_DEVICE_INDEX;

/* Get desc & interface */
SPI_CS_DESC *cs = &g_SPI_CS[desc->dev_idx];
AT91PS_SPI spi = cs->spi;

/* Wait for SPI unlocked */
UINT8 os_err;
OSFlagPend(g_SPI_Events, cs->locked,
      OS_FLAG_WAIT_SET_ANY | OS_FLAG_CONSUME, SPI_XFER_TIMEOUT, &os_err);



/* Interface is locked. Select device */



................................................................................
.........................


    /* Unlock interface & return OK */
OSFlagPost(g_SPI_Events, cs->locked, OS_FLAG_SET, &os_err);
return SPI_RES_OK;

}


Поясню идею. Создан флаг блокировки интерфейса. Когда он установлен - интерфейс не блокирован, но при выходе из функции OSFlagPend он автоматически обнуляется, тем самым блокируя интерфейс для всех остальных задач. При выходе из функции передачи SPI_Xfer(...) флаг блокировки опять устанавливется, тем самым разрешая другой задаче работать с интерфейсом...

Вот только что-то не совсем все это работает. Кто знает, поясните, где я ошибаюсь.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ig_z
сообщение Feb 6 2008, 08:56
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



Так для этого в явном виде есть мютекс. Почему его не применяете?
Go to the top of the page
 
+Quote Post



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

 


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


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