@@ -656,11 +656,15 void spacewire_update_statistics( void ) | |||
|
656 | 656 | void timecode_irq_handler( void *pDev, void *regs, int minor, unsigned int tc ) |
|
657 | 657 | { |
|
658 | 658 | // a valid timecode has been received, write it in the HK report |
|
659 |
unsigned int * |
|
|
659 | unsigned int *grspwPtr; | |
|
660 | unsigned char timecodeCtr; | |
|
661 | unsigned char updateTimeCtr; | |
|
660 | 662 | |
|
661 | 663 | grspwPtr = (unsigned int *) (REGS_ADDR_GRSPW + APB_OFFSET_GRSPW_TIME_REGISTER); |
|
662 | 664 | |
|
663 | housekeeping_packet.hk_lfr_dpu_spw_last_timc = (unsigned char) (grspwPtr[0] & 0xff); // [11 1111] | |
|
665 | housekeeping_packet.hk_lfr_dpu_spw_last_timc = (unsigned char) (grspwPtr[0] & 0xff); // [1111 1111] | |
|
666 | timecodeCtr = (unsigned char) (grspwPtr[0] & 0x3f); // [0011 1111] | |
|
667 | updateTimeCtr = time_management_regs->coarse_time_load & 0x3f; // [0011 1111] | |
|
664 | 668 | |
|
665 | 669 | // update the number of valid timecodes that have been received |
|
666 | 670 | if (housekeeping_packet.hk_lfr_dpu_spw_tick_out_cnt == 255) |
@@ -671,6 +675,19 void timecode_irq_handler( void *pDev, v | |||
|
671 | 675 | { |
|
672 | 676 | housekeeping_packet.hk_lfr_dpu_spw_tick_out_cnt = housekeeping_packet.hk_lfr_dpu_spw_tick_out_cnt + 1; |
|
673 | 677 | } |
|
678 | ||
|
679 | // check the value of the timecode with respect to the last TC_LFR_UPDATE_TIME => SSS-CP-FS-370 | |
|
680 | if (timecodeCtr != updateTimeCtr) | |
|
681 | { | |
|
682 | if (housekeeping_packet.hk_lfr_time_timecode_ctr == 255) | |
|
683 | { | |
|
684 | housekeeping_packet.hk_lfr_time_timecode_ctr = 0; | |
|
685 | } | |
|
686 | else | |
|
687 | { | |
|
688 | housekeeping_packet.hk_lfr_time_timecode_ctr = housekeeping_packet.hk_lfr_time_timecode_ctr + 1; | |
|
689 | } | |
|
690 | } | |
|
674 | 691 | } |
|
675 | 692 | |
|
676 | 693 | rtems_timer_service_routine user_routine( rtems_id timer_id, void *user_data ) |
General Comments 0
You need to be logged in to leave comments.
Login now