ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
22 декабря
552754 Топик полностью
Скрипачпророк (13.10.2014 12:53 - 13:25, просмотров: 287) ответил Codavr на Ну тогда объясни на пальцах как правильно семафором это реализовать. У меня фигня получилась. Я согласен, что чего то не знаю наверное, вот потому и решил спросить у старших товарищей. Отсылка к книге дело полезная - она сила и источник знаний, и
Если "в лоб", то вот так:  uint16_t dmaVAL[MAX_ADC_CHANEL]; // Сюда складываем "ползучее среднее" или что там еще наобрабатывали. // гарантированно без блокировок uint16_t userVAL[sizeof(dmaVAL)]; // Отсюда раздаем юзерам. // гарантированно без блокировок uint8_t lock[sizeof(dmaVAL)]; // Блокировка копирования юзеру. Выставляется юзером перед чтением. // перед чтением инкремент, по окончанию чтения декримент. void irq_handler(){ dmaVAL[i] = process_DMA_result(i); if( (dmaVAL[i] != userVAL[i]) && (lock[i] == 0)){ userVAL[i]=dmaVAL[i]; } };
... но не любой ценой.