Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

131 Zeilen
3.3 KiB

  1. #include "BoardCfg.h"
  2. int InitBoard()
  3. {
  4. HEARTBEAT_LED_1_PIN_DIR = PIN_OUTPUT;
  5. HEARTBEAT_LED_2_PIN_DIR = PIN_OUTPUT;
  6. HEARTBEAT_LED_2_PIN = LED_OFF;
  7. HEARTBEAT_LED_1_PIN = LED_ON;
  8. LORA_ACTIVITY_LED_PIN_DIR = PIN_OUTPUT;
  9. LORA_ACTIVITY_LED_PIN = LED_OFF;
  10. // GP_DEBUG_1_PIN_DIR = PIN_OUTPUT;
  11. // GP_DEBUG_1_PIN = 0;
  12. // GP_DEBUG_2_PIN_DIR = PIN_OUTPUT;
  13. // GP_DEBUG_2_PIN = 0;
  14. SPI_SDI_PIN_DIR = PIN_INPUT;
  15. SD_SPI_SS_PIN_DIR = PIN_OUTPUT;
  16. SPI_SDO_PIN_DIR = PIN_OUTPUT;
  17. SPI_SCK_PIN_DIR = PIN_OUTPUT;
  18. FLASH_SS_PIN_DIR = PIN_OUTPUT;
  19. FLASH_SS_PIN = 1;
  20. //Wifi (WINC1500 module)
  21. WIFI_SPI_SS_PIN_DIR = PIN_OUTPUT;
  22. WIFI_SPI_SS_PIN = 1;
  23. WIFI_IRQ_PIN_DIR = PIN_INPUT;
  24. // WIFI_SPI_CFG_PIN_DIR = PIN_OUTPUT;
  25. // WIFI_SPI_CFG_PIN = 0;
  26. WIFI_CHP_EN_PIN_DIR = PIN_OUTPUT;
  27. WIFI_CHP_EN_PIN = 0;
  28. WIFI_CHP_RST_PIN_DIR = PIN_OUTPUT;
  29. WIFI_CHP_RST_PIN = 0;
  30. // DOOR_PAD_D0_PIN_DIR = PIN_INPUT;
  31. // DOOR_PAD_D1_PIN_DIR
  32. // DOOR_PAD_D1_PIN
  33. //Wifi chip IRQ
  34. IEC0bits.INT0IE = 0;
  35. IFS0bits.INT0IF = 0;
  36. INTCONbits.INT0EP = 0; //Falling edge
  37. IPC0bits.INT0IP = 3;
  38. IPC0bits.INT0IS = 0;
  39. IEC0bits.INT0IE = 1;
  40. //Wifi chip SPI
  41. SPI2CON = 0;
  42. SPI2CONbits.MSTEN = 1;
  43. SPI2CONbits.CKE = 1;
  44. SPI2CONbits.SMP = 0;
  45. SPI2CONbits.CKP = 0;
  46. SPI2BRG = SPICalculateBRG(PERIPHERAL_FREQ, 1000000);
  47. // SPI2BRG = SPICalculateBRG(PERIPHERAL_FREQ, 50000);
  48. SPI2CONbits.ON = 1;
  49. //Chalet inverter power relay
  50. POWER_RELAY_ON_PIN_DIR = PIN_OUTPUT;
  51. POWER_RELAY_OFF_PIN_DIR = PIN_OUTPUT;
  52. POWER_RELAY_ON_PIN = 0;
  53. POWER_RELAY_OFF_PIN = 0;
  54. //Harakiri relay
  55. HARAKIRI_RELAY_ON_PIN_DIR = PIN_OUTPUT;
  56. HARAKIRI_RELAY_ON_PIN= 0;
  57. //12V presence detection input
  58. CHALET_12V_PRESENCE_PIN_DIR = PIN_INPUT;
  59. //Battery voltage measurement (analog input)
  60. BATTERY_VOLTAGE_ANALOG_PIN_DIR = PIN_INPUT;
  61. IEC0bits.INT1IE = 0;
  62. IFS0bits.INT1IF = 0;
  63. INTCONbits.INT1EP = 1; //Rising edge
  64. IPC1bits.INT1IP = 2;
  65. IPC1bits.INT1IS = 1;
  66. // IEC0bits.INT1IE = 1;
  67. // OC3CON = 0;
  68. // OC3R = 0;
  69. // OC3RS = 2000; //50% PWM
  70. // OC3CONbits.OCTSEL = 0;
  71. // OC3CONbits.OCM = 0b110; //PWM mode, no fault protection
  72. //#ifdef __32MX330F064H__
  73. // RPD2Rbits.RPD2R = 0b1011; //RD2 peripheral selection = OC3
  74. //#endif
  75. //
  76. // T2CONbits.TON = 0; // Disable Timer
  77. // // T2CONbits.TCS = 0; // Select internal instruction cycle clock
  78. // T2CONbits.TGATE = 0; // Disable Gated Timer mode
  79. // T2CONbits.TCKPS = 0b011; // Select 1:1 Prescaler
  80. // TMR2 = 0x00; // Clear timer register
  81. //
  82. //
  83. // IPC2bits.T2IP = 0x01; // Set Timer 2 Interrupt Priority Level
  84. // IFS0bits.T2IF = 0; // Clear Timer 2 Interrupt Flag
  85. // IEC0bits.T2IE = 0; // Disable Timer 2 interrupt
  86. // T2CONbits.TON = 1; // Start Timer
  87. //
  88. // OC3CONbits.ON = 1;
  89. //ADC test
  90. AD1PCFG = 0xFFFF; //Sart with I/O pins configured as digital I/O
  91. AD1PCFGbits.PCFG1 = 0;
  92. TRISBbits.TRISB1 = PIN_INPUT;
  93. AD1CON1 = 0;
  94. AD1CON2 = 0;
  95. AD1CON3 = 0;
  96. AD1CHS = 0;
  97. AD1CHSbits.CH0SA = 1; //AN1
  98. AD1CON3bits.ADCS = 0xF0;
  99. AD1CON3bits.SAMC = 0x01;
  100. AD1CON1bits.ON = 1;
  101. AD1CON1bits.SAMP = 1;
  102. return RET_OK;
  103. }