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

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

1. Запретить раз и навсегда прерывания. 2. Разбить каждую задачу на элементарные шаги и разместить их в массиве. 3. Создать структуру, где будет храниться: указатель на функуию-шаг задачи, переменная-индекс шага, перменная для таймера и т.п.. >>

Отправлено VasilyS 25 декабря 2009, г. 22:39
В ответ на: Что можно использовать для реализации потоков (thread) на AVR (+) отправлено пользователем MikhailSh 25 декабря 2009, г. 19:35

3. Сделать то же для других задач.
4. Запускать задачи по указателям в цикле.
PS. В каждом шаге каждой задачи обновлять номер шага Nom_Step, чтобы
в следующий раз запускался новый шаг.
PPS Написание самих задач очень похожи на программирование на Бейсике: cделал шаг - перейди на другой (вперед или назад).
Дешево, быстро, лехко.
while(1)
{ // Запуск текущих шагов задач по кругу.
(*Tsk1.PtrToStep)[ Tsk1.Nom_Step ]();
(*Tsk2.PtrToStep)[ Tsk2.Nom_Step ]();
(*Tsk3.PtrToStep)[ Tsk3.Nom_Step ]();
// обслуживание индивидуальных таймаутов для каждой задачи
if( Timer2mS_Over) { // системный квант пусть 2 мс
ClearFlag2ms;
if( Tsk1.Timeout ) Tsk1.Timeout--;
if( Tsk3.Timeout ) Tsk3.Timeout--;
}
_WDR();

}





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

Ответы


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

Сообщение:

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

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

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

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