Mylogin 0 24 апреля, 2007 Опубликовано 24 апреля, 2007 · Жалоба Привет,помогите пожалуйста: Есть задача принимать синхро-импульсы с видиокамеры... они заведены на ноги 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: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 25 апреля, 2007 Опубликовано 25 апреля, 2007 · Жалоба прерывания должны быть по фронту, т.е. как-то так EA = 1; // Enable 8051 interrupts EX0 = 1; IT0 = 1; В противном случае прерывание происходит по уровню, а значит он выйдет из них и снова зайдет. Результат - "зависание" У меня так было в начале. Подробнее об IT0 чытаем в мануале... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться