Хочу генерировать периодические прерывания (например, раз в 0.1 сек) и обрабатывать их в microblaze.
Добавил в проект xps_timer (22 разряда), подключил выход Interrupt напрямую к входу Interrupt Microblaze'а минуя контроллер прерываний (так ведь можно, когда других прерываний не надо?)
Конфигурирую таймер, чтобы считал от 5 000 000 до 0, потом обновлялся и считал заново. В документации написано, что по достижению 0 должно генерироваться прерывание.
Проблема в том, что этого не происходит. Смотрю в chipscope analyzer'е.
Конфигурирую таймер следующим образом:
Код
XTmrCtr timer;
int status = XTmrCtr_Initialize(&timer, XPAR_TMRCTR_0_DEVICE_ID);
xil_printf("Timer initialization: %d\n\r", status == XST_SUCCESS);
XTmrCtr_SetResetValue(&timer, 0, 5000000);
XTmrCtr_SetOptions(&timer, 0, XTC_INT_MODE_OPTION | XTC_DOWN_COUNT_OPTION | XTC_AUTO_RELOAD_OPTION);
u32 start_value = XTmrCtr_GetValue(&timer, 0);
xil_printf("Start value: %d\n\r", start_value);
XTmrCtr_Start(&timer, 0);
int status = XTmrCtr_Initialize(&timer, XPAR_TMRCTR_0_DEVICE_ID);
xil_printf("Timer initialization: %d\n\r", status == XST_SUCCESS);
XTmrCtr_SetResetValue(&timer, 0, 5000000);
XTmrCtr_SetOptions(&timer, 0, XTC_INT_MODE_OPTION | XTC_DOWN_COUNT_OPTION | XTC_AUTO_RELOAD_OPTION);
u32 start_value = XTmrCtr_GetValue(&timer, 0);
xil_printf("Start value: %d\n\r", start_value);
XTmrCtr_Start(&timer, 0);
Подскажите плиз