[an error occurred while processing this directive]
|
вроде все как в spru371 написано делаю:
написал программу, которая по прерыванию таймера мигает LEDом на XF
сам таймер работает... пин XF отдельно от него тоже..
разрешаю прерывание в IER0
затем в бите INTM = 0
в кмд-файле линкера:
MEMORY {
DATA(RWI): origin = 0x6000, len = 0x4000
PROG: origin = 0x0100, len = 0x4E00
VECT: origin = 0xFF00, len = 0x0100
}
SECTIONS
{
...
...
...
.vectors: {} > VECT
}
в vectors.asm
.sect ".vectors" ; start vector section
.global _vecs
.ref _c_int00,_ISR_gpt0 ; symbol referenced from other file
_vecs: .ivec _c_int00
NMI: .ivec 1
INT0: .ivec 2
INT2: .ivec 3
TINT0: .ivec _ISR_gpt0
в главном Си-файле объявляю (как рекомендовано в TMS320C55x C/C++ Language):
interrupt void ISR_gpt0(void);
ну и + сама процедура обработчика прерывания
никаких ерроров и ворнингов нет...
непонятно вот что: почему не инициализируются регистры IVPD и IVPH т.е. в них "сидит" значение при сбросе 0xFFFF :(
попытки вручную инициализировать их значением начала таблицы векторов прерываний (0xFF00) тоже ни к чему не приводят:(
ЗЫ: да, все написанное про обслуживание прерываний на Си (и я так пониаю что от vectors.asm все равно не деться (в том смысле от асемблерной таблицы векторов) )
ЗЫЫ: где бы посмотреть примеры программирования - а то всё Сишное в CCS/Examples либо для DSP-BIOS либо для юзанья совместно с CSL :(
E-mail: info@telesys.ru