]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/lx-rocon.git/blobdiff - sw/app/rocon/appl_pxmc.c
RoCoN: add command to read and reset maximal time spent in PXMC isr.
[fpga/lx-cpu1/lx-rocon.git] / sw / app / rocon / appl_pxmc.c
index 1d3db6f3bf6b19f57f63bbbe169c012b82b9c802..2731da34d8bfe746b9d59e9588a0f412f22842c8 100644 (file)
 int pxmc_ptofs_from_index(pxmc_state_t *mcs, unsigned long irc,
                            unsigned long index_irc, int diff2err);
 
+#ifndef pxmc_fast_tick_time
+#define pxmc_fast_tick_time() (LPC_TIM0->TC)
+#endif
+
 #define PXML_MAIN_CNT 8
 
 #define PXMC_WITH_PT_ZIC 1
@@ -1493,6 +1497,8 @@ pxmc_axis_mode(pxmc_state_t *mcs, int mode)
 
 void pxmc_sfi_isr(void)
 {
+  unsigned long spent = pxmc_fast_tick_time();
+
   pxmc_sfi_input();
   pxmc_sfi_controller_and_output();
   pxmc_sfi_generator();
@@ -1500,6 +1506,12 @@ void pxmc_sfi_isr(void)
   /* Kick LX Master watchdog */
   if (pxmc_main_list.pxml_cnt != 0)
     *fpga_lx_master_transmitter_wdog = 1;
+
+  spent = pxmc_fast_tick_time() - spent;
+
+  if(spent > pxmc_sfi_spent_time_max)
+    pxmc_sfi_spent_time_max = spent;
+
 }
 
 int pxmc_clear_power_stop(void)