Цитата(ex_AlexG @ Mar 15 2013, 07:29)

Проверил, прерывания USART1 обрабатываются корректно при scmRTOS_CONTEXT_SWITCH_SCHEME 1 если в конфигурации RTOS установить scmRTOS_CONTEXT_SWITCH_USER_HOOK_ENABLE 1
Да, увы, ошибка в примерах в файле scmRTOS_CONFIG.h.
Произошла из-за ложной уверенности, что она уже невозможна — благодаря проверке в scmRTOS_TARGET_CFG.h
https://groups.google.com/group/scmrtos-ru/...53647bfc8?hl=ru(и письма туда упадут и мне в почту)
(только туда
писать нужно аккуратно)
Цитата(WHALE @ Apr 5 2013, 07:52)

Разница в скорости в 20 с лишним раз.Похоже,из-за постоянного висения в прерывании SPM_READY.
Именно так. Между прерываниями по одной команде основного кода.
Проверяется влёгкую включением хуков, но заменой имеющегося на
INLINE void context_switch_user_hook() { CPL(SPM_ISR_DBG_PIN); }
где SPM_ISR_DBG_PIN — любая свободная ножка.
Да, где-то говорилось, что «раз так, может этот хук системным должен быть, а не пользовательским».
Нет, он именно пользовательский. Система не знает, какое прерывание будет использовано и что для него нужно. В примере AVR/GCC/MEGA/2-Message используется прерывание аналогового компаратора и никакие хуки не нужны, оно сбрасывается при входе в обработчик. Так что хук должен определяться попроектно.