Используя 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" { }
для соответствующих гр файлов включений. Такая же проблема, если я пытаюсь использовать любые другие таймеры.
Открыть для предложений.
Мне всегда приходилось устанавливать либо вектор по адресу функции, либо помещать адрес функции в регистр оборудования (например, векторный контроллер прерываний). Компилятор никогда не знает, как это сделать автоматически. Возможно, ваш компилятор имеет '# прагма', чтобы указать, что функция является ISR и к какому вектору принадлежит. –