void Commands_SetPinConfig(uint8_t* data) { switch (data[1]) { case MakeDigitalInput: GPIO_SetInput(data[0], data[2]); pinConfigs[data[0]] = DigitalInput; break; case MakeDigitalOutput: GPIO_SetOutput(data[0]); pinConfigs[data[0]] = DigitalOutput; break; case SetDigitalValue: GPIO_WriteValue(data[0], data[2]); break; case MakeAnalogInput: ADC_SetInput(data[0]); pinConfigs[data[0]] = AnalogInput; break; case MakePWMPin: PWM_SetOutput(data[0], data[2]); break; case SetPWMValue: PWM_SetValue(data[0], data[2], data[3]); break; } }
void SPI_SetConfig(SpiConfigData_t* config) { uint8_t spiMode; csPin = config->CsPin; csPolarity = config->CsPolarity; switch(config->SpiMode) { case 0: spiMode = SPI0_CLKMODE_0; break; case 1: spiMode = SPI0_CLKMODE_1; break; case 2: spiMode = SPI0_CLKMODE_2; break; case 3: spiMode = SPI0_CLKMODE_3; break; } if(config->IsEnabled) { SFRPAGE = 0x20; SPI0CKR = config->CkrVal; SPI0_init(spiMode, true, false); SPI_Enable(); if(csPin != 0) { GPIO_MakeOutput(csPin, PushPullOutput); GPIO_WriteValue(csPin, !csPolarity); } } else SPI_Disable(); }
void SPI_DeactivateCs() { if(csPin != 0) GPIO_WriteValue(csPin, !csPolarity); }