2015-03-23 15 views
3

Используя Atmel Studio 6.2.1563, создан сборник GCC C++ Executable для ATXMEGA64A3U. Таймер настройки TCC1 для генерации прерываний переполнения через каждые 1 миллисекунду. Но компилятор, похоже, игнорирует определение ISR.Невозможно использовать ISR в xmega при использовании Atmel Studio C++ Build

ISR(TCC1_OVF_vect) 
{ 
     Cyclic_Do(); 
} 

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

IDE сообщение: The breakpoint (the one I set inside ISR function) will not currently be hit. Unable to set requested breakpoint on Target.

также попытался using extern "C" { } для соответствующих гр файлов включений. Такая же проблема, если я пытаюсь использовать любые другие таймеры.

Открыть для предложений.

+0

Мне всегда приходилось устанавливать либо вектор по адресу функции, либо помещать адрес функции в регистр оборудования (например, векторный контроллер прерываний). Компилятор никогда не знает, как это сделать автоматически. Возможно, ваш компилятор имеет '# прагма', чтобы указать, что функция является ISR и к какому вектору принадлежит. –

ответ

0

Что, по-видимому, заставляет его работать в конце, перемещает ISR в другой файл. Но любопытно, что мне не пришлось использовать объявление: с использованием extern «C», чтобы заставить его работать даже через исходный файл .cpp.

Надеюсь, что это поможет кому-то еще попытаться настроить C++ на atmel AT/Xmega-контроллеры.

Обратите внимание, что поддержка atmel также работает, я получил ответ от atmel для моего вопроса, связанного с ателье.

0

Я столкнулся с той же проблемой, но я столкнулся с немного более удовлетворительным исправлением, чем перемещение ISR в другой файл.

В моем случае бит флага был установлен, но мой ISR также не вызывался. Прерывания разрешались глобально и на каждом уровне приоритета и на периферии UART. Я использую инструмент генерации кода SMART Atmel Studio 7.

Я смог ударить точки останова в своем ISR после того, как я снял флажок «IVSEL: вектор выбора прерывания» на вкладке PMIC инструмента START. Похоже, может быть много возможных причин для такого типа проблем, но я не нашел никого, кто писал бы, чтобы проверить бит IVSEL.

Я полагаю, что инструмент SMART мог бы иметь (в идеале должен) сгенерированный код, который будет работать с этим набором бит, но мне не нужна функция, поэтому я рад, что эта загадка уйдет.

 Смежные вопросы

  • Нет связанных вопросов^_^