[an error occurred while processing this directive]
AM188ES вопрос по прерываниям
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SL555 14 апреля 2006 г. 07:53

Здравствуйте коллеги
У меня перед глазами лежит документация на RTU188 пр-ва fastwel
Для работы с прерываниями тут приводится следующий код
// Пример работы с прерываниями
// в модуле RTU188

#define Msk 0xXXX // маска
#define MskRg 0xFF28 //Регистр управления
#define EOIRg 0xFF22 // Регистр окончания обработки прерывания
void interrupt Handler(void);
void interrupt (*oldhandler)();
main ()
{

// Инициализация нового вектора
oldhandler = getvect(Vector);
setvect(Vector, Handler);
_AX=(inport(MskRg)) & ~Msk
outportb(MskRg,_AL);

// Восстановление старого вектора
_AX=(inport(MskRg)) | Msk
outportb(MskRg,_AL);
setvect(Vector, oldhandler);
}
void interrupt Handler()
{

// End of interrupt
_AX=Vector;
outportb (EOIRg,_AL);
}

Вопрос в следующем
Регистр FF28 16-ти разрядный нам нужно занулить 10бит(разрешить прерывания)
напрямую : outportb(MskRg,inportb(MskRg) &~Msk); делать нельзя. Может мы
не правильно понимаем устройство 0186 архитектуры, но командой
_AX=(inport(MskRg)) & ~Msk мы заносим в AX нужную нам конфигурацию (при выводе содержимого регистра мы это видим),
а командой
outportb(MskRg,_AL); мы заносим в MskRg только 8 бит непонятно чего
Вот пример может быть он не правильный
#include
#include
#define Msk 0xFFFF //Разрешаем все прерывания
#define MskRg 0xFF28
main()
{
unsigned int R=inportb(0xff28);
printf("FF28=%u\n",R);
_AX=(inport(MskRg))&~Msk;
R=_AX;
printf("_AX= %u\n",R);
R=_AL;
printf("_AL=%u\n",R);
outportb(MskRg,_AX);
R=inportb(0xff28);
printf("FF28=%u\n",R);
}

Вот, что получается
FF28=254 // это то, что лежит по умолчанию после перезагрузки контроллера
(прерывания запрещены).
_AX=0, // вроде тоже правильно
_AL=7,// Непонятно, что такое
FF28=6//??????????????
Что бы понять логику задали значение MAS=0x000, получили:

FF28=254
_AX=64510.
_AL=11.
FF28=7.

Помогите разобраться

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru