123
Fork of LG by
Diff: DeviceSSP.c
- Revision:
- 149:abbf7663d27d
- Child:
- 156:e68ee0bcdcda
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DeviceSSP.c Tue May 03 05:12:26 2016 +0000 @@ -0,0 +1,70 @@ +#include "Device.h" +extern Device device; + +void InitSSPWithDefaults(void){ +} + +void InitSSP(void){ +} + +void DeviceSSPReceive(void){ + //Prepare ADCs for sampling + LPC_GPIO0->FIOCLR = 1<<16; //reset SSEL signal for ADCs + //Start ADCs sampling + LPC_GPIO0->FIOSET = 1<<16; //set SSEL signal for ADCs + //Get samples + uint32_t value; + device.SSP.accumulator[4] += LPC_SSP0->DR; + device.SSP.accumulator[3] += LPC_SSP0->DR; + device.SSP.accumulator[2] += LPC_SSP0->DR; + device.SSP.accumulator[1] += LPC_SSP0->DR; + device.SSP.accumulator[0] += LPC_SSP0->DR; + while (LPC_SSP0->SR & 0x00000004) value = LPC_SSP0->DR; + //Average samples for dither period + if (device.dither.state.inPeriodCounter == 0) { + for (uint8_t i = 0; i < 5; i++){ + device.SSP.in[i] = device.SSP.accumulator[i] >> 5; + device.SSP.accumulator[i] = 0; + device.SSP.dataReady = 1; + } + } +} + +void DeviceSSPTransmit(uint8_t index){ + LPC_GPIO0->FIOSET = 1<<23; //set SSEL signal for DACs + LPC_GPIO0->FIOCLR = 1<<23; //reset SSEL signal for DACs + + LPC_SSP0->DR=0x5555; + LPC_SSP0->DR=0x5555; + LPC_SSP0->DR=0x5555; + + if (index){ + LPC_SSP0->DR = 0x00000030; //Write DAC0 + LPC_SSP0->DR = device.SSP.out[0]; + } else { + LPC_SSP0->DR = 0x00000031; //Write DAC1 + LPC_SSP0->DR = device.SSP.out[1]; + /* + //Move to DevicePLCS from here as not SSP specific + uint32_t value; + switch(device.plcs.state.modulation) { + case 1://малое воздействие + value = device.SSP.DAC[1] + Gyro.StrayPLC_Pls; + break; + + case 3://малое воздействие + value = device.SSP.DAC[1] + Gyro.StrayPLC_Mns; + break; + + case 2://большое воздействие + value = device.SSP.DAC[1] + Gyro.StrayPLC_2Mode; + break; + + default://режим без воздействия + value = device.SSP.DAC[1]; + break; + } + LPC_SSP0->DR = device.SSP.DAC[1]; + */ + } +} \ No newline at end of file