Hallo zusammen,
habe gerade ein größeres Problem wo ich im Internet keine Lösung zu
finden kann.
Ich habe mir eine IP Core im EDK zusammengebaut die Daten sammelt, dies
allerdings nur während eines Ereignisses. Den Start dieses Ereignisses
reiche ich aus der IP Core als Signal heraus und stelle es als
EDGE_RISING Interrupt in den XPS_XINTC Interrupt Eingang rein, der auch
als EDGE_RISING eingestellt ist. Nun möchte ich nachdem die ISR
(Speichern der aufgezeichneten Daten) abgearbeitet wird, dass diese
wieder verlassen wird. Dies passiert aber leider nicht. Ich stelle hier
mal meinen C-Code, der dieses Problem betrifft online. Vielleicht kann
mir jemand von euch helfen. Das wäre super!
1 | //INITIALISIERUNG DES INTERRUPTS
|
2 | XIntc g_interrupt_controller;
|
3 |
|
4 | XIntc_Initialize(&g_interrupt_controller, XPAR_INTC_0_DEVICE_ID);
|
5 | XIntc_Connect(&g_interrupt_controller, 0, (XInterruptHandler) gms_control_interrupt_routine_save_frame, NULL);
|
6 | XIntc_Start(&g_interrupt_controller, XIN_REAL_MODE);
|
7 | XIntc_Enable(&g_interrupt_controller, 0);
|
8 | microblaze_enable_interrupts();
|
9 |
|
10 | //ISR
|
11 | void gms_control_interrupt_routine_save_frame() {
|
12 |
|
13 | ...
|
14 |
|
15 | XIntc_Acknowledge(&g_interrupt_controller, 0xFF);
|
16 | }
|