====== 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~~