1 | #include "xparameters.h" //parameters with all addresses of the system
|
2 | //#include "xmpmc.h" //Multi-Port Memory Controller
|
3 | #include "xuartlite.h" //RS232
|
4 | #include "stdio.h"
|
5 | #include "xbasic_types.h"
|
6 | #include "xintc.h" //Interrupt Controller
|
7 | #include "mb_interface.h" //needed for Interrups
|
8 |
|
9 | XUartLite UartLite;
|
10 | XIntc Intc; /* The instance of the UartLite Device */
|
11 |
|
12 | XStatus Status;
|
13 |
|
14 |
|
15 | void rs232_interrupt_handler(void*)
|
16 | {
|
17 | printf(" Interrupt Controller Interrrupt_handler aufgerufen " );
|
18 | return;
|
19 | }
|
20 |
|
21 | void UartLite_Recv_Handler (void *CallBackRef, unsigned int EventData)
|
22 | {
|
23 | printf(" UartLite_RecvHandler aufgerufen " );
|
24 | return;
|
25 | }
|
26 |
|
27 | void UartLite_Send_Handler (void *CallBackRef, unsigned int EventData)
|
28 | {
|
29 | printf(" UartLite_SendHandler aufgerufen " );
|
30 | return;
|
31 | }
|
32 |
|
33 |
|
34 | int main (void)
|
35 | {
|
36 | //------------------------------------------------------------------------------------------------------------------
|
37 | //Interrupt Controller
|
38 | // init interrupt handling device
|
39 | if (XIntc_Initialize(&Intc, XPAR_INTC_SINGLE_DEVICE_ID)!=XST_SUCCESS) printf(" Error " );
|
40 |
|
41 | //Connect with InterruptHandler
|
42 | if (XIntc_Connect(&Intc, XPAR_XPS_INTC_0_RS232_DCE_INTERRUPT_INTR,
|
43 | (XInterruptHandler)rs232_interrupt_handler,
|
44 | (void *)&UartLite)!=XST_SUCCESS) printf(" Error " );
|
45 |
|
46 | // start XPS Interrupt Controller
|
47 | if (XIntc_Start(&Intc, XIN_SIMULATION_MODE)!=XST_SUCCESS) printf(" Error " ) ;//XIN_REAL_MODE für nur HW Interrupts zulassen
|
48 |
|
49 |
|
50 | //Enable Interrupts for specific devices
|
51 | XIntc_Enable(&Intc, XPAR_XPS_INTC_0_RS232_DCE_INTERRUPT_INTR);
|
52 | printf(" Interrupt_Controller_inizialisierung_beendet " );
|
53 |
|
54 | //------------------------------------------------------------------------------------------------------------------
|
55 |
|
56 | //RS232 Controller
|
57 | //Enable RS232 Interrupts
|
58 | if (XUartLite_Initialize(&UartLite, XPAR_RS232_DCE_DEVICE_ID)!=XST_SUCCESS) printf(" Error " );
|
59 | if (XUartLite_SelfTest(&UartLite)!=XST_SUCCESS) printf(" Error " );
|
60 |
|
61 | XUartLite_SetRecvHandler(&UartLite, UartLite_Recv_Handler,(void *) &UartLite );
|
62 | XUartLite_SetSendHandler(&UartLite, UartLite_Send_Handler, &UartLite );
|
63 |
|
64 | XUartLite_EnableInterrupt(&UartLite);
|
65 |
|
66 | printf(" Rs232_inizialisierung_beendet " );
|
67 | //------------------------------------------------------------------------------------------------------------------
|
68 | //Microblaze
|
69 | //enable MB interrupt reception
|
70 | microblaze_enable_interrupts();
|
71 | printf(" Microblaze_inizialisierung_beendet " );
|
72 |
|
73 | //------------------------------------------------------------------------------------------------------------------
|
74 | //make SW-Interrupt
|
75 |
|
76 | u32 *p_sramdata;
|
77 |
|
78 | p_sramdata = (u32*)XPAR_XPS_INTC_0_BASEADDR; //Interrupt Status Register 32 bit
|
79 | *p_sramdata = 0xE0000000;//Int0, Int1, Int2 Enable
|
80 | printf("Interrupt-Ausloesungswert %ui", *p_sramdata);
|
81 |
|
82 | int exit = 0;
|
83 | while (exit =0)
|
84 | {
|
85 | }
|
86 | return 0;
|
87 | }
|