реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
juvf
сообщение Apr 27 2012, 02:41
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



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

ps на таймерах 0 и 2 тоже самое: обработчики в рабочем коде выпилены (((
Go to the top of the page
 
+Quote Post
Volldemar
сообщение Apr 27 2012, 06:04
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 27-04-09
Из: Украина
Пользователь №: 48 342



Цитата(juvf @ Apr 27 2012, 05:41) *
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 - Apr 27 2012, 06:08
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 27 2012, 09:12
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



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

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

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

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

там есть ещё всякие заусенцы, от которых надо будет избавляца, например в обработчиках прерывания вызывались функции паузы.... pauseMs(int ms); Эта функция блокировала процессор с одним потоком на ms миллисекунд. Во фриртос паузы заменил на vTaskDelay(). Возможно получилось так, что в коде, в обработчиках аппаратных прерываний есть вызовы vTaskDelay(). Может на этапе компиляции обработчики с вызовами vTaskDelay() выпиливаются? вечером поисследую..
Go to the top of the page
 
+Quote Post
Volldemar
сообщение Apr 27 2012, 11:15
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 27-04-09
Из: Украина
Пользователь №: 48 342



Добавил себе в проект
Код
ISR(TIMER1_COMPA_vect)
{

    vTaskDelay(10/portTICK_RATE_MS);
}

есть и в мапе и в lss.
Использую эклипс+винавр
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 28 2012, 04:51
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



решил проблему...... в мейкфайле не был включён объектник с обработчиками прерываний. laughing.gif
Go to the top of the page
 
+Quote Post
Volldemar
сообщение Apr 28 2012, 05:26
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 27-04-09
Из: Украина
Пользователь №: 48 342



мда, бывает wink.gif
глянь в приват сообщения...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 11:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01413 секунд с 7
ELECTRONIX ©2004-2016