Exemplo n.º 1
0
/*========================= IMPLEMENTATION           =========================*/
int spi_init(SpiMaster_t SpiMasterEnable, SpiMode_t SpiMode, SpiDataOrder_t DataOrder, SpiSpeed_t SpiSpeed)
{
    // enable SPI module
    PRR &= ~(1 << PRSPI);

    // I/O interface
    IO_INPUT_NO_PULLUP(SPI, 1, MISO);
    IO_OUTPUT(SPI, 3, MOSI, SCK, SS);

    // set default value SS pin
    IO_SET(SPI,1,SS);

    // Clear interrupt flag (and write SPI2X)
    IO_PUT(SPSR,(1<<SPIF) | (SpiSpeed & (1<<(SPI2X+MAGIC_OFFSET)))>>MAGIC_OFFSET);

    // init buffer
    sgSpi.buffer.in_ptr = NULL;
    sgSpi.buffer.out_ptr = NULL;
    sgSpi.buffer.end = NULL;
    sgSpi.buffer.size = 0;
    sgSpi.busy = false;

    // Configure SPI and enable the SPI interface
    SPCR = (uint8_t)SpiMasterEnable
        | (uint8_t)SpiMode
        | (uint8_t)DataOrder
        | ((uint8_t)(SpiSpeed & ((1<<SPR1) | (1<<SPR0))))
        | (1<<SPE);
    
    return 0;
}
Exemplo n.º 2
0
void InitIO()
{
    IO_OUTPUT(DATA_OUT_TRIGGER_PIN);
    ANSELBIT(DATA_OUT_TRIGGER_AN_PIN) = 0;

    IO_OUTPUT(ALERT_PIN);
    ANSELBIT(ALERT_AN_PIN) = 0;
            
    IO_OUTPUT(DATA_OUT0_PIN);
    ANSELBIT(DATA_OUT0_AN_PIN) = 0;

    IO_OUTPUT(DATA_OUT1_PIN);
//    ANSELBIT(DATA_OUT0_AN_PIN) = 0;

    IO_OUTPUT(DATA_OUT2_PIN);
    ANSELBIT(DATA_OUT0_AN_PIN) = 0;

    IO_OUTPUT(DATA_OUT3_PIN);
    ANSELBIT(DATA_OUT0_AN_PIN) = 0;


    IO_INPUT(DATA_IN0_PIN);
    ANSELBIT(DATA_IN0_AN_PIN) = 0;

    IO_INPUT(DATA_IN1_PIN);
    ANSELBIT(DATA_IN1_AN_PIN) = 0;

    IO_INPUT(DATA_IN2_PIN);
//    ANSELBIT(DATA_IN2_AN_PIN) = 0;

    IO_INPUT(DATA_IN3_PIN);
//    ANSELBIT(DATA_IN3_AN_PIN) = 0;
}
Exemplo n.º 3
0
// Does the basic GPIO/function configuration of a pin using the pin config constant.
void configPin(const uint32_t pin) {

  PINSEL_CFG_Type PinCfg;

  PinCfg.Pinnum = IO_PIN(pin);
  PinCfg.Portnum = IO_PORT(pin);
  PinCfg.Funcnum = IO_FUNC(pin);

  PinCfg.OpenDrain = 0;
  PinCfg.Pinmode = 0;

  PINSEL_ConfigPin(&PinCfg);

  GPIO_SetDir(IO_PORT(pin), 1<<IO_PIN(pin), IO_OUTPUT(pin) ? 1 : 0);
}