/[PAMELA software]/quicklook/dataToXML/Data/compilationInfo/src/BasicSW/InterruptManager/IM_InterruptManager_op.c
ViewVC logotype

Contents of /quicklook/dataToXML/Data/compilationInfo/src/BasicSW/InterruptManager/IM_InterruptManager_op.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (download) (vendor branch)
Tue Apr 25 09:00:20 2006 UTC (19 years, 2 months ago) by kusanagi
Branch: MAIN
CVS Tags: dataToXML1_02/01, dataToXML1_02/00, dataToXML1_03/00, dataToXML1_03/01, dataToXML1_00/00, firstRelease, dataToXML1_01/00, dataToXML1_03_02, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
These program extract in an XML format the info contained into the ROOT files generated by YODA from the PAMELA data. To visualize the XML files in a more human readable format a collection of XSL files are given in the Data subfolder.

1 /****************************************************************************
2 /* F i l e D a t a
3 /*
4 /* Module : BasicSW
5 /* C.I. No. :
6 /* $Revision: 1.20 $
7 /* $Date: 2005/03/20 18:16:27 $
8 /* Belonging to :
9 /* :
10 /* $RCSfile: IM_InterruptManager_op.c,v $
11 /* Program Type :
12 /* Sub-modules :
13 /*
14 /****************************************************************************
15 /* S W D e v e l o p m e n t E n v i r o n m e n t
16 /*
17 /* Host system :
18 /* SW Compiler :
19 /* $Author: sebastiani $
20 /* :
21 /****************************************************************************
22 /* U p d a t i n g
23 /*
24 /* $Log: IM_InterruptManager_op.c,v $
25 /* Revision 1.20 2005/03/20 18:16:27 sebastiani
26 /* watch dog reenabled; TIM_MMSU_DMA_DELAY cancelled in WriteEOT
27 /*
28 /* Revision 1.19 2005/03/06 14:51:51 sebastiani
29 /* fix
30 /*
31 /* Revision 1.18 2005/02/21 08:58:28 sebastiani
32 /* all log comments completed
33 /*
34 /* Revision 1.17 2005/02/19 10:05:23 sebastiani
35 /* LU_HA introduces in a log line
36 /*
37 /* Revision 1.16 2005/01/26 18:46:19 sebastiani
38 /* *** empty log message ***
39 /*
40 /* Revision 1.15 2004/10/06 16:38:21 sebastiani
41 /* fix watchdog procedure
42 /*
43 /* Revision 1.14 2004/09/28 15:36:05 sebastiani
44 /* interrupt manager fix
45 /*
46 /* Revision 1.13 2004/09/22 09:53:53 sebastiani
47 /* added watchdog
48 /*
49 /* Revision 1.12 2004/09/17 15:01:00 faber
50 /* LU_INFN_LOG flags fixing
51 /*
52 /* Revision 1.11 2004/09/09 14:49:25 sebastiani
53 /* add get called
54 /*
55 /* Revision 1.10 2004/09/08 10:39:12 faber
56 /* *** empty log message ***
57 /*
58 /* Revision 1.9 2004/08/26 16:53:48 sebastiani
59 /* fix some bug
60 /*
61 /* Revision 1.8 2004/07/20 14:31:41 sebastiani
62 /* *** empty log message ***
63 /*
64 /* Revision 1.7 2004/07/20 08:58:00 faber
65 /* simulator mode for EEPROM procedures
66 /*
67 /* Revision 1.6 2004/07/08 16:23:29 sebastiani
68 /* *** empty log message ***
69 /*
70 /* Revision 1.5 2003/11/18 09:01:14 alfarano
71 /* laben patch fixes some problems
72 /*
73 /* Revision 1.4 2003/10/30 16:10:48 faber
74 /* GPT disabled. the callback function is a null function
75 /*
76 /* Revision 1.3 2003/10/21 16:09:12 alfarano
77 /* LU_LOG_INFN replacement for all remaining original log functions
78 /*
79 /* Revision 1.2 2003/08/07 08:49:07 wizard
80 /* interrupt counter array introduced under DEBUF definition
81 /*
82 /* Revision 1.1.1.1 2003/08/04 09:40:21 sebastiani
83 /* Imported sources laben rel. 19.06.2003 integrated with pam2
84 /*
85 /* Revision 1.12 2003/05/20 12:22:24 aurora
86 /* masked HW errors for EM
87 /*
88 /* Revision 1.11 2003/02/26 16:30:32 aurora
89 /* improved response time for CRIMEA interrupts
90 /*
91 /* Revision 1.10 2003/01/30 09:43:26 aurora
92 /* introduced ifdef for EM and FM
93 /*
94 /* Revision 1.9 2003/01/22 13:50:20 aurora
95 /* Added the sw management for three new interrupt on Crimea
96 /*
97 /* Revision 1.8 2002/10/25 08:59:07 zulia
98 /* removed clear of interrupt 5 after prepare_page
99 /*
100 /* Revision 1.7 2002/05/09 08:16:34 zulia
101 /* * acceptance release
102 /*
103 /*
104 /*****************************************************************************/
105
106 /*============================= Include File ================================*/
107
108 #include <src/INFN/LU_SourceFileID_INFN.h>
109 #define __FILEID__ _IM_InterruptManager_op__c
110 #include <src/INFN/PRH_ParamHandler_INFN_auto.h>
111 #include <src/INFN/PRH_ParamHandler_INFN.h>
112 #include <src/INFN/LU_LogUtility_INFN.h>
113
114 #include <src/BasicSW/InterruptManager/IM_InterruptManager_op.h>
115 #include <src/FileManager/MMSUManager/FT_MMSUManager_p.h>
116 #include <src/BasicSW/CrimeaDriver/CD_CrimeaDriver_p.h>
117 #include <src/HKManager/HistoryArea/HA_HistoryArea_p.h>
118 #include <src/BasicSW/Bus1553B/BI_Bus1553B_p.h>
119
120
121 LU_DECL_MASK();
122
123
124 /*****************************************************************************/
125 /*============================= Object variables ============================*/
126
127 #ifdef DEBUG
128 typedef enum {
129 IM_NULL,
130 IM_INT1,
131 IM_MOD1,
132 IM_MOD2,
133 IM_1553B,
134 IM_PIF_ETO,
135 IM_AUX1,
136 IM_AUX2,
137 IM_AUX3,
138 IM_INT2,
139 IM_INT3,
140 IM_INT4,
141 IM_INT5,
142 IM_INT_MAX
143 } IM_INTS;
144
145 static unsigned int IM_Called[IM_INT_MAX];
146 #endif
147
148
149 /*****************************************************************************/
150
151 /*=== I M _ I n t e r r u p t M a n a g e r O P E R . F U N C T I O N S ===*/
152
153 #ifdef DEBUG
154 unsigned int IM_GetCalled(int i) {
155 return IM_Called[i];
156 }
157 unsigned int IM_opResetCalled() {
158 int i;
159 for(i=0;i<IM_INT_MAX;i++)
160 IM_Called[i]=0;
161 }
162 #endif
163
164 /*****************************************************************************/
165 /* @Function: IM_piIntInterruptManager */
166 /* @Purpose : */
167 /* The function performs the following initialization: */
168 /* - Establishes an ISR for ERC 32 Data Access interrupt. */
169 /* - Establishes an ISR for ERC 32 External INT 1...5. */
170 /* - Establishes an ISR null for for all ERC 32 interrupt not used (UART */
171 /* DMA ..) */
172 /* - Programming of the Interrupts Shape register (Edge and Plolarity of */
173 /* the External Interrupt) */
174 /* - Programming of the System Control Register */
175 /* - Programming of the Interrupts Mask Register */
176 /* - Clearing of all interrupt. */
177 /* */
178 /* @@ */
179 /* @Parameter Name @Mode @Description */
180 /* IN */
181 /* status_code OUT Return code */
182 /* @@ */
183 /*****************************************************************************/
184
185 void IM_ihWDINT(){
186 // static UINT32 intLevel;
187 // OS_piInterDisable(&intLevel);
188 ERC32_Clear_interrupt(ERC32_INTERRUPT_WATCHDOG_TIMEOUT);
189 // OS_piInterEnable(intLevel);
190
191 if(PRH_VAR_WATCHDOG_RESET_DISABLE)
192 {
193 WATCHDOG_RESET;
194 #ifdef DEBUG
195 console_outbyte_polled(0,'W');
196 console_outbyte_polled(0,'\n');
197 #endif
198 }
199 // PRH_WriteEEPROMBootinfo(PRH_BOOTINFO_WD_RESET);
200 // PM_CPU_Reboot(TRUE);
201 }
202
203
204
205
206 status_code IM_opIntInterruptManager(void)
207 {
208 status_code status;
209 void* OldHandler;
210 #ifdef DEBUG
211 IM_opResetCalled();
212 #endif
213 /*===========================================================================*/
214 /*==== DATA ACCESS INTERRUPT (ERC32) INITIALIZATION =========*/
215
216 status =OS_piIsrCatch ( IM_ihInstructionAccessINT,
217 0x01,
218 &OldHandler);
219
220 /*===========================================================================*/
221 /*==== INSTR. ACCESS INTERRUPT (ERC32) INITIALIZATION ======*/
222
223 status =OS_piIsrCatch ( IM_ihDataAccessINT,
224 0x09,
225 &OldHandler);
226 /*===========================================================================*/
227 /*==== EXTERNAL INTERRUPT (ERC32) 1 -2 -3 -4 -5 INITIALIZATION =========*/
228
229 status |=OS_piIsrCatch ( IM_ihExternalINT1,
230 ERC32_INTERRUPT_EXTERNAL_1+0x10,
231 &OldHandler);
232
233 status |=OS_piIsrCatch ( IM_ihExternalINT2,
234 ERC32_INTERRUPT_EXTERNAL_2+0x10,
235 &OldHandler);
236 status |=OS_piIsrCatch ( IM_ihExternalINT3,
237 ERC32_INTERRUPT_EXTERNAL_3+0x10,
238 &OldHandler);
239 status |=OS_piIsrCatch ( IM_ihExternalINT4,
240 ERC32_INTERRUPT_EXTERNAL_4+0x10,
241 &OldHandler);
242
243 status |=OS_piIsrCatch ( IM_ihExternalINT5,
244 ERC32_INTERRUPT_EXTERNAL_5+0x10,
245 &OldHandler);
246 /*===========================================================================*/
247 /*=== INTERRUPT ASYNCHRONOUS (ERC32) INITIALIZATION TO A NULL FUNC.======*/
248
249 /* INTERRUPT MASKED_ERRORS */
250 status |=OS_piIsrCatch ( IM_ihNullINT,
251 ERC32_INTERRUPT_MASKED_ERRORS+0x10,
252 &OldHandler);
253
254 /* INTERRUPT UART_A_RX_TX */
255 status |=OS_piIsrCatch ( IM_ihNullINT,
256 ERC32_INTERRUPT_UART_A_RX_TX+0x10,
257 &OldHandler);
258 /* INTERRUPT UART_B_RX_TX */
259 status |=OS_piIsrCatch ( IM_ihNullINT,
260 ERC32_INTERRUPT_UART_B_RX_TX+0x10,
261 &OldHandler);
262 /* INTERRUPT CORRECTABLE_MEMORY_ERROR */
263 status |=OS_piIsrCatch ( IM_ihNullINT,
264 ERC32_INTERRUPT_CORRECTABLE_MEMORY_ERROR+0x10,
265 &OldHandler);
266 /* INTERRUPT UART_ERROR */
267 status |=OS_piIsrCatch ( IM_ihNullINT,
268 ERC32_INTERRUPT_UART_ERROR+0x10,
269 &OldHandler);
270 /* INTERRUPT DMA_ACCESS_ERROR */
271 status |=OS_piIsrCatch ( IM_ihNullINT,
272 ERC32_INTERRUPT_DMA_ACCESS_ERROR+0x10,
273 &OldHandler);
274 /* INTERRUPT DMA_TIMEOUT */
275 status |=OS_piIsrCatch ( IM_ihNullINT,
276 ERC32_INTERRUPT_DMA_TIMEOUT+0x10,
277 &OldHandler);
278
279 status |=OS_piIsrCatch ( IM_ihWDINT,
280 ERC32_INTERRUPT_WATCHDOG_TIMEOUT+0x10,
281 &OldHandler);
282
283
284
285 if (status!=SUCCESSFUL)
286 {
287 /* ISR not successfully established */
288 // LOG_INFN HA_piLogHistoryEntry10(HA_E10_SW_IM,HA_E10_INT_CATCH_ERR,status);
289 LU_INFN_LOG(LU_FATAL | LU_HA ,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
290 }
291 /*===========================================================================*/
292 /*===== SYSTEM CONTROL REGISTER PROGRAMMING ======*/
293 #ifndef SIMULATOR
294 #ifdef __FM__
295 ERC32_MEC.Control =0x1288801B;
296 #else
297 /* for EM the HW errors are masked */
298 ERC32_MEC.Control =0x1288A0BB;
299 #endif
300 #else // SIMULATOR
301 /* same as EM */
302 ERC32_MEC.Control =0x1288A0BB;
303 #endif
304 /*===========================================================================*/
305 /*===== INTERRUPTS SHAPE REGISTER PROGRAMMING ======*/
306
307 /* 31.....13 12 11 10 9 8 7 6 5 4 3 2 1 0 */
308 /* Reserved - Polarity - Ack - Edge */
309 /* - 0 0 0 0 1 - 0 0 0 - 1 1 1 1 0 */
310
311 /* Edge - (0) Level Triggered (1) Edge Triggered */
312 /* Polarity - (0) Low Level or Falling Edge */
313 ERC32_MEC.Interrupt_Shape =0x0000011e;
314
315 /*====== INTERRUPTS MASK REGISTER PROGRAMMING ======*/
316
317 /* 31.14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 */
318 /* 1 0 0 0 0 1 1 1 1 0 0 0 0 1 0 */
319 ERC32_MEC.Interrupt_Mask =0x000043c2;
320
321 /*===========================================================================*/
322 /*===== ALL ERC32 INTERRUPTS ARE CLEARED ======*/
323
324 ERC32_Clear_interrupt(ERC32_INTERRUPT_MASKED_ERRORS);
325 ERC32_Clear_interrupt(ERC32_INTERRUPT_EXTERNAL_1);
326 ERC32_Clear_interrupt(ERC32_INTERRUPT_EXTERNAL_2);
327 ERC32_Clear_interrupt(ERC32_INTERRUPT_UART_A_RX_TX);
328 ERC32_Clear_interrupt(ERC32_INTERRUPT_UART_B_RX_TX);
329 ERC32_Clear_interrupt(ERC32_INTERRUPT_CORRECTABLE_MEMORY_ERROR);
330 ERC32_Clear_interrupt(ERC32_INTERRUPT_UART_ERROR);
331 ERC32_Clear_interrupt(ERC32_INTERRUPT_DMA_ACCESS_ERROR);
332 ERC32_Clear_interrupt(ERC32_INTERRUPT_DMA_TIMEOUT);
333 ERC32_Clear_interrupt(ERC32_INTERRUPT_EXTERNAL_3);
334 ERC32_Clear_interrupt(ERC32_INTERRUPT_EXTERNAL_4);
335 ERC32_Clear_interrupt(ERC32_INTERRUPT_GENERAL_PURPOSE_TIMER);
336 ERC32_Clear_interrupt(ERC32_INTERRUPT_REAL_TIME_CLOCK);
337 ERC32_Clear_interrupt(ERC32_INTERRUPT_EXTERNAL_5);
338 ERC32_Clear_interrupt(ERC32_INTERRUPT_WATCHDOG_TIMEOUT);
339
340 return (status);
341
342 }
343
344
345 /*****************************************************************************/
346 /* @Function: IM_opExternalINT1 */
347 /* @Purpose : */
348 /* The function implements the interrupt handler of the Data Access */
349 /* exception. */
350 /* This interrupt arises when error on data loading is found out. */
351 /* The function performs the following steps: */
352 /* - Disable all sparc interrupts. */
353 /* - Get error information by reading Sistem Fault Status register. */
354 /* - Write System Status Word =0x8000 | SYSFSR(2..15 bits) in the 1553 */
355 /* memory area. */
356 /* - Stop any task operation and continuosly perform Watchdog reset. */
357 /* */
358 /* @@ */
359 /* @Parameter Name @Mode @Description */
360 /* @@ */
361 /*****************************************************************************/
362 #ifdef SIMULATOR
363 static unsigned int IM_DataAccessCount = 0;
364 #endif
365
366 void IM_opDataAccessINT (void)
367 {
368 #ifdef SIMULATOR
369 IM_DataAccessCount++;
370 #else
371 unsigned short statusWord;
372 unsigned int level;
373 LU_UART_CR('D');
374 level =sparc_disable_interrupts();
375 /* Get ERC32 Status Word */
376 statusWord =IM_GET_STATUS_WORD;
377 /* Write Status Word in the 1553 memory area */
378 BI_pi1553BWriteStatusWord(statusWord);
379 /* Stop any task operation */
380 while( FOREVER )
381 {
382 WATCHDOG_RESET;
383 }
384 #endif
385 }
386
387
388
389 /*****************************************************************************/
390 /* @Function: IM_opDataAccessINT */
391 /* @Purpose : */
392 /* The function implements the interrupt handler of the Erc32 */
393 /* Instruction Access exeception. */
394 /* */
395 /* @@ */
396 /* @Parameter Name @Mode @Description */
397 /* IN */
398 /* OUT */
399 /* @@ */
400 /*****************************************************************************/
401
402
403
404
405
406
407
408
409
410 #ifdef SIMULATOR
411 static unsigned int IM_InstructionAccessCount = 0;
412 #endif
413
414 void IM_opInstructionAccessINT (void)
415 {
416 #ifdef SIMULATOR
417 IM_InstructionAccessCount++;
418 #else
419 unsigned short statusWord;
420 unsigned int level;
421 LU_UART_CR('U');
422 level =sparc_disable_interrupts();
423 /* Get ERC32 Status Word */
424 statusWord =IM_GET_STATUS_WORD;
425 /* Write Status Word in the 1553 memory area */
426 BI_pi1553BWriteStatusWord(statusWord);
427 /* Stop any task operation */
428 while( FOREVER )
429 {
430 WATCHDOG_RESET;
431 }
432 #endif
433 }
434
435
436
437 /*****************************************************************************/
438 /* @Function: IM_opExternalINT1 */
439 /* @Purpose : */
440 /* The function implements the interrupt handler of the External INT 1. */
441 /* This interrupt is connected to the CRIMEA component. Reading the */
442 /* CRIMEA Interrupt Pending register can be established which line has */
443 /* produced the interrupt and then called the apropriate management */
444 /* function. */
445 /* The CRIMEA and ERC32 interrupt are cleared. */
446 /* */
447 /* @@ */
448 /* @Parameter Name @Mode @Description */
449 /* @@ */
450 /*****************************************************************************/
451
452 void IM_opExternalINT1 (void)
453 {
454 unsigned int InterVect;
455 unsigned int mask;
456 #ifdef DEBUG
457 IM_Called[IM_INT1]++;
458 #endif
459 mask =0x00010000;
460 CD_piGetCrimeaInterPending (&InterVect);
461 if (InterVect & (mask << CD_INTER_MEM_MOD_1))
462 {
463 #ifdef DEBUG
464 IM_Called[IM_MOD1]++;
465 #endif
466 /* Local Memory Module 1 interrupt menagement */
467 FT_piMemBoardMod(FT_MEM_MOD_1);
468 CD_piSetCrimeaInterClear (mask << CD_INTER_MEM_MOD_1);
469 }
470 if (InterVect & (mask << CD_INTER_MEM_MOD_2))
471 {
472 #ifdef DEBUG
473 IM_Called[IM_MOD2]++;
474 #endif
475 /* Local Memory Module 2 interrupt menagement */
476 FT_piMemBoardMod(FT_MEM_MOD_2);
477 CD_piSetCrimeaInterClear (mask << CD_INTER_MEM_MOD_2);
478 }
479 if (InterVect & (mask << CD_INTER_1553B_MSG))
480 {
481 #ifdef DEBUG
482 IM_Called[IM_1553B]++;
483 #endif
484 /* Bus 1553 interrupt menagement */
485 BI_pi1553BInterruptHandler();
486 CD_piSetCrimeaInterClear (mask << CD_INTER_1553B_MSG);
487 }
488 if (InterVect & (mask << CD_INTER_PIF_ETO))
489 {
490 #ifdef DEBUG
491 IM_Called[IM_PIF_ETO]++;
492 #endif
493 /* PIF Event Timeout */
494 PM_piPageIsEmpty();
495 CD_piSetCrimeaInterClear (mask << CD_INTER_PIF_ETO);
496 }
497 if (InterVect & (mask << CD_AUX_1))
498 {
499 #ifdef DEBUG
500 IM_Called[IM_AUX1]++;
501 #endif
502 /* External Interrupt */
503 /* Add here the function for its management */
504 //TEST!!! remove the next instruction
505 // LOG_INFN HA_piLogHistoryEntry10(HA_E10_SW_IM,HA_E10_INT_CATCH_ERR,0x1);
506 /*@LOG CD_AUX_1 interrupt */
507 LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,InterVect);
508 TI_opTimeSyncExtInterrupt();
509 CD_piSetCrimeaInterClear (mask << CD_AUX_1);
510 }
511
512 #ifdef __FM__
513 if (InterVect & (mask << CD_AUX_2))
514 {
515 #ifdef DEBUG
516 IM_Called[IM_AUX2]++;
517 #endif
518 /* External Interrupt */
519 /* Add here the function for its management */
520 //TEST!!! remove the next instruction
521 // LOG_INFN HA_piLogHistoryEntry10(HA_E10_SW_IM,HA_E10_INT_CATCH_ERR,0x2);
522 /*@LOG CD_AUX_2 interrupt */
523 LU_INFN_LOG(LU_CRITICAL | LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,0x2);
524 CD_piSetCrimeaInterClear (mask << CD_AUX_2);
525 }
526 if (InterVect & (mask << CD_AUX_3))
527 {
528 #ifdef DEBUG
529 IM_Called[IM_AUX3]++;
530 #endif
531 /* External Interrupt */
532 /* Add here the function for its management */
533 //TEST!!! remove the next instruction
534 // LOG_INFN HA_piLogHistoryEntry10(HA_E10_SW_IM,HA_E10_INT_CATCH_ERR,0x3);
535 /*@LOG CD_AUX_3 interrupt */
536 LU_INFN_LOG(LU_CRITICAL | LU_HA ,LU_MASK(__FILEID__),__FILEID__,__LINE__,0x3);
537 CD_piSetCrimeaInterClear (mask << CD_AUX_3);
538 }
539 #endif
540
541 /* Clear ERC32 interrupt */
542 ERC32_Clear_interrupt(ERC32_INTERRUPT_EXTERNAL_1);
543 }
544
545
546
547 /*****************************************************************************/
548 /* @Function: IM_opExternalINT2 */
549 /* @Purpose : */
550 /* The function implements the interrupt handler of the External INT 2. */
551 /* This interrupt is connected to the Data Timeout signal. The function */
552 /* that menages the Data Timeout interrupt is in SRAMPageManager object. */
553 /* The ERC32 interrupt is cleared. */
554 /* */
555 /* @@ */
556 /* @Parameter Name @Mode @Description */
557 /* @@ */
558 /*****************************************************************************/
559
560 void IM_opExternalINT2 (void)
561 {
562 /* Call Data Timeout menagement function in SRAMPageManager */
563 #ifdef DEBUG
564 IM_Called[IM_INT2]++;
565 #endif
566 PM_piPageHasData();
567
568 /* Due to HW/SW synchro the interrupt pending clear is */
569 /* made in the above ISR */
570 }
571
572
573
574 /*****************************************************************************/
575 /* @Function: IM_opExternalINT3 */
576 /* @Purpose : */
577 /* The function implements the interrupt handler of the External INT 3. */
578 /* This interrupt is connected to the Read EOT signal. */
579 /* The function that manages the Read EOT interrupt is in MMSUManager object.*/
580 /* The ERC32 interrupt is cleared. */
581 /* */
582 /* @@ */
583 /* @Parameter Name @Mode @Description */
584 /* @@ */
585 /*****************************************************************************/
586
587 void IM_opExternalINT3 (void)
588 {
589 /* Call Read EOT menagement function in MMSUManager */
590 #ifdef DEBUG
591 IM_Called[IM_INT3]++;
592 #endif
593 FT_piReadEOT();
594
595 /* Due to HW/SW synchro the interrupt pending clear is */
596 /* made in the above ISR */
597 }
598
599
600
601 /*****************************************************************************/
602 /* @Function: IM_opExternalINT4 */
603 /* @Purpose : */
604 /* The function implements the interrupt handler of the External INT 4. */
605 /* This interrupt is connected to the Write EOT signal. */
606 /* The function that manages the Write EOT interrupt is in MMSUManager */
607 /* object. The ERC32 interrupt is cleared. */
608 /* */
609 /* @@ */
610 /* @Parameter Name @Mode @Description */
611 /* @@ */
612 /*****************************************************************************/
613
614
615 void IM_MMSU_ISR(rtems_id timer_id,
616 void *unused)
617 {
618 FT_piWriteEOT();
619 }
620
621
622
623 void IM_opExternalINT4 (void)
624 {
625 #ifdef DEBUG
626 IM_Called[IM_INT4]++;
627 #endif
628
629 FT_piWriteEOT();
630
631
632 /* Due to HW/SW synchro the interrupt pending clear is */
633 /* made in the above ISR */
634 }
635
636
637
638 /*****************************************************************************/
639 /* @Function: IM_opExternalINT5 */
640 /* @Purpose : */
641 /* The function implements the interrupt handler of the External INT 5. */
642 /* This interrupt is connected to the Event Trigger signal. */
643 /* The function that manages the Event Triger interrupt is in */
644 /* SRAMPageManager object. The ERC32 interrupt is cleared. */
645 /* */
646 /* @@ */
647 /* @Parameter Name @Mode @Description */
648 /* @@ */
649 /*****************************************************************************/
650
651 void IM_opExternalINT5 (void)
652 {
653 #ifdef DEBUG
654 IM_Called[IM_INT5]++;
655 #endif
656 /* Call Event Trigger menagement function in SRAMPageManager */
657
658 /* event trigger is not via interrupt in the new system design */
659 // PM_piPreparePage();
660
661 /* Due to HW/SW synchro the interrupt pending clear is */
662 /* made in the above ISR */
663 }
664
665
666
667 /*****************************************************************************/
668 /* @Function: IM_opNullINT */
669 /* @Purpose : */
670 /* The function implements the null interrupt handler. */
671 /* */
672 /* @@ */
673 /* @Parameter Name @Mode @Description */
674 /* @@ */
675 /*****************************************************************************/
676
677 void IM_opNullINT (void)
678 {
679 #ifdef DEBUG
680 IM_Called[IM_NULL]++;
681 #endif
682 }
683
684
685 #ifdef DEBUG
686 unsigned int IM_opGetCalled(unsigned int i) {
687 if(i<IM_INT_MAX)
688 return IM_Called[i];
689 return -1;
690 }
691
692 #endif

  ViewVC Help
Powered by ViewVC 1.1.23