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

AVR+FREERTOS и прерывания

FreeRTOS использует таймер1. Таймер 3 использую для своих нужд. Написал обработчик прерываний

ISR(TIMER3_COMPA_vect)
{
   //code
}

Внутри прерывания поставил брейкпоинты. Гружу дебаг.... выскакивает "ахтунг" с сообщением что брейкпоинта не будет. Ну и в прерывание не попадаю ни когда. посмотрел вектора прерываний - напротив TIMER3_COMPA_vect (0х38) пусто. поискал по ассемблеру мой обработчек - нету, в *.map тоже нету. Как будь-то компилятор его выпилил. Без фрииртос этот код работает нормально, а с фряхой обработчики исчезают. Куда девается обработчик прерывания? Может ос перекрыть макрос ISR(TIMER3_COMPA_vect) каким то своим?

 

ps на таймерах 0 и 2 тоже самое: обработчики в рабочем коде выпилены (((

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


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

FreeRTOS использует таймер1. Таймер 3 использую для своих нужд. Написал обработчик прерываний

ISR(TIMER3_COMPA_vect)
{
   //code
}

Внутри прерывания поставил брейкпоинты. Гружу дебаг.... выскакивает "ахтунг" с сообщением что брейкпоинта не будет. Ну и в прерывание не попадаю ни когда. посмотрел вектора прерываний - напротив TIMER3_COMPA_vect (0х38) пусто. поискал по ассемблеру мой обработчек - нету, в *.map тоже нету. Как будь-то компилятор его выпилил. Без фрииртос этот код работает нормально, а с фряхой обработчики исчезают. Куда девается обработчик прерывания? Может ос перекрыть макрос ISR(TIMER3_COMPA_vect) каким то своим?

 

ps на таймерах 0 и 2 тоже самое: обработчики в рабочем коде выпилены (((

Очень странно. У меня не "выпиливает". Какой компилятор? Какой отладчик? Какая мега?

На сколько я разобрался, тоже только осваиваю фриртос, то она ни каким боком к аппаратным прерываниям не примазывается.

только что вставил в свой исходник:

ISR(TIMER1_COMPA_vect)
{
  ;//code
}

в мапе появилась строка: 0x0000013a __vector_13

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

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


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

AT90CAN128, AVR Studio 4, компилятор gcc (winavr)

 

У меня был проект тяжёлый, без оси. нужно добавить функционал... без оси - чем дальше тем хуже. Переписывать весь проект на ос - нереально долго/дорого, да и отладку по стыковке с др устройствами нет возможности сделать.

 

поставил голую ось, сделал одну задачу и в эту задачу сунул из старого проекта main. РАБОТАЕТ!!! Тока косяк с аппаратными прерываниями. в векторах прерывания остались вектора ресета, системного таймера и INT0. А вектора остальных таймеров, вектора обоих уартов - выпилены. (((

 

Очень странно. У меня не "выпиливает".
блинннн..... пойду к гадалке.

 

там есть ещё всякие заусенцы, от которых надо будет избавляца, например в обработчиках прерывания вызывались функции паузы.... pauseMs(int ms); Эта функция блокировала процессор с одним потоком на ms миллисекунд. Во фриртос паузы заменил на vTaskDelay(). Возможно получилось так, что в коде, в обработчиках аппаратных прерываний есть вызовы vTaskDelay(). Может на этапе компиляции обработчики с вызовами vTaskDelay() выпиливаются? вечером поисследую..

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


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

Добавил себе в проект

ISR(TIMER1_COMPA_vect)
{

    vTaskDelay(10/portTICK_RATE_MS);
}

есть и в мапе и в lss.

Использую эклипс+винавр

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


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

решил проблему...... в мейкфайле не был включён объектник с обработчиками прерываний. :laughing:

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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