ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
11 июля
360481
MegaJohn (09.10.2012 00:14, просмотров: 3919)
есть вопрос по RTOSам, не знаю как красиво реализовать есть задачи task_algo и task_adc задача task_adc работает всегда и через равные промежутки времени возввращает через CallBack массив значений. В некий момент времени задаче task_algo нужно получить 100 массивов значений. можно решить в лоб, ибо не вижу возможных трабл по использованию совместного доступа на запись //--------------------------- u32 get_adc_pkt = 0; MUTEX mtx; //--------------------------- void task_algo_func( void ) { while( 1 ) { bla_bla MUTEX_LOCK_INFINITE( mtx ); get_adc_pkt = 100; MUTEX_UNLOCK( mtx ); while( get_adc_pkt ) // можно и через MUTEX считывать, но и так должно работать SLEEP( 1 ); } } //--------------------------- void task_adc_callback( void* data_p, u32 data_len, ... ) { MUTEX_LOCK_INFINITE( mtx ); if( get_adc_pkt ) { get_adc_pkt--; bla-bla; } MUTEX_UNLOCK( mtx ); } но не нравится что есть лишняя пауза, когда данные готовы но задача task_algo еще спит можно как-то красивей и правильней оформить ?