Цитата(ReAl @ Dec 27 2007, 01:05)

Как раз ISR Wrapper и вызыввает перепланировщик при выходе из прерывания в основную программу (т.е. при вложенных прерываниях при выходе из вложенных не вызывается, там есть счётчик уровня вложения прерываний).
В конце деструктора ISR WRAPPER-а стоит вызов Kernel.SchedISR();, в зависимости от стиля переключателя или перепланировка производится немедленно, или генерируется программное прерывание, происходит возврат в прерванный поток и тут же прерывание переключения контекстов. И так происходит в каждом "по-осевому" оформленном прерывании, не только в таймерном.
Да, точно! Внимательно перечитал мануал и исходники, - и правда, перепланирование осуществляется с каждым тиком системника...
Цитата(ReAl @ Dec 27 2007, 01:05)

Я в тестовый пример (единственный пока в avr-gcc порте) натолкал ногодрыжества в процессы и в хуки, временно добавил даже в переключатель контекстов и наснимал в комп осциллограм. Сейчас малой скоростью пишу к ним более-менее подробное описание происходящих процессов.
"Скоро будет"
Кстати, простеньких примеров с осью ,типа обучающих,пока не встречал.
Цитата(dxp @ Dec 27 2007, 09:31)

Сколько у вас длительность этого тика? Обычно, это времена порядка 1-10 мс. Т.е. если тик 1 мс, то 20 тиков - 20 мс, а 1000 тиков - 1 с. С каким периодом у вас светодиоды перемигиваются? Вот если бы вы там в обоих случаях сделали просто Sleep(), это это действительно были бы полные баиньки.

Тик- 1,6мс где-то. Да, и период миганий так и есть 30мс-1,5 сек. А вот если Sleep(20) и Sleep(1000) местами в процессах поменять, то периоды фактически совсем не такие получаются,- один пракически постоянно горит, а другой, скорее всего, совсем коротенько мигает- еле видно. Но это, видимо, эффект разности процессных приоритетов.