Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Специальные процедуры nxtOSEK




API nxtOSEK

NxtOSEK C

Программный интерфейс ОС РВ nxtOSEK содержит низкоуровневые функции доступа к устройствам и функции-обертки (wrapper) для пакета ECRobot (последние имеют префикс ecrobot_) которые разработаны для создания программ управления устройствами в режиме реального времени.

При описании программного интерфейса отдельно помечались функции, которые являются надстройками над низкоуровневыми функциями (функции-обертки). Чтобы не иметь лишних потерь времени при выполнении программы, лучше воздержаться от их использования. Для использования программного интерфейса необходимо подключить в исходном коде заголовочный файлecrobot_interface.h

В программе, написанной для ОС РВ nxtOSEK, должны быть описаны три специальные процедуры, так называемые функции-обработчики или функции-ловушки (hook routines): ecrobot_device_initialize, ecrobot_device_terminate,user_1ms_isr_type2. Их определение и описание должны быть в главном с-файле программы. Система вызывает их автоматически, первую в начале работы программы, вторую в конце, а третью периодически каждую миллисекунду. Что бы легче было понять, как правильно их использовать, рассмотрим примеры этих процедур из файла ecrobot_main.c программы NXTway.

· void ecrobot_device_initialize(void): Эта процедура вызывается в самом начале работы программы. В ней нужно помещать вызовы функций инициализации датчиков и моторов.

· void ecrobot_device_initialize(void)· {· /* Инициализировать используемые устройства */· ecrobot_set_light_sensor_active(NXT_PORT_S1);· ecrobot_set_light_sensor_active(NXT_PORT_S3);· ecrobot_init_sonar_sensor(NXT_PORT_S2); · ecrobot_set_motor_speed(NXT_PORT_B, 0);· ecrobot_set_motor_speed(NXT_PORT_C, 0);· ecrobot_init_bt_connection();· }

· void ecrobot_device_terminate(void): Эта процедура вызывается в случае, если нажали кнопку STOP или EXIT. В ней нужно помещать вызовы функций, корректно завершающих работу датчиков и моторов.

· void ecrobot_device_terminate(void)· {· /* Завершить работу датчиков, остановить моторы */· ecrobot_set_light_sensor_inactive(NXT_PORT_S1);· ecrobot_set_light_sensor_inactive(NXT_PORT_S3);· ecrobot_set_motor_speed(NXT_PORT_B, 0);· ecrobot_set_motor_speed(NXT_PORT_C, 0);· ecrobot_term_sonar_sensor(NXT_PORT_S2);· ecrobot_term_bt_connection();· }

· void user_1ms_isr_type2(void): Эта процедура вызывается процедурой обработки прерываний второго типа, работающей с периодом 1 мсек. В ней, например, можно реализовать счетчик системных тактов подсистемы запуска задач (OSEK Alarm) для реализации Планировщика Периодических Вызовов Задач.

· #include "kernel.h"· #include "kernel_id.h"· void user_1ms_isr_type2(void)· {· StatusType ercd;· /* Увеличить счетчик системного времени */· ercd = SignalCounter(SysTimerCnt);· if (ercd!= E_OK)· {· ShutdownOS(ercd);· }· }



Поделиться с друзьями:


Дата добавления: 2014-11-26; Просмотров: 432; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.