Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Хотя о чом я - по-другому и быть не может, иначе зачем busy. Тогда лови потенциальные грабли >>

Отправлено VasilyS (80.92.96.25) 30 июля 2010, г. 18:39
В ответ на: У тебя busy для разделения ресурса? Задачи по прерываниям переключаютца? отправлено VasilyS 30 июля 2010, г. 17:53

Вот твое ожидание:
while( busy )
;
Вот здесь наша задача нашла освобождение симафора доступа к SPI.
Однако вот незадача - вот именно здесь диспечер задач(или кто там
у тебя) отобрал у нашей задачи активность. И другая задача сволочь тоже норовит обратиться к SPI. Все по закону, поставила глобальный флагг busy и потихоньку работает. Тут управление переходит опять к нашей задаче. А мы-то уверены что здесь бизи нету и мочим SPDR!

busy = true; // Нельзя, ты опоздал, оно уже чужое бизи!

Морарь: запрещай прерывания. В цикле.
while(1){
_cli;
if(!busy){ busy = 1; _sei; break;}
_sei;
}








Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 123:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru