Перейти к содержанию
    

TNKernel - обработчики прерываний

Во всех примерах идущих с TNKernel все прерывания (от всех источников) обрабатываются в функции tn_cpu_irq_handler

void tn_cpu_irq_handler(void)
{
register int irq_stat;
    irq_stat = VICIRQStatus;
    if((irq_stat & (1<<4)) > 0)        //-- Source - TIMER0
        {
                 ...
        }
    ...
    elseif((irq_stat & (1<<17)) > 0)        //-- Source - EINT3
        {
                 ...
        }
...

Правильно ли я понимаю, что так заложено в самой RTOS?

У меня не работает вызов обработчика после такой конструкции:

    VICVectAddr17   = (U32)procISR_Handler;
    VICIntEnable    |= (1 << 17);
...
void  procISR_Handler (void) __irq
{
        ...
        VICVectAddr = 0;        
}

 

Просто хотелось бы все обработчики логически оформленных модулей вынести в эти отдельные модули (для миграции с одного проекта на другой в будущем...)

 

p.s.

Нет, я могу конечно у моего обработчика убрать _irq и в tn_cpu_irq_handler вызывать его как обычную процедуру:

void tn_cpu_irq_handler(void)
{
register int irq_stat;
    irq_stat = VICIRQStatus;
    if((irq_stat & (1<<4)) > 0)        //-- Source - TIMER0
        {
                 ...
        }
    ...
    elseif((irq_stat & (1<<17)) > 0)        //-- Source - EINT3
        {
        procISR_Handler();
        }

но как-то не совсем модульно....имхо.

Изменено пользователем yurmala

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Функция tn_cpu_irq_handler() используется только в примерах. Реально в ней нет никакой небходимости ( в смысле RTOS). В TNKernel встроен только обрботчик системного таймера. Все остальные Вы можете оформлять обычным образом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...