Вопрос может и туповат, но для меня, как начинающего, актуален... Разжевывать не обязательно, можно просто поделиться ссылками на материал по теме.
Проблема следующая: есть контроллер (STM8) с аппаратным IIC на борту. Также в проекте будет использоваться UART... И если с передачей все почти понятно (вкидываю данные в кольцевой буфер, а дальше парится аппаратура и обработчик IRQ), то с приемом у меня ступор... А именно: работаю с PCF8583, я конечно знаю, когда она мне что-то пришлет, мастер я всетаки, но шина довольно медленная, и тупо крутиться в цикле опроса флагов - терять время... С UART то же самое... Я спрашиваю, мне отвечают.
Вопрос: Как это делается правильно? В ОС функция выглядит обычно как что-то типа Read(дескриптор устройства, *куда читать, количество байт, которые читать); как это реализуется? Ведь не могу же я вывалиться из функции не возвратив данные, а то, что к ее вызову они еще не готовы может быть легко...
Вообще программу собирался реализовывать в виде событийной системы по примеру отсюда. Но как прикрутить грамотную работу с приемом данных разобраться не могу.