示例#1
0
void servo_init() {
    // All servo outputs low initially
    RUBIKS_PLATFORM_PIN = 0;
    RUBIKS_TWIST_PIN = 0;

    SIMON_YELLOW_PIN = 0;
    SIMON_BLUE_PIN = 0;
    SIMON_RED_PIN = 0;
    SIMON_GREEN_PIN = 0;

    ARM_POSITION_PIN = 0;
    ARM_SLIDE_LEFT_PIN = 0;
    ARM_SLIDE_RIGHT_PIN = 0;

    ETCH_VERTICAL_PIN = 0;
    ETCH_HORIZ_PIN = 0;

    // Configure timers and output comparators
    config_servo_timer3();
    config_output_capture1();

    config_servo_timer2();
    config_output_capture2();

    u16_slotWidthTicks = usToU16Ticks(SLOT_WIDTH, getTimerPrescale(T3CONbits));

    DELAY_MS(500);

    // Config all the servo outputs
    CONFIG_RD2_AS_DIG_OUTPUT();
    CONFIG_RD3_AS_DIG_OUTPUT();
    CONFIG_RD4_AS_DIG_OUTPUT();
    CONFIG_RD5_AS_DIG_OUTPUT();
    CONFIG_RD6_AS_DIG_OUTPUT();
    CONFIG_RD7_AS_DIG_OUTPUT();
    CONFIG_RD8_AS_DIG_OUTPUT();
    CONFIG_RD9_AS_DIG_OUTPUT();
    CONFIG_RD10_AS_DIG_OUTPUT();
    CONFIG_RD11_AS_DIG_OUTPUT();
    CONFIG_RB13_AS_DIG_OUTPUT();

    // Turn on the timers
    T3CONbits.TON = 1;
    T2CONbits.TON = 1;
}
// well the spi has to be setup. enough said
inline void configSPI1() {
  SPI1CON1 = SEC_PRESCAL_4_1 | // 4:1 prescale = 60MHz / 4 = 15MHz
             PRI_PRESCAL_1_1 |
             CLK_POL_ACTIVE_HIGH   | //clock active high (CKP = 0)
             SPI_CKE_ON          | //out changes inactive to active (CKE=0)
             SPI_MODE16_ON        | //16-bit mode
             MASTER_ENABLE_ON;     //master mode
  CONFIG_SDO1_TO_RP(RD4_RP);      //use RD4 for SDO
  CONFIG_RD4_AS_DIG_OUTPUT();   //Ensure that this is a digital output
  if(MY_ID == 0) {
    CONFIG_SCK1OUT_TO_RP(RD1_RP);   //use RD5 for SCLK
    CONFIG_RD1_AS_DIG_INPUT();   //Ensure that this is a digital input
  }
  else {
    CONFIG_SCK1OUT_TO_RP(RD5_RP);   //use RD5 for SCLK
    CONFIG_RD5_AS_DIG_INPUT();   //Ensure that this is a digital input
  }
  CONFIG_DAC();       //chip select for MCP41xxx
  DAC_DISABLE();             //disable the chip select
  SPI1STATbits.SPIEN = 1;  //enable SPI mode
}