И полезли прелести: при вызове функции в прерывании низкого уровня, програма не возвращяется из прерывания в основной цикл, куда оно лезет еще не разобрался, (пока толоько 2 неделю инструментарий осваиваю для PIC). Функция вызывается только в прерывании. Что может быть неправильно?
Сами прерывания прописаны согдасно датащиту:
- Код: Выделить всё
void filter(void)
{
...фильтр
}
#pragma code high_vector=0x08
void high_vector(void)
{
_asm GOTO HighInt _endasm
}
#pragma code low_vector=0x18
void low_vector(void)
{
_asm GOTO LowInt _endasm
}
#pragma code
#pragma interrupt HighInt
void HighInt(void)
{
...Тело обработчика прерывания
}
#pragma interrupt LowInt
void LowInt(void)
{
...Тело прерывания
filter();
...Тело прерывания
}
Добавлено спустя 25 минут 35 секунд:
Еще вспомнил, может важно - активно switch-case используется, с ним уже в других компиляторах на других контроллерах натыкался на проблемы...