You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

98 line
2.4 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_ON;
  7. HEARTBEAT_LED_1_PIN = LED_ON;
  8. GP_DEBUG_1_PIN_DIR = PIN_OUTPUT;
  9. GP_DEBUG_1_PIN = 0;
  10. GP_DEBUG_2_PIN_DIR = PIN_OUTPUT;
  11. GP_DEBUG_2_PIN = 0;
  12. SPI_SDI_PIN_DIR = PIN_INPUT;
  13. SD_SPI_SS_PIN_DIR = PIN_OUTPUT;
  14. SPI_SDO_PIN_DIR = PIN_OUTPUT;
  15. SPI_SCK_PIN_DIR = PIN_OUTPUT;
  16. //Wifi (WINC1500 module)
  17. WIFI_SPI_SS_PIN_DIR = PIN_OUTPUT;
  18. WIFI_SPI_SS_PIN = 1;
  19. WIFI_IRQ_PIN_DIR = PIN_INPUT;
  20. // WIFI_WAKE_PIN_DIR = PIN_OUTPUT;
  21. // WIFI_WAKE_PIN = 1;
  22. WIFI_SPI_CFG_PIN_DIR = PIN_OUTPUT;
  23. WIFI_SPI_CFG_PIN = 0;
  24. WIFI_CHP_EN_PIN_DIR = PIN_OUTPUT;
  25. WIFI_CHP_EN_PIN = 0;
  26. WIFI_CHP_RST_PIN_DIR = PIN_OUTPUT;
  27. WIFI_CHP_RST_PIN = 0;
  28. //Wifi chip IRQ
  29. IEC0bits.INT0IE = 0;
  30. IFS0bits.INT0IF = 0;
  31. INTCONbits.INT0EP = 0; //Rising edge
  32. IPC0bits.INT0IP = 3;
  33. IPC0bits.INT0IS = 0;
  34. IEC0bits.INT0IE = 1;
  35. //Wifi chip SPI
  36. SPI2CON = 0;
  37. SPI2CONbits.MSTEN = 1;
  38. SPI2CONbits.CKE = 0;
  39. SPI2CONbits.SMP = 0;
  40. SPI2CONbits.CKP = 0;
  41. SPI2BRG = SPICalculateBRG(PERIPHERAL_FREQ, 500000);
  42. SPI2CONbits.ON = 1;
  43. //Control knob encoder
  44. KNOB_PH_A_PIN_DIR = PIN_INPUT;
  45. KNOB_PH_B_PIN_DIR = PIN_INPUT;
  46. KNOB_TGLE_BTN_PIN_DIR = PIN_INPUT;
  47. IEC0bits.INT1IE = 0;
  48. IFS0bits.INT1IF = 0;
  49. INTCONbits.INT1EP = 1; //Rising edge
  50. IPC1bits.INT1IP = 2;
  51. IPC1bits.INT1IS = 1;
  52. // IEC0bits.INT1IE = 1;
  53. //Led controller PWM
  54. LED_PWM_PIN_DIR = PIN_OUTPUT;
  55. LED_PWM_PIN = 0;
  56. OC3CON = 0;
  57. OC3R = 0;
  58. OC3RS = 2000; //50% PWM
  59. OC3CONbits.OCTSEL = 0;
  60. OC3CONbits.OCM = 0b110; //PWM mode, no fault protection
  61. T2CONbits.TON = 0; // Disable Timer
  62. T2CONbits.TCS = 0; // Select internal instruction cycle clock
  63. T2CONbits.TGATE = 0; // Disable Gated Timer mode
  64. T2CONbits.TCKPS = 0b00; // Select 1:1 Prescaler
  65. TMR2 = 0x00; // Clear timer register
  66. //PR2 = 256; // Load the period value
  67. PR2 = PWM_RANGE_MAX; //10KHz @ 80MHz
  68. IPC2bits.T2IP = 0x01; // Set Timer 2 Interrupt Priority Level
  69. IFS0bits.T2IF = 0; // Clear Timer 2 Interrupt Flag
  70. IEC0bits.T2IE = 0; // Disable Timer 2 interrupt
  71. T2CONbits.TON = 1; // Start Timer
  72. OC3CONbits.ON = 1;
  73. return RET_OK;
  74. }