Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Цифровые сигнальные процессоры (DSP) и их применение»

Проблема при вызове C-функции из ассемблера (все тот же 2407A) (+)

Отправлено kamil 11 декабря 2007 г. 07:52


Вообщем я реализовал обработчик прерывании в виде ассемблерной функции и из этого обработчика вызываю сишную функцию. Вглядит это примерно так:

rset: B _c_int0
int1: B xxxx
int2: B xxxx
int3: B xxxx
int4: B xxxx
int5: B xxxx
int6: B xxxx
......

xxxx:
... //cохранение контекста

LDP #PIVR >> 7
LACL PIVR
XOR #002Fh
CC function, eq

... //выход из обработчика

сам обработчик:
void function()
{
A = A + 1; // A,B - объявлены как глобальные в main.c
B = B + 2;

... //сброс флага прерывания
}

Теперь проблема: при попытке использования А,В в main.c программа вылетает в NMI. Есть подозрения что делаю что-то не так при сохранении контекста.



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 3 на единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru