Я пытаюсь запустить механизм OSEK-Alarm на arm7 (lpc2292). При моделировании моего демонстрационного приложения с помощью uVision5 IDE все работает нормально. Но при выполнении кода на целевой платформе кажется, что прерывание происходит только один раз. К сожалению, я не могу подключить последовательный интерфейс к этой платформе для отладки ...
Эта функция вызывается из обработчика прерываний верхнего уровня, поскольку мне нужно встроить эту функциональность в ассемблерный код переключения контекста. Как можно видеть, флаг прерывания сбрасывается при каждом прерывании от таймера, которое настроено на запуск при совпадении счетчика с регистром совпадения 0; Больше. Это мой код, как я инициализирую счетчик, а также прерывания:
включение прерывания в VI C:
VICIntEnable |= (1 << TIMER0);
Настройка счетчика:
void initializeHardwareCounter(UINT32 ticktime_ns) // ticktime 10^6 ns
{
T0PR = (SYS_CLOCK / (2 * ticktime_ns / 1000)) - 1; // SysClk = 36MHz
T0MCR |= (1 << 0) | (1 << 1); // Match MR0 and reset
T0TC = 0xFFFFFFFF; // reset counter
T0TCR |= (1 << 0); // enable as counter
T0MR0 = 0; // match value
}
Было ли у кого-нибудь подобное поведение и есть идеи, где я могу ожидать проблемы?
Заранее спасибо