Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Внешние прерывания на с68013
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
Nzdrw
Привет,помогите пожалуйста:
Есть задача принимать синхро-импульсы с видиокамеры... они заведены на ноги 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.gif
torik
прерывания должны быть по фронту, т.е. как-то так
EA = 1; // Enable 8051 interrupts
EX0 = 1;
IT0 = 1;

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

У меня так было в начале.
Подробнее об IT0 чытаем в мануале...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.