BoardPeripherals.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #include "BMS_Master.h"
  2. #define TEST_TIMEOUT 10000
  3. extern uint64_t Global_1msCounter;
  4. static vuint32_t TimeStamp;
  5. static void init_BoardIO();
  6. static const Board_Status Board_Status_INIT = {{0},0};
  7. Board_Status Board_S; //globaler BoardStatus
  8. void BoardPeriph_init()
  9. {
  10. RelaisLEDs_init();
  11. TempMess_init();
  12. ADC_1_init();
  13. Board_S = Board_Status_INIT;
  14. Board_S.FRAM_Flags.B.init_ok = (FRAM_init()>=0) ? 1:0;
  15. }
  16. void BoardPeriph_test_init()
  17. {
  18. TimeStamp = Global_1msCounter;
  19. FRAM_trigger_Test();
  20. }
  21. int8_t BoardPeriph_test_update_polled()
  22. {
  23. static uint8_t state = 0;
  24. static int8_t FRAM_result = 0;
  25. static uint32_t old_Global_1msCounter = 0;
  26. uint8_t tick = 0;
  27. int8_t result = 0;
  28. if (Global_1msCounter != old_Global_1msCounter) tick = 1;
  29. switch (state) {
  30. case 0:
  31. if ( RelaisLEDs_TM_update(tick) == 1 )
  32. state = 1;
  33. break;
  34. case 1:
  35. {
  36. FRAM_update(tick);
  37. if (FRAM_result == 0) {
  38. FRAM_result = FRAM_Test_update();
  39. if (FRAM_result > 0) Board_S.FRAM_Flags.B.test_ok = 1;
  40. else if (FRAM_result < 0) Board_S.FRAM_Flags.B.test_fail = 1;
  41. }
  42. result = FRAM_result;
  43. // Board_S.test_time = Global_1msCounter - TimeStamp;
  44. // if ( Board_S.test_time >= TEST_TIMEOUT ) return -100;
  45. break;
  46. }
  47. }
  48. old_Global_1msCounter = Global_1msCounter;
  49. return result;
  50. }
  51. void BoardPeriph_update_1ms()
  52. {
  53. // IMess_update();
  54. // IMess_URef_update();
  55. TempMess_update();
  56. }
  57. void BoardPeriph_update_polled()
  58. {
  59. static uint32_t old_Global_1msCounter = 0;
  60. uint8_t tick = 0;
  61. if (Global_1msCounter != old_Global_1msCounter) {
  62. tick = 1;
  63. }
  64. FRAM_update(tick);
  65. CAN0_update();
  66. old_Global_1msCounter = Global_1msCounter;
  67. }
  68. /*
  69. void do_Testroutine()
  70. {
  71. FRAM_do_Test();
  72. ADC_do_Test();
  73. IMessLEM_do_Test();
  74. TempADC_do_Test();
  75. }*/