Выкачал порт avr-gcc 3.00.
Раньше пользовался 1.10. Системой очень доволен, за что спасибо авторам и поддерживающим её людям.
Мега 128. Тик системного таймера ~4.4 мс. Если время выполнения процесса превышает это время, происходит сбой.
Установил scmRTOS_CONTEXT_SWITCH_SCHEME равным 0. Хотя рекомендуют оставить 1. Не помню в какой ветке читал.
Если установить 1, то непонятно назначение следующего фрагмента. Нужен ли он? #if scmRTOS_CONTEXT_SWITCH_SCHEME == 1 // Setup analog comparator as software interrupt source #if PORT_TOGGLE_BY_PIN_WRITE ACSR = (1 << ACBG); // Ref ON, interrupt on both edges #else ACSR = (1 << ACBG) | (1 << ACIS1); // Ref ON, falling edge #endif DRIVER(RAISE_PIN,OUT); // AIN1 - output // analog comparator propagation and synchronization delay _delay_us(2); ACSR |= (1 << ACI); ACSR |= (1 << ACIE); // ACIE ON, ACI OFF #endif
а также этот код DRIVER(TIMER_HOOK,OUT); DRIVER(IDLE_HOOK,OUT); // DRIVER(ISR_ENTER_PIN,OUT); DRIVER(ISR_EXIT_PIN,OUT);
У себя все это удалил, работает при scmRTOS_CONTEXT_SWITCH_SCHEME=0. Можно выполнение процесса впихнуть в 4.4 мс. Это нормальная работа системы? Раньше с такой ситуацией не приходилось иметь дело.
|