Перейти к содержанию
    

Внешние прерывания на с68013

Привет,помогите пожалуйста:

Есть задача принимать синхро-импульсы с видиокамеры... они заведены на ноги PA0, PA1;

вроде бы есть примеры с прерываниями от USB...

сделал так же как и в примерах:

 

void ISR_INT1(void) interrupt INT0_VECT //interrupt from PA.0

{

EP2FIFOBUF[0] = 0xff; //set start frame flag

EP2FIFOBUF[1] = 0x00;

EP2FIFOBUF[2] = 0xff;

EP2FIFOBUF[3] = 0x00;

 

EZUSB_IRQ_CLEAR();

EZUSB_WriteI2C(0x21, 0x01, 0xa4); //indicate interrupt

}

 

в общеизвестной функции TD_Init разрешаю глоб. прерывания и внешние прерывания

PORTACFG = 0x03;

EX0 = 1;

EX1 = 1;

EA = 1;

 

В симуляторе проверял....работает.

В контроллере - фиг. комп теряет устройство вообще... В чем проблема??? :blink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

прерывания должны быть по фронту, т.е. как-то так

EA = 1; // Enable 8051 interrupts

EX0 = 1;

IT0 = 1;

 

В противном случае прерывание происходит по уровню, а значит он выйдет из них и снова зайдет. Результат - "зависание"

 

У меня так было в начале.

Подробнее об IT0 чытаем в мануале...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...