Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 

177 рядки
5.0 KiB

  1. #include "BoardCfg.h"
  2. int InitBoard()
  3. {
  4. DDPCONbits.JTAGEN = 0;
  5. HEARTBEAT_LED_1_PIN_DIR = PIN_OUTPUT;
  6. HEARTBEAT_LED_2_PIN_DIR = PIN_OUTPUT;
  7. HEARTBEAT_LED_2_PIN = LED_OFF;
  8. HEARTBEAT_LED_1_PIN = LED_ON;
  9. // LORA_ACTIVITY_LED_PIN_DIR = PIN_OUTPUT;
  10. // LORA_ACTIVITY_LED_PIN = LED_OFF;
  11. // GP_DEBUG_1_PIN_DIR = PIN_OUTPUT;
  12. // GP_DEBUG_1_PIN = 0;
  13. // GP_DEBUG_2_PIN_DIR = PIN_OUTPUT;
  14. // GP_DEBUG_2_PIN = 0;
  15. SPI_SDI_PIN_DIR = PIN_INPUT;
  16. SD_SPI_SS_PIN_DIR = PIN_OUTPUT;
  17. SPI_SDO_PIN_DIR = PIN_OUTPUT;
  18. SPI_SCK_PIN_DIR = PIN_OUTPUT;
  19. //////////////// SPI FLASH //////////////////
  20. FLASH_SS_PIN_DIR = PIN_OUTPUT;
  21. FLASH_SS_PIN = 1;
  22. /////////////////////////// WIFI ///////////////////
  23. //Wifi (WINC1500 module)
  24. WIFI_SPI_SS_PIN_DIR = PIN_OUTPUT;
  25. WIFI_SPI_SS_PIN = 1;
  26. WIFI_IRQ_PIN_DIR = PIN_INPUT;
  27. // WIFI_SPI_CFG_PIN_DIR = PIN_OUTPUT;
  28. // WIFI_SPI_CFG_PIN = 0;
  29. WIFI_CHP_EN_PIN_DIR = PIN_OUTPUT;
  30. WIFI_CHP_EN_PIN = 0;
  31. WIFI_CHP_RST_PIN_DIR = PIN_OUTPUT;
  32. WIFI_CHP_RST_PIN = 0;
  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. //ADC Config
  50. AD1PCFG = 0xFFFF; //Sart with I/O pins configured as digital I/O
  51. // AD1PCFGbits.PCFG1 = 0;
  52. // AD1PCFGbits.PCFG2 = 0;
  53. // TRISBbits.TRISB1 = PIN_INPUT;
  54. //TRISBbits.TRISB2 = PIN_INPUT;
  55. // AD1CON1 = 0;
  56. // AD1CON2 = 0;
  57. // AD1CON3 = 0;
  58. // AD1CHS = 0;
  59. // AD1CHSbits.CH0SA = 1; //AN1
  60. // AD1CON3bits.ADCS = 0xF0;
  61. // AD1CON3bits.SAMC = 0x01;
  62. // AD1CON1bits.ON = 1;
  63. // AD1CON1bits.SAMP = 1;
  64. ONBOARD_LED1_PIN_DIR = PIN_OUTPUT;
  65. ONBOARD_LED1_PIN = LED_OFF;
  66. ONBOARD_LED2_PIN_DIR = PIN_OUTPUT;
  67. ONBOARD_LED2_PIN = LED_OFF;
  68. ONBOARD_LED3_PIN_DIR = PIN_OUTPUT;
  69. ONBOARD_LED3_PIN = LED_OFF;
  70. ONBOARD_LED7_PIN_DIR = PIN_OUTPUT;
  71. ONBOARD_LED7_PIN = LED_OFF;
  72. PUSH_BUTTON_LED1_PIN_DIR = PIN_OUTPUT;
  73. PUSH_BUTTON_LED1_PIN = LED_OFF;
  74. PUSH_BUTTON_LED2_PIN_DIR = PIN_OUTPUT;
  75. PUSH_BUTTON_LED2_PIN = LED_OFF;
  76. PUSH_BUTTON_LED3_PIN_DIR = PIN_OUTPUT;
  77. PUSH_BUTTON_LED3_PIN = LED_OFF;
  78. PUSH_BUTTON_LED4_PIN_DIR = PIN_OUTPUT;
  79. PUSH_BUTTON_LED4_PIN = LED_OFF;
  80. PUSH_BUTTON_LED5_PIN_DIR = PIN_OUTPUT;
  81. PUSH_BUTTON_LED5_PIN = LED_OFF;
  82. PUSH_BUTTON_LED6_PIN_DIR = PIN_OUTPUT;
  83. PUSH_BUTTON_LED6_PIN = LED_OFF;
  84. PUSH_BUTTON_LED7_PIN_DIR = PIN_OUTPUT;
  85. PUSH_BUTTON_LED7_PIN = LED_OFF;
  86. PUSH_BUTTON_INPUT1_PIN_DIR = PIN_INPUT;
  87. PUSH_BUTTON_INPUT2_PIN_DIR = PIN_INPUT;
  88. PUSH_BUTTON_INPUT3_PIN_DIR = PIN_INPUT;
  89. PUSH_BUTTON_INPUT4_PIN_DIR = PIN_INPUT;
  90. PUSH_BUTTON_INPUT5_PIN_DIR = PIN_INPUT;
  91. PUSH_BUTTON_INPUT6_PIN_DIR = PIN_INPUT;
  92. PUSH_BUTTON_INPUT7_PIN_DIR = PIN_INPUT;
  93. VU1_DAC_SYNC_PIN_DIR = PIN_OUTPUT;
  94. TRISGbits.TRISG2 = PIN_INPUT; //Force high impedance
  95. VU1_DAC_SYNC_PIN = 1;
  96. VU1_BACKLIGHT_PIN_DIR = PIN_OUTPUT;
  97. VU1_BACKLIGHT_PIN = LED_OFF;
  98. VU1_ANALOG_FEEDBACK_PIN_DIR = PIN_INPUT;
  99. VU2_DAC_SYNC_PIN_DIR = PIN_OUTPUT;
  100. TRISGbits.TRISG3 = PIN_INPUT; //Force high impedance
  101. VU2_DAC_SYNC_PIN = 1;
  102. VU2_BACKLIGHT_PIN_DIR = PIN_OUTPUT;
  103. VU2_BACKLIGHT_PIN = LED_OFF;
  104. VU2_ANALOG_FEEDBACK_PIN_DIR = PIN_INPUT;
  105. BUREAU_VOL_POT_CW_PIN_DIR = PIN_INPUT;
  106. BUREAU_VOL_POT_CCW_PIN_DIR = PIN_INPUT;
  107. BUREAU_VOL_POT_CCW_PIN_DIR = PIN_INPUT;
  108. BUREAU_VOL_POT_CCW_PIN_DIR = PIN_INPUT;
  109. ////// MISC UNUSED STUFF ///////////
  110. // IEC0bits.INT1IE = 0;
  111. // IFS0bits.INT1IF = 0;
  112. // INTCONbits.INT1EP = 1; //Rising edge
  113. // IPC1bits.INT1IP = 2;
  114. // IPC1bits.INT1IS = 1;
  115. // IEC0bits.INT1IE = 1;
  116. // OC3CON = 0;
  117. // OC3R = 0;
  118. // OC3RS = 2000; //50% PWM
  119. // OC3CONbits.OCTSEL = 0;
  120. // OC3CONbits.OCM = 0b110; //PWM mode, no fault protection
  121. //#ifdef __32MX330F064H__
  122. // RPD2Rbits.RPD2R = 0b1011; //RD2 peripheral selection = OC3
  123. //#endif
  124. //
  125. // T2CONbits.TON = 0; // Disable Timer
  126. // // T2CONbits.TCS = 0; // Select internal instruction cycle clock
  127. // T2CONbits.TGATE = 0; // Disable Gated Timer mode
  128. // T2CONbits.TCKPS = 0b011; // Select 1:1 Prescaler
  129. // TMR2 = 0x00; // Clear timer register
  130. //
  131. //
  132. // IPC2bits.T2IP = 0x01; // Set Timer 2 Interrupt Priority Level
  133. // IFS0bits.T2IF = 0; // Clear Timer 2 Interrupt Flag
  134. // IEC0bits.T2IE = 0; // Disable Timer 2 interrupt
  135. // T2CONbits.TON = 1; // Start Timer
  136. //
  137. // OC3CONbits.ON = 1;
  138. RTCCONbits.ON = 1;
  139. return RET_OK;
  140. }