Прошивка, скомпилированная IAR5.50 работает без пропусков зажигания. Покатался с прошивкой 3 дня - все нормально.STC wrote:serge__5518
Спасибо за проведенные исследования, к сожалению у меня пока нет времени посмотреть. Но потом сяду за эту проблему серьезно.
Для компиляции добавил в файл Makefile_iar флаг:
CFLAGS += --separate_cluster_for_initialized_variables
Результат - изменения в листинге незначительные, но мне показалось - так лучше.
Исправления в файле ckps.c для IAR 5.50 :
1)
/*
#define flags ( (volatile ckpsflags_t*)(&TWAR) ) //note: may be not effective on other MCUs
*/
__no_init volatile ckpsflags_t ckpsFlags@0x22;
#define flags ( &ckpsFlags)
2)
uint8_t ckps_is_cycle_cutover_r()
{
uint8_t result;
_BEGIN_ATOMIC_BLOCK();
//result = flags->ckps_new_engine_cycle_happen;
result = 0;
if(flags->ckps_new_engine_cycle_happen)
result = 1;
flags->ckps_new_engine_cycle_happen = 0;
_END_ATOMIC_BLOCK();
return result;
}