Jump to content

Циклический руководитель

Циклический руководитель [1] [2] является альтернативой операционной системе реального времени . Это форма совместной многозадачности , при которой существует только одна задача . Единственная задача обычно реализуется как бесконечный цикл в main(), например, C. в

Основная схема заключается в циклическом выполнении повторяющейся последовательности действий с заданной частотой (циклический исполнительный механизм, запускаемый по времени). Например, рассмотрим пример встроенной системы , предназначенной для мониторинга датчика температуры и обновления ЖК- дисплея. Возможно, на ЖК-дисплее потребуется запись двадцать раз в секунду (т. е. каждые 50 мс). Если по другим причинам показания датчика температуры необходимо считывать каждые 100 мс, можно построить цикл следующего вида:

int main(void){   while (1)   {      // This loop is designed to take 100 ms, meaning      // all steps add up to 100 ms.      // Since this is demo code and we don't know how long      // tempRead or lcdWrite take to execute, we assume      // they take zero time.      // As a result, the delays are responsible for the task scheduling / timing.      // Read temp once per cycle (every 100 ms)      currTemp = tempRead();      // Write to LCD twice per cycle (every 50 ms)      lcdWrite(currTemp);      delay(50);      lcdWrite(currTemp);      delay(50);      // Now 100 ms (delay(50) + delay(50) + tempRead + lcdWrite + lcdWrite)      // has passed so we repeat the cycle.   }}

Внешний цикл длительностью 100 мс называется основным циклом. В этом случае также имеется внутренний малый цикл длительностью 50 мс. В этом первом примере внешние и внутренние циклы не очевидны. Мы можем использовать механизм счета, чтобы уточнить основные и второстепенные циклы.

int main(void){   unsigned int i = 0;   while (1)   {      // This loop is designed to take 50 ms.      // Since this is demo code and we don't know how long      // tempRead or lcdWrite take to execute, we assume      // they take zero time.      // Since we only want tempRead to execute every 100ms, we use      // an if statement to check whether a counter is odd or even,       // and decide whether to execute tempRead.      // Read temp every other cycle (every 100 ms)      if ( (i%2) == 0)      {         currTemp = tempRead();      }      // Write to LCD once per cycle (every 50 ms)      lcdWrite(currTemp);      delay(50);      i++;      // Now 50 ms has passed so we repeat the cycle.   }}

См. также

[ редактировать ]
  1. ^ Брюс Пауэлл Дуглас (2003). Шаблоны проектирования реального времени: надежная масштабируемая архитектура для систем реального времени . Addison-Wesley Longman Publishing Co., Inc., стр. 232–237. ISBN  0201699567 .
  2. ^ Лапланте, Филипп А.; Оваска, Сеппо Дж. (2012). Проектирование и анализ систем реального времени (4-е изд.). Хобокен, Нью-Джерси: John Wiley & Sons, Inc., стр. 84–85, 100–102. ISBN  978-0-470-76864-8 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1ad028c997748ec3f5e48c90d7b56e46__1711665600
URL1:https://arc.ask3.ru/arc/aa/1a/46/1ad028c997748ec3f5e48c90d7b56e46.html
Заголовок, (Title) документа по адресу, URL1:
Cyclic executive - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)