int main(void) { int Status; /* * Run the UartPs Interrupt example, specify the the Device ID */ Status = UartPsIntrExample(&InterruptController, &UartPs, UART_DEVICE_ID, UART_INT_IRQ_ID); if (Status != XST_SUCCESS) { xil_printf("UART Interrupt Example Test Failed\r\n"); return XST_FAILURE; } xil_printf("Successfully ran UART Interrupt Example Test\r\n"); return XST_SUCCESS; }
int main() { char buff[4]; init_platform(); int Status; XUartPs_Config *Config; int Index; u32 IntrMask = 0; int BadByteCount = 0; if (XGetPlatform_Info() == XPLAT_ZYNQ_ULTRA_MP) { #ifdef XPAR_XUARTPS_1_DEVICE_ID DeviceId = XPAR_XUARTPS_1_DEVICE_ID; #endif } /* * Initialize the UART driver so that it's ready to use * Look up the configuration in the config table, then initialize it. */ Config = XUartPs_LookupConfig(UART_DEVICE_ID); if (NULL == Config) { return XST_FAILURE; } Status = XUartPs_CfgInitialize(&uart, Config, Config->BaseAddress); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* Check hardware build */ Status = XUartPs_SelfTest(&uart); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* * Connect the UART to the interrupt subsystem such that interrupts * can occur. This function is application specific. */ Status = SetupInterruptSystem(&intc, &uart, UART_INT_IRQ_ID); if (Status != XST_SUCCESS) { return XST_FAILURE; } //force receive interrupt for every byte (char) XUartPs_SetFifoThreshold(&uart, 1); /* * Setup the handlers for the UART that will be called from the * interrupt context when data has been sent and received, specify * a pointer to the UART driver instance as the callback reference * so the handlers are able to access the instance data */ XUartPs_SetHandler(&uart, (XUartPs_Handler)Handler, &uart); /* * Enable the interrupt of the UART so interrupts will occur */ IntrMask = XUARTPS_IXR_TOUT | XUARTPS_IXR_PARITY | XUARTPS_IXR_FRAMING | XUARTPS_IXR_OVER | XUARTPS_IXR_TXEMPTY | XUARTPS_IXR_RXFULL | XUARTPS_IXR_RXOVR; if (uart.Platform == XPLAT_ZYNQ_ULTRA_MP) { IntrMask |= XUARTPS_IXR_RBRK; } XUartPs_SetInterruptMask(&uart, IntrMask); //XUartPs_SetOperMode(UartInstPtr, XUARTPS_OPER_MODE_LOCAL_LOOP); /* Set the UART in Normal Mode */ XUartPs_SetOperMode(&uart, XUARTPS_OPER_MODE_NORMAL); /* * Set the receiver timeout. If it is not set, and the last few bytes * of data do not trigger the over-water or full interrupt, the bytes * will not be received. By default it is disabled. * * The setting of 8 will timeout after 8 x 4 = 32 character times. * Increase the time out value if baud rate is high, decrease it if * baud rate is low. */ //XUartPs_SetRecvTimeout(&uart, 8); /* Run the UartPs Interrupt example, specify the the Device ID */ //currently sets up some of uart.Need to pull out what is needed Status = UartPsIntrExample(&intc, &uart,UART_DEVICE_ID, UART_INT_IRQ_ID); /* if (Status != XST_SUCCESS) { xil_printf("UART Interrupt Example Test Failed\r\n"); return XST_FAILURE; } */ xil_printf("Successfully ran UART Interrupt Example Test\r\n"); xil_printf("count = %i\r\n", count); return XST_SUCCESS; cleanup_platform(); return 0; }