====== OSA : OS_Dtimer_Get ====== **OST_TIMER OS_Dtimer_Get (dtimer)**\\ === === {{osa:ref:attr_call_to.png|Сервис использует таймаут}} Получить оставшееся время счета. Перед вызовом этого сервиса нужно: * либо запретить прерывания (##[[osa:ref:allservices:OS_DI|OS_DI]]##()); * либо войти в критическую секцию; * либо остановить таймер сервисом ##[[osa:ref:allservices:OS_Dtimer_Stop|OS_Dtimer_Stop]]##(). В противном случае в момент чтения таймера может произойти прерывание, которое может изменить его значение. Для использования динамических таймеров в файле ##[[osa:ref:appendix:configuration|OSAcfg.h]]## нужно определить константу ##[[osa:ref:appendix:configuration#Системные константы|OS_ENABLE_DTIMERS]]##. Разрядность динамических таймеров такая же, как и у системного, и задается константой ##[[osa:ref:appendix:configuration#Типы данных|OS_TIMER_SIZE]]##. === Разрешен вызов: === Везде === Параметры функции: === {| class = "fpl" |- |//''dtimer''// |Дескриптор динамического таймера типа ##[[osa:ref:description:data_types#OST_DTIMER|OST_DTIMER]]##. Содержит счетчик таймера, а также информацию о состоянии (считает, остановлен, активен, переполнение). Для PIC16 может размещаться в памяти только в **bank0** или **bank1** |} === Возвращаемое значение: === {| class = "fpl" |- |//''[[osa:ref:description:data_types#OST_TIMER|OST_TIMER]]''// | Время, оставшееся до переполнения (в системных тиках) |} === Пример вызова: === OST_DTIMER dtimer; OST_MSG_CB msg_cb; void Task (void) { OST_TIMER t; for (;;) { /*...*/ OS_Dtimer_Pause(dtimer); t = OS_Dtimer_Get (dtimer); OS_Dtimer_Continue(dtimer); OS_Msg_Send(msg_cb, (OST_MSG)&t); // Отправить сообщение со значением времени до // окончания счета dtimer'а /*...*/ } } === Old style name === **OS_GetDTimer**\\ === См. также === * [[osa:ref:allservices:OS_Dtimer_Create|OS_Dtimer_Create]] * [[osa:ref:allservices:OS_Dtimer_Delete|OS_Dtimer_Delete]] * [[osa:ref:allservices:OS_Dtimer_Run|OS_Dtimer_Run]] * [[osa:ref:allservices:OS_Dtimer_Break|OS_Dtimer_Break]] * [[osa:ref:allservices:OS_Dtimer_Wait|OS_Dtimer_Wait]] * [[osa:ref:allservices:OS_Dtimer_Delay|OS_Dtimer_Delay]] * [[osa:ref:allservices:OS_Dtimer_Get|OS_Dtimer_Get]] * [[osa:ref:allservices:OS_Dtimer_Check|OS_Dtimer_Check]] * [[osa:ref:allservices:OS_Dtimer_IsRun|OS_Dtimer_IsRun]] * [[osa:ref:allservices:OS_Dtimer_Pause|OS_Dtimer_Pause]] * [[osa:ref:allservices:OS_Dtimer_Continue|OS_Dtimer_Continue]] * [[osa:ref:allservices:OS_Dtimer_Update|OS_Dtimer_Update]] * [[osa:ref:allservices:OS_Dtimer_Add|OS_Dtimer_Add]] * [[osa:ref:allservices:OS_Dtimer_IsActive|OS_Dtimer_IsActive]] * [[osa:ref:allservices:OS_Dtimer_IsStopped|OS_Dtimer_IsStopped]] ---- * [[osa:ref:services:alphabetical|Алфавитный указатель]] * [[osa:ref:services:brieflist|Все сервисы]] ~~UP~~