juvf 10 27 апреля, 2012 Опубликовано 27 апреля, 2012 · Жалоба FreeRTOS использует таймер1. Таймер 3 использую для своих нужд. Написал обработчик прерываний ISR(TIMER3_COMPA_vect) { //code } Внутри прерывания поставил брейкпоинты. Гружу дебаг.... выскакивает "ахтунг" с сообщением что брейкпоинта не будет. Ну и в прерывание не попадаю ни когда. посмотрел вектора прерываний - напротив TIMER3_COMPA_vect (0х38) пусто. поискал по ассемблеру мой обработчек - нету, в *.map тоже нету. Как будь-то компилятор его выпилил. Без фрииртос этот код работает нормально, а с фряхой обработчики исчезают. Куда девается обработчик прерывания? Может ос перекрыть макрос ISR(TIMER3_COMPA_vect) каким то своим? ps на таймерах 0 и 2 тоже самое: обработчики в рабочем коде выпилены ((( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ur5cuj 0 27 апреля, 2012 Опубликовано 27 апреля, 2012 (изменено) · Жалоба 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 Изменено 27 апреля, 2012 пользователем Volldemar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 10 27 апреля, 2012 Опубликовано 27 апреля, 2012 · Жалоба AT90CAN128, AVR Studio 4, компилятор gcc (winavr) У меня был проект тяжёлый, без оси. нужно добавить функционал... без оси - чем дальше тем хуже. Переписывать весь проект на ос - нереально долго/дорого, да и отладку по стыковке с др устройствами нет возможности сделать. поставил голую ось, сделал одну задачу и в эту задачу сунул из старого проекта main. РАБОТАЕТ!!! Тока косяк с аппаратными прерываниями. в векторах прерывания остались вектора ресета, системного таймера и INT0. А вектора остальных таймеров, вектора обоих уартов - выпилены. ((( Очень странно. У меня не "выпиливает".блинннн..... пойду к гадалке. там есть ещё всякие заусенцы, от которых надо будет избавляца, например в обработчиках прерывания вызывались функции паузы.... pauseMs(int ms); Эта функция блокировала процессор с одним потоком на ms миллисекунд. Во фриртос паузы заменил на vTaskDelay(). Возможно получилось так, что в коде, в обработчиках аппаратных прерываний есть вызовы vTaskDelay(). Может на этапе компиляции обработчики с вызовами vTaskDelay() выпиливаются? вечером поисследую.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ur5cuj 0 27 апреля, 2012 Опубликовано 27 апреля, 2012 · Жалоба Добавил себе в проект ISR(TIMER1_COMPA_vect) { vTaskDelay(10/portTICK_RATE_MS); } есть и в мапе и в lss. Использую эклипс+винавр Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 10 28 апреля, 2012 Опубликовано 28 апреля, 2012 · Жалоба решил проблему...... в мейкфайле не был включён объектник с обработчиками прерываний. :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ur5cuj 0 28 апреля, 2012 Опубликовано 28 апреля, 2012 · Жалоба мда, бывает ;) глянь в приват сообщения... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться