Цитата(AlexMad @ Apr 17 2009, 23:57)

За наводку спасибо, буду читать. Но сути проблемы это не меняет - у меня есть устройство, в котором надо зажигать светодиод на 1-10 микросекунд, сейчас я это выдерживаю просто циклами, но вопрос-то и был - как правильнее это организовать во FreeRTOS?
Задержки таких порядков делаются либо аппаратно с использованием соответствущих интерфейсов (UART, таймер с compare модулем и т.п.), либо программно пустым циклом. Причем на современных контроллерах рассчитать точную программную задержку достаточно сложно, поскольку будет она зависеть от работы конвейера, настроки акселератора памяти (МАМ для LPC). Тут будет лучше завести один таймер, чтобы он тикал аппаратно, и поллить регистр его счетчика.
Учитывайте, что если вы хотите сделать задерку порядка единиц микросекунд через сервис ОС, то ОС на это время будет передавать управление другой задаче. Но только накладные расходы по переключению контекста у вас будут соизмеримы или больше времени задержки, которую вы хотите обеспечить. Для uCOS переключение контекста на LPC с тактовой ядра 60МГц и включенным полностью МАМ имеет порядок 10 мкс. У вас же на ожидание задержки ОС будет как минимум 2 переключения контекста - туда и обратно, да еще учтите накладные расходы по обслуживанию таймера ОС, где будут обрабатываться таймауты всех задач, работающих в данный момент.
Поэтому - при проектировании устройства распределяйте аппаратные функции периферии так, чтобы на нужных выводах у вас можно было аппаратно производить генерацию импульсов малой длительности.
Если у вас это уже выведено на GPIO - делайте это программно. Но тут есть одно "но". Если вам нужно сделать задержку программно "не менее чем", то тут все достаточно не сложно, просто делаете пустой цикл. Если же вам нужно делать точную временную задержки - то ее нужно делать в критической секции ОС. Для 1-Wire полностью программная реализация на программных задержках будет неэффективна. Будете в одной задаче постоянно торчать, а другие блокировать. Реализуйте 1-Wire c помощью UART как вам уже выше сказали, либо на capture - compare модулях таймера.