====== OSA : РРРРРРРРРРР РРРРРРР РРРРРРР РРРР ====== ===== РРРРРРРР ===== (РРРРРРР Р РРРРРР 81010, РРРРРРРРРРР РРРРРРР РРРРРРРРР. РРРРРРРРРРР РРРРРРР РРРРРРР РРРР РРРРР РРРРРРРР РРРРРРРР, РР, РРРРР РРРРРРРРРР РР РРРРРРРРРР, РР РРРРРРРРРРРР РР РРРРРРРРРРРРР. РРРРР РРРРРРРРРРР РРРРРРР РРРРРРР Р РРРРРРР [[en:osa:ref:services:timers#РРРРРРРРРРР РРРРРРР|РРРРРРРРРРР РРРРРРР]]) РРР РРРРРРР РРРРРРРРРРРРР РРРРРРРРРРРР РРРРР, РРРРР РРР РРРРРРРРР РРРРРРРР Р РРРРРРРР, РРРР РРРР РРРРРРРРРРРРР РРРРРРРР RAM Р ROM. Р РРРРРРРРР РРРРРРР РРРРРРРРРРРРР РРРРРРРРРРРР РРРРРРРРРРРР РРРРРРР. ===== РРРРРРРР ===== РРРР РРРРРР РРРР РРРРРРРРРРР РРРРРРРР (РРР РРРРРРРРРР РРРРРРРРРРРР): 8-, 16- 24- Р 32-РРРРРРРРР. 8-РРРРРРРРР РРРРРРРР РР РРРРРР РРРРР РР РРРРРР, 16- Р 24-Р РРРРРРРРР Р РР 2, 32-Р Р 4 РРРРР. РРР РРРРРРР РРРРРРР РРРРРРРР РРРРРР РР РРРРРРРРРРРРР РРРРРРР РРРРРР РРРРР РРРРРРР. РРРРРРРРРРРР Р РРРРРРРРР РРРРР РРРРРРРР РРРРРРРРРРР РРРРРРР РРРР 4-Р РРРРР. Р РРРРРР РР РРРРРРРРР RAM Р ROM РРРРРРРРРРР РРРРРР Р РРРРРРРРР РР РРРРР РРРРРР. РРРРРРРРРР РРРРРРРРРРРР РРРРРРРР Р РР РРР РРРРРР РРРР РРРРРРРРРР РР РРРРР РРРРРРРРРР. РРРРРРРРРР РРРРРРРР РРРРРРРР Р РРРРР ##[[en:osa:ref:appendix:configuration|OSAcfg.h]]##: // РРРРРРРРРР 8-РРРРРРРРР РРРРРРРР #define OS_TIMERS8 5 // РРРРРРРРРР 16-РРРРРРРРР РРРРРРРР #define OS_TIMERS16 2 // РРРРРРРРРР 24-РРРРРРРРР РРРРРРРР #define OS_TIMERS24 0 // РРРРРРРРРР 32-РРРРРРРРР РРРРРРРР #define OS_TIMERS32 1 РРР РРРР Р РРРРРР РРРРРРРРР РРРРРРР РРРРРРРРРРРРРРР РРРРР, РРР Р РРРРР РРРРРРРРР РРРРРРР. РРРРР РРРР, РРРР Р РРРРРРРРР РРРР РРРР РР РРРР РРРРРРРРРРР РРРРРР, РР РРРРРРРРР РРРРРРР РРРРРРРРРР РРР РРРРРРРРР РРРРРРРРРРРР. РРРРРРРР, Р РРРРРРРРР РРРРРРРРРРРР 5 8-РРРРРРРРР РРРРРРРР, 2 16-РРРРРРРРР Р 1 32-РРРРРРРРР. РРРРР 8, РРРРРРРРРРРРР, РРРРРРРРР РРРРРРРР РРРРРРРРРР, РРРРРР РРР РРРРРРР РРРРР РРРРРРРР РР РРРР РРРРРР. РРРРРРРРР Р РРРРРРРРРРР РРРРРРРР РРРРРРРРРРРР РРРРР РР **ID** Р РРРРРРРРРР РРРРР, РРРРРР РРРРРРР РРРРРР РРРРРРРРРРР 8-РРРРРРРРР РРРРРРРР, Р РРРРРРР Р 32-РРРРРРРРР. РРР РРРРРР РРРРРРРРРРРРРРР. РРР РРРРРР РРРРРРР РРРРРРРРРР 8 РРРРРРРР: 0..4 Р 8-РРРРРРРРР РРРРРРР 5..6 Р 16-РРРРРРРРР 7 Р 32-РРРРРРРРР РРРРРР РРР **ID** РРРРРРРР РРРРРРРРРР РРРРР enum: enum OSA_TIMERS_ENUM { // 8-РРРРРР T8_TIMER0, T8_TIMER1, T8_TIMER2, T8_TIMER3, T8_TIMER4, // 16-РРРРРР T16_TIMER0, T16_TIMER1, // 24-РРРРРР // 32-РРРРРР T32_TIMER0 }; РРРРР РРРРРРРРРР РРРРРРРРР Р РРРРРРРР Р РРРР РРРРРРРР, РРР РРРРРРРР РР РРРРРРРР РРРР РРРРРРРР Р РРРРР Р РРР РР **ID**. РРР РРРРРРР РРР РРРРРРРР РРРРРР РРРРР РРРРРРРРР, РР РРРРРРРРРРР РРРРРРР ##[[en:osa:ref:allservices:OS_RunTimerX|OS_RunTimerX]]##, РРРРРРР РРРРРРРРР РРРРРР Р РРРРРР, - РРРР РРРРРР РРРР РРР РРРРРРР РРРР РРРРРРР. РРРРР РРРРРРРРРР ##[[en:osa:ref:allservices:OS_Init|OS_Init]]##() РРР РРРРРРРРРРР РРРРРРР РРРРРРРРРРР. РРРР РРРРРРРР РРРРРР РРРРРРРРРРРРР РРРРРРР РРР РРРРРРРРР РРРРРР РРРРРРР РРРРРР РРРРРР РРРРРРРРРР РР РРРРР РРРРРР (Р.Р. РРРРРР РРРРРРР, РР РРРРР РРРРР РРРРРРРРРР). // РРРРРРРРРРР Р OAScfg.h #define OS_ENABLE_TIMER #define OS_TIMERS8 1 enum OS_TIMERS_ENUM { T8_Timer // РРРРРР РРР РРРРРРРРР РРРРРР РРРРРРР РРРРРР РРРРРР } ---------------------------------------------------------------------- // РРРРРРРР РРРРРРРРР (РРРРРРРРРРРР, РРР РРРРРРРР OS_Timer = 1 ms) OST_MSG msg_cb, msg_cb2; void Task1 (void) { OST_MSG msg; static unsigned long Data; for (;;) { ... OS_Msg_Send(msg_cb, (OST_MSG)&Data); // РРРРР РРРРР РРРРРР Data OS_Msg_Wait(msg_cb2, msg); // РРРР РРРРРРРРРР РРРРРР ... } } void Task_SearchData (void) { OST_SMSG msg; static unsigned long Data; static unsigned long Addr; for (;;) { OS_Msg_Wait(msg_cb, msg); Data = (unsigned long)(*msg); OS_RunTimer(T8_Timer, 10); // РРРРРРРРР РРРРРР РР 10 РР for (Addr = 0; Addr < MAX_ADDRESS; Addr++) { if (MemoryRead(Addr) == Data) { // РРРР РРРРР РРРРРР РРРРРР, OS_Msg_Send(msg_cb2, (OST_MSG)&Addr); // РРРРРРРРР РРРРРРРРР Р РРРРР РР РРРРР break; } if (OS_Oldtimer_Check(T8_Timer)) { // РРРРРР РРРРРРРРРРРР? OS_Yield(); // РРРРРРРР РРРРРРРРРР РРРРРРРРРРРР OS_RunTimer(T8_Timer, 10); // РРРРРРРРР РРРРРР РРРРР } } if (Addr == MAX_ADDRESS) { // РРРР РР РРРРР РРРРРР Addr = 0xFFFFFFFF; OS_Msg_Send(msg_cb2, (OST_MSG)&Addr); // РРРРРРРРРР -1 } } } РРРРР РРРРРРРРР РРРРРРР РР РРРРР (РРРРР РРРРРРРРР РРРРРРРРР //msg_cb//) РРРРРР //Task_Search// РРРРР РРРРРРРРР РРРРРРРРРРР РРРРР РРРРРРРРРР, РРРРРРРРР РРРРРРРРРР РРРРРР РРРРРРР РРР Р 10РР. ~~UP~~ ===== РРРРРРРРРР РРР РРРРРРРРРРР РРРРРРРР ===== === РРРРРРРРРР РРРРРРРРРРР РРРРРРРР Р РРРРРР === РРРРРРРРРР РРРРРРРРРРР РРРРРРРР РРРРРРРРРРР РРРРРРРРР Р РРРРР ##[[en:osa:ref:appendix:configuration|OSAcfg.h.]]## РРР РРРРР РРРР РРРРРРРРР ##[[en:osa:ref:appendix:configuration|OS_BANK_TIMEOUTS]]## Р ##[[en:osa:ref:appendix:configuration|OS_BANK_TIMERSx]]## (x = 8, 16, 24, 32). РРР РРРРРРРРР РРРРРРР Р РРРРР [[en:osa:ref:appendix:configuration#РРРРРРРРРР РРРРРР|РРРРРРРРРРРР]]. === РРРРРРРРРР Р 24-Р РРРРРРРРР РРРРРРРР === РРР РРРРРРР РРРРРРРРРР 16-РРРРРРРРР, РР РРРРРРРРРРРРР РРР РРРР РРР Р 256 РРРРР. РРР РР РРРРРРР РРР РРРРРРРРРРРР РРРРРР РРРРРРРР РР-РР РРРРР РРРРРРРРРРРР, РР РРРРРРРРР РРРРРРРРРРР РРРРРРРР РРРРРРР РРРРРРРР, РР РРРРРРРР Р РРРРРРРРРРРРР 32-РРРРРРРРРР. РРРРРРРРРР РРРРРРРР RAM РР 2 РРРРР Р РРРРРР РРРРРР РРРРРРР Р РРРРРРРРР РРРРРРРР ROM РР РРРР РРРРРР Р 2-Р, Р РР 4-Р РРРРРРРРР РРРРРРРРРРР. === РРРРРРРРРРРР РРРРРРРР РРРРРРРРРРР РРРРРРРР === РРРРРРРРРРР РРРРРРРРРРРР РРРРРРР РРРРРРРРРР РР РРРРР РРРРРРРРРРРРРР Р РРРРРР РРРР, РРРРР РРРРРРРРР РРРРРРРРР РРРРРРРРРРРРРР РРРРРРРР. РРРРР РРР РРРРРРРР РРРРРРР РРРРРРРРРРР РРРРРРРРРР РРРРРРРР (РРРРРРРРР Р РРРРРРР РРРРРРР) РРР РРРРРРРР РРРРР РРРРРРРРРРРР РРРРРРРР РРРРРРРРРР РРРР: ^РРРРРРРР РРРРРР ##[[en:osa:ref:allservices:OS_Timer|OS_Timer]]##^8-РРРРРРРРР^16-РРРРРРРРР^24-РРРРРРРРР^32-РРРРРРРРР^ | 1 ms | 256 РР | 65.5 РРР | 4 Р 40 РРР | 49 РРРРР | | 10 ms | 2.5 РРР | 10 РРР | 46 Р | 497 РРРРР | | 18.2 ms | 4.6 РРР | 19 РРР | 84 Р | 900 РРРРР | | 256 us | 65 РР | 16 РРР | 1 Р 10 РРР | 12 РРРРР | | 512 us | 130 РР | 32.5 РРР | 2 Р 20 РРР | 24 РРРРР | | 1024 us | 260 РР | 67 РРР | 4 Р 45 РРР | 50 РРРРР | | 2048 us | 528 РР | 2 РРР 15 РРР | 9 Р 30 РРР | 100 РРРРР | | 4096 us | 1 Р | 4 РРР 30 РРР | 19 Р | 200 РРРРР | | 8192 us | 2 Р | 9 РРР | 38 Р | 400 РРРРР | РРР РРРР РРРРРРРР, РРРРР 24-РРРРРРРРР, РРРРРРРРРРРР = 1 РРРРРРРРРР РРРР. РРР 24-РРРРРРРРР РРРРРРРРРРРР = 256 РРРРРРРРР РРРРР = РРРРРРР РРРРРРР 8-РРРРРРРРРР РРРРРРР. ===== РРРРРРР РРРРРРРРРР РРРРРРРРРРРР РРРРРРРРР. ===== ^ РРРРРР ^ РРРРРРРР ^ РРРРРРРР ^ |**РРРРРР**||| |[[en:osa:ref:allservices:OS_Oldtimer_Run8|OS_Oldtimer_Run8]] (//timer8_id, time//) |РРРРРРРРР 8-РРРРРРРРР РРРРРР РРР РРРРРРР| {{osa:ref:attr_call_to.png|РРРРРР РРРРРРРРРР РРРРРРР}} | |[[en:osa:ref:allservices:OS_Oldtimer_Run16|OS_Oldtimer_Run16]] (//timer16_id, time//) |РРРРРРРРР 16-РРРРРРРРР РРРРРР РРР РРРРРРР| {{osa:ref:attr_call_to.png|РРРРРР РРРРРРРРРР РРРРРРР}} | |[[en:osa:ref:allservices:OS_Oldtimer_Run24|OS_Oldtimer_Run24]] (//timer24_id, time//) |РРРРРРРРР 24-РРРРРРРРР РРРРРР РРР РРРРРРР| {{osa:ref:attr_call_to.png|РРРРРР РРРРРРРРРР РРРРРРР}} | |[[en:osa:ref:allservices:OS_Oldtimer_Run32|OS_Oldtimer_Run32]] (//timer32_id, time//) |РРРРРРРРР 32-РРРРРРРРР РРРРРР РРР РРРРРРР | {{osa:ref:attr_call_to.png|РРРРРР РРРРРРРРРР РРРРРРР}} | |**РРРРРРРРР**||| |[[en:osa:ref:allservices:OS_Oldtimer_Stop|OS_Oldtimer_Stop]] (//timer_id//) |РРРРРРРРРРРРР РРРРРР (РРР РРРР РРРРРРРРРРРРРРР РРРР Timeout РРР РРРРР РРРРРРР) | {{osa:ref:attr_call_to.png|РРРРРР РРРРРРРРРР РРРРРРР}} | |**РРРРРРРР**||| |//bool// [[en:osa:ref:allservices:OS_Oldtimer_Check|OS_Oldtimer_Check]] (//timer_id//) |РРРРРРРРР, РРРРРРРР РР РРРРРР РРРР. | {{osa:ref:attr_call_to.png|РРРРРР РРРРРРРРРР РРРРРРР}} | |**РРРРРРРР**||| |[[en:osa:ref:allservices:OS_Oldtimer_Wait|OS_Oldtimer_Wait]] (//timer_id//) |РРРРРРР РРРРРРРРРР РРРРР РРРРРРР | {{osa:ref:attr_call_task.png|РРРРРРРР РРРРР РРРРРР Р РРРРРРРРР РРРРРР}}{{osa:ref:attr_call_ct_sw.png|РРРРРРРРРРР РРРРРРРР}}{{osa:ref:attr_call_to.png|РРРРРР РРРРРРРРРР РРРРРРР}} | ~~UP~~