Цитата:
Сообщение от DiagoD
какой у тебя микроконтролер?
|
AVR 8bit
Цитата:
Сообщение от DiagoD
Я очень давно читал статью о много поточности для МК, уже даже и не помню, что там было
|
Дай ссылку.
Цитата:
Сообщение от DiagoD
МК не поддерживают много поточность но есть модели в которых это можно на программным образом сделать, работает эта фишка не со всеми МК.
|
Ну это возможно на ARM7-9 и Cortex-е - 32-х битных процах поддерживается. Может где-то и на 16-ти битных. Но использовать такие аппаратные вещи для какой-то мелочной задачи экономически нецелесообразно.
Взгляни, например, на музыкальные центры, там стоят такие же слабые МК, причем успеват все делать и команды обработать и лампочками одновременно помигать и время на экране считать.
Хлорка подумала и вот что решила. Можно попробовать реализовать такую функцию через прерывания таймера, как ранее, но обработчик прерываний будет менять (swap) объекты обработки (задачи) местами по-очереди. При этом в объект задачи должны хранится экземпляры ID-потока и его стек. Т.е. подмена не адреса возврата для какого-то потока, а целого стека. Наверно можно столкнуться с проблемой нехватки оперативки и предварительного его резервирования, но это решаемо куда меньшими затратами. В любом случае наверно тут понядобятся ассеблерные вставки, а я его не люблю.