fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
igor_v
Date:
Sat Jan 30 13:53:19 2016 +0000
Revision:
1:f2adcae3d304
Parent:
0:8ad47e2b6f00
Child:
2:2d0b80ed9216
123

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igor_v 1:f2adcae3d304 1
igor_v 1:f2adcae3d304 2 #include "Global.h"
igor_v 1:f2adcae3d304 3
igor_v 1:f2adcae3d304 4 //INPUT Input;
igor_v 1:f2adcae3d304 5 //OUTPUT Output;
igor_v 0:8ad47e2b6f00 6
igor_v 0:8ad47e2b6f00 7 volatile uint32_t I2CMasterState = I2C_IDLE;
igor_v 0:8ad47e2b6f00 8 volatile uint32_t I2CMasterBuffer[I2C_WRITELENGTH];
igor_v 0:8ad47e2b6f00 9
igor_v 0:8ad47e2b6f00 10 int ExchangeErr = 0;
igor_v 0:8ad47e2b6f00 11 //----------------------temp---------------------
igor_v 0:8ad47e2b6f00 12 extern char test;
igor_v 0:8ad47e2b6f00 13 /******************************************************************************
igor_v 0:8ad47e2b6f00 14 ** Function name: G_Photo_Exchange
igor_v 0:8ad47e2b6f00 15 **
igor_v 0:8ad47e2b6f00 16 ** Descriptions: Driver for I2C exchange
igor_v 0:8ad47e2b6f00 17 **
igor_v 0:8ad47e2b6f00 18 ** parameters: None
igor_v 0:8ad47e2b6f00 19 ** Returned value: None
igor_v 0:8ad47e2b6f00 20 **
igor_v 0:8ad47e2b6f00 21 ******************************************************************************/
igor_v 0:8ad47e2b6f00 22
igor_v 0:8ad47e2b6f00 23 void G_Photo_Exchange(void)
igor_v 0:8ad47e2b6f00 24 {
igor_v 0:8ad47e2b6f00 25 uint32_t StatValue;
igor_v 0:8ad47e2b6f00 26 static uint32_t WrIndex;
igor_v 0:8ad47e2b6f00 27 static int32_t time_out = TIMEOUT;
igor_v 0:8ad47e2b6f00 28
igor_v 0:8ad47e2b6f00 29 if (I2CMasterState)
igor_v 0:8ad47e2b6f00 30 return; //e.transmitting is not active, go away
igor_v 0:8ad47e2b6f00 31
igor_v 0:8ad47e2b6f00 32 if (--time_out < 0) //e. valid time period elapsed, go away
igor_v 0:8ad47e2b6f00 33 {
igor_v 0:8ad47e2b6f00 34 time_out = TIMEOUT;
igor_v 0:8ad47e2b6f00 35 I2CMasterState = I2C_IDLE; //e. timer elapsed, go away
igor_v 0:8ad47e2b6f00 36 LPC_I2C0->CONSET = I2CONSET_STO; //e. Set Stop flag
igor_v 0:8ad47e2b6f00 37 LPC_I2C0->CONCLR = I2CONCLR_AAC | I2CONCLR_SIC | I2CONCLR_STAC;
igor_v 0:8ad47e2b6f00 38 return;
igor_v 0:8ad47e2b6f00 39 }
igor_v 0:8ad47e2b6f00 40 else if (!(LPC_I2C0->CONSET & I2CONSET_SI)) //e. state of I2C bus has not been changed
igor_v 0:8ad47e2b6f00 41 return;
igor_v 0:8ad47e2b6f00 42
igor_v 0:8ad47e2b6f00 43 StatValue = LPC_I2C0->STAT;
igor_v 0:8ad47e2b6f00 44
igor_v 0:8ad47e2b6f00 45 switch ( StatValue )
igor_v 0:8ad47e2b6f00 46 {
igor_v 0:8ad47e2b6f00 47 case 0x08: // A Start condition is issued (write data for the first potentiometer)
igor_v 0:8ad47e2b6f00 48 WrIndex = 0;
igor_v 0:8ad47e2b6f00 49 time_out = TIMEOUT; //e. enable countdown
igor_v 0:8ad47e2b6f00 50 LPC_I2C0->DAT = I2CMasterBuffer[WrIndex++]; //e. send address
igor_v 0:8ad47e2b6f00 51 LPC_I2C0->CONCLR = (I2CONCLR_SIC | I2CONCLR_STAC); //e .clear interrupt bit and start bit
igor_v 0:8ad47e2b6f00 52 break;
igor_v 0:8ad47e2b6f00 53
igor_v 0:8ad47e2b6f00 54 case 0x10: // A repeated started is issued (write data for the second potentiometer)
igor_v 0:8ad47e2b6f00 55 LPC_I2C0->DAT = I2CMasterBuffer[WrIndex++]; //e. send address
igor_v 0:8ad47e2b6f00 56 LPC_I2C0->CONCLR = (I2CONCLR_SIC | I2CONCLR_STAC); //e .clear interrupt bit and start bit
igor_v 0:8ad47e2b6f00 57 break;
igor_v 0:8ad47e2b6f00 58
igor_v 0:8ad47e2b6f00 59 case 0x18: //e. Regardless, it's a ACK after slave address reading
igor_v 0:8ad47e2b6f00 60 LPC_I2C0->DAT = I2CMasterBuffer[WrIndex++]; //e. send another byte
igor_v 0:8ad47e2b6f00 61 LPC_I2C0->CONCLR = I2CONCLR_SIC; //e. clear interrupt bit
igor_v 0:8ad47e2b6f00 62 break;
igor_v 0:8ad47e2b6f00 63
igor_v 0:8ad47e2b6f00 64 case 0x28: //e. Regardless it's a ACK after data byte
igor_v 0:8ad47e2b6f00 65 if (WrIndex == I2C_WRITELENGTH) //e. we have transmitted the data for the B potentiometer
igor_v 0:8ad47e2b6f00 66 {
igor_v 0:8ad47e2b6f00 67 I2CMasterState = I2C_IDLE;
igor_v 0:8ad47e2b6f00 68 LPC_I2C0->CONSET = I2CONSET_STO; //e. Set Stop flag
igor_v 0:8ad47e2b6f00 69 Output.Str.Cnt_Dif = 300;
igor_v 0:8ad47e2b6f00 70 }
igor_v 0:8ad47e2b6f00 71 else if (WrIndex == 3)
igor_v 0:8ad47e2b6f00 72 {
igor_v 0:8ad47e2b6f00 73 LPC_I2C0->CONSET = I2CONSET_STA;
igor_v 0:8ad47e2b6f00 74 Output.Str.Cnt_Dif = 200;
igor_v 0:8ad47e2b6f00 75 }
igor_v 0:8ad47e2b6f00 76 else
igor_v 0:8ad47e2b6f00 77 {
igor_v 0:8ad47e2b6f00 78 LPC_I2C0->DAT = I2CMasterBuffer[WrIndex++]; //e. send another byte
igor_v 0:8ad47e2b6f00 79 Output.Str.Cnt_Dif = 100;
igor_v 0:8ad47e2b6f00 80 }
igor_v 0:8ad47e2b6f00 81 LPC_I2C0->CONCLR = I2CONCLR_SIC; //e. clear interrupt bit
igor_v 0:8ad47e2b6f00 82 break;
igor_v 0:8ad47e2b6f00 83
igor_v 0:8ad47e2b6f00 84 case 0x20: //e. no aknowledgement after address transmitting
igor_v 0:8ad47e2b6f00 85 case 0x30: //e. no aknowledgement after data block transmitting
igor_v 0:8ad47e2b6f00 86 LPC_I2C0->CONSET = I2CONSET_STO; //e. Set Stop flag
igor_v 0:8ad47e2b6f00 87 LPC_I2C0->CONCLR = (I2CONCLR_SIC | I2CONCLR_STAC);
igor_v 0:8ad47e2b6f00 88 I2CMasterState = I2C_IDLE; //e. fix new state
igor_v 0:8ad47e2b6f00 89 break;
igor_v 0:8ad47e2b6f00 90 }
igor_v 0:8ad47e2b6f00 91 return;
igor_v 0:8ad47e2b6f00 92 }
igor_v 0:8ad47e2b6f00 93 /******************************************************************************
igor_v 0:8ad47e2b6f00 94 ** Function name: DAC_ADC_Exchange
igor_v 0:8ad47e2b6f00 95 **
igor_v 0:8ad47e2b6f00 96 ** Descriptions: Loading data to DACs and initialization of ADC reading
igor_v 0:8ad47e2b6f00 97 **
igor_v 0:8ad47e2b6f00 98 ** parameters: None
igor_v 0:8ad47e2b6f00 99 ** Returned value: None
igor_v 0:8ad47e2b6f00 100 **
igor_v 0:8ad47e2b6f00 101 ******************************************************************************/
igor_v 0:8ad47e2b6f00 102 void DAC_ADC_Exchange()
igor_v 0:8ad47e2b6f00 103 {
igor_v 0:8ad47e2b6f00 104 //-------------------------loading data from ADC to buffer---------------------------------------
igor_v 0:8ad47e2b6f00 105 //int x;
igor_v 0:8ad47e2b6f00 106 ExchangeErr &= ~ADC_ERR_MSK; //e. �������� ���� ������
igor_v 0:8ad47e2b6f00 107 if (LPC_SSP0->SR & SSP_BUSY) //e. ���� ����� ����������� �� �����
igor_v 0:8ad47e2b6f00 108 {
igor_v 0:8ad47e2b6f00 109 ExchangeErr |= ADC_ERR_MSK; //e. ���������� ���� ������
igor_v 0:8ad47e2b6f00 110 }
igor_v 0:8ad47e2b6f00 111 else
igor_v 0:8ad47e2b6f00 112 {
igor_v 0:8ad47e2b6f00 113 LPC_SSP0->DR = 0x8001; //�������� 0x8001 � ������� ��������.
igor_v 0:8ad47e2b6f00 114 if (Sys_Clock & 1)//���� �������� ���� ��
igor_v 0:8ad47e2b6f00 115 {
igor_v 0:8ad47e2b6f00 116 LPC_SSP0->DR = WRITE_DAC0; //e.������� ��� ���_0 ����������.
igor_v 0:8ad47e2b6f00 117 LPC_SSP0->DR = (-Output.ArrayOut[3]+32767); //e. �������� 12 ���
igor_v 0:8ad47e2b6f00 118 }
igor_v 0:8ad47e2b6f00 119 else //���� ���� ������.
igor_v 0:8ad47e2b6f00 120 {
igor_v 0:8ad47e2b6f00 121 LPC_SSP0->DR = WRITE_DAC1 ; //e.������� ��� ���_1 ����������.
igor_v 0:8ad47e2b6f00 122 LPC_SSP0->DR = (Output.ArrayOut[0]<<1) & 0xFFF0; //e. �������� 12 ���
igor_v 0:8ad47e2b6f00 123 }
igor_v 0:8ad47e2b6f00 124 }
igor_v 0:8ad47e2b6f00 125 }
igor_v 0:8ad47e2b6f00 126 /******************************************************************************
igor_v 0:8ad47e2b6f00 127 ** Function name: ADC_Input
igor_v 0:8ad47e2b6f00 128 **
igor_v 0:8ad47e2b6f00 129 ** Descriptions: Reading data from ADC
igor_v 0:8ad47e2b6f00 130 **
igor_v 0:8ad47e2b6f00 131 ** parameters: None
igor_v 0:8ad47e2b6f00 132 ** Returned value: None
igor_v 0:8ad47e2b6f00 133 **
igor_v 0:8ad47e2b6f00 134 ******************************************************************************/
igor_v 0:8ad47e2b6f00 135 void ADC_Input()
igor_v 0:8ad47e2b6f00 136 {
igor_v 0:8ad47e2b6f00 137 uint32_t Dummy;
igor_v 0:8ad47e2b6f00 138
igor_v 0:8ad47e2b6f00 139 //---------------------read data from ADC buffer---------------------------------------------
igor_v 0:8ad47e2b6f00 140 Dummy = Dummy;
igor_v 0:8ad47e2b6f00 141 ExchangeErr &= ~ADC_ERR_MSK;
igor_v 0:8ad47e2b6f00 142
igor_v 0:8ad47e2b6f00 143 if (LPC_SSP0->SR & SSP_BUSY) //���� ����� ���� �� ������(�������� ������)
igor_v 0:8ad47e2b6f00 144 { ExchangeErr |= ADC_ERR_MSK; //���������� ���� ������
igor_v 0:8ad47e2b6f00 145
igor_v 0:8ad47e2b6f00 146 if (!(LPC_SSP0->SR & TX_SSP_EMPT)) //����� �������� �� ����.
igor_v 0:8ad47e2b6f00 147 ExchangeErr |= ADC_ERR_MSK; //���������� ���� ������
igor_v 0:8ad47e2b6f00 148 }
igor_v 0:8ad47e2b6f00 149 else //����� �������� ��������� �����.
igor_v 0:8ad47e2b6f00 150 {
igor_v 0:8ad47e2b6f00 151 Input.ArrayIn[0] = LPC_SSP0->DR; //������Thermo2
igor_v 0:8ad47e2b6f00 152 Input.ArrayIn[1] = LPC_SSP0->DR; //������ Thermo1
igor_v 0:8ad47e2b6f00 153 Input.ArrayIn[2] = LPC_SSP0->DR; //������ HF_out
igor_v 0:8ad47e2b6f00 154
igor_v 0:8ad47e2b6f00 155 while (LPC_SSP0->SR & RX_SSP_notEMPT) //���� ����� SPI �� ����.
igor_v 0:8ad47e2b6f00 156 Dummy = LPC_SSP0->DR; //�������� �����.
igor_v 0:8ad47e2b6f00 157 }
igor_v 0:8ad47e2b6f00 158
igor_v 0:8ad47e2b6f00 159
igor_v 0:8ad47e2b6f00 160 }
igor_v 0:8ad47e2b6f00 161 /*****************************************************************************
igor_v 0:8ad47e2b6f00 162 ** Function name: DAC_Output
igor_v 0:8ad47e2b6f00 163 **
igor_v 0:8ad47e2b6f00 164 ** Descriptions: Output data to intrnal DAC
igor_v 0:8ad47e2b6f00 165 **
igor_v 0:8ad47e2b6f00 166 ** parameters: output - code for output
igor_v 0:8ad47e2b6f00 167 ** Returned value: None
igor_v 0:8ad47e2b6f00 168 **
igor_v 0:8ad47e2b6f00 169 *****************************************************************************/
igor_v 0:8ad47e2b6f00 170 void DAC_Output(int output)
igor_v 0:8ad47e2b6f00 171 {
igor_v 0:8ad47e2b6f00 172 LPC_DAC->CR = (output<<6);
igor_v 0:8ad47e2b6f00 173 return;
igor_v 0:8ad47e2b6f00 174 }
igor_v 0:8ad47e2b6f00 175 /******************************************************************************
igor_v 0:8ad47e2b6f00 176 ** Function name: G_Photo_Init
igor_v 0:8ad47e2b6f00 177 **
igor_v 0:8ad47e2b6f00 178 ** Descriptions: Initialization of exchange with digital potentiometers
igor_v 0:8ad47e2b6f00 179 **
igor_v 0:8ad47e2b6f00 180 ** parameters: None
igor_v 0:8ad47e2b6f00 181 ** Returned value: None
igor_v 0:8ad47e2b6f00 182 **
igor_v 0:8ad47e2b6f00 183 ******************************************************************************/
igor_v 0:8ad47e2b6f00 184 void G_Photo_Init(void )
igor_v 0:8ad47e2b6f00 185 {
igor_v 0:8ad47e2b6f00 186 LPC_SC->PCONP |= (1 << 19);//��������� ���������� I2C.
igor_v 0:8ad47e2b6f00 187
igor_v 0:8ad47e2b6f00 188 /* set PIO0.27 and PIO0.28 to I2C0 SDA and SCK */
igor_v 0:8ad47e2b6f00 189 /* function to 01 on both SDA and SCK. */
igor_v 0:8ad47e2b6f00 190 LPC_PINCON->PINSEL1 &= ~0x03C00000; //P0.27 - SDA.
igor_v 0:8ad47e2b6f00 191 LPC_PINCON->PINSEL1 |= 0x01400000; //P0.28 - SCK.
igor_v 0:8ad47e2b6f00 192
igor_v 0:8ad47e2b6f00 193 // ������������� ���� ���� ����������
igor_v 0:8ad47e2b6f00 194 /*����� ������ ����� ���������� I2C ������ ���������� I2C */
igor_v 0:8ad47e2b6f00 195 LPC_I2C0->CONCLR = I2CONCLR_AAC | I2CONCLR_SIC | I2CONCLR_STAC | I2CONCLR_I2ENC; // ��������� ���������������� � ����� �������
igor_v 0:8ad47e2b6f00 196
igor_v 0:8ad47e2b6f00 197 /*--- Reset registers ---*/
igor_v 0:8ad47e2b6f00 198 LPC_I2C0->SCLL = I2SCLL_SCLL; // - ������� scl low time period
igor_v 0:8ad47e2b6f00 199 LPC_I2C0->SCLH = I2SCLH_SCLH; // - ������� scl high time period
igor_v 0:8ad47e2b6f00 200
igor_v 0:8ad47e2b6f00 201 I2CMasterBuffer[0] = A_ADDRESS; //���� ������������� ������ �
igor_v 0:8ad47e2b6f00 202 I2CMasterBuffer[1] = WRITE_CMD; //������
igor_v 0:8ad47e2b6f00 203 I2CMasterBuffer[3] = B_ADDRESS; //���� ������������� ������ �
igor_v 0:8ad47e2b6f00 204 I2CMasterBuffer[4] = WRITE_CMD; //������
igor_v 0:8ad47e2b6f00 205
igor_v 0:8ad47e2b6f00 206 LPC_I2C0->CONSET = I2CONSET_I2EN; //��������� ���������� I2C.
igor_v 0:8ad47e2b6f00 207
igor_v 0:8ad47e2b6f00 208 }
igor_v 0:8ad47e2b6f00 209 /******************************************************************************
igor_v 0:8ad47e2b6f00 210 ** Function name: DAC_ADC_Exchange_Init
igor_v 0:8ad47e2b6f00 211 **
igor_v 0:8ad47e2b6f00 212 ** Descriptions: Initialization of data exchange with DACs and ADCs
igor_v 0:8ad47e2b6f00 213 **
igor_v 0:8ad47e2b6f00 214 ** parameters: None
igor_v 0:8ad47e2b6f00 215 ** Returned value: None
igor_v 0:8ad47e2b6f00 216 **
igor_v 0:8ad47e2b6f00 217 ******************************************************************************/
igor_v 0:8ad47e2b6f00 218 void DAC_ADC_Exchange_Init()
igor_v 0:8ad47e2b6f00 219 {
igor_v 0:8ad47e2b6f00 220
igor_v 0:8ad47e2b6f00 221 int Dummy; // ������������� ������� ��� ������� ������ ������.
igor_v 0:8ad47e2b6f00 222 Dummy = Dummy;
igor_v 0:8ad47e2b6f00 223
igor_v 0:8ad47e2b6f00 224 /* Enable AHB clock to the SSP0, SSP1 */
igor_v 0:8ad47e2b6f00 225 LPC_SC->PCONP |= (0x1<<21); // ��������� SSP0.
igor_v 0:8ad47e2b6f00 226 // LPC_SC->PCONP |= (0x1<<10);
igor_v 0:8ad47e2b6f00 227
igor_v 0:8ad47e2b6f00 228 /* ����� ������� ��� ��������� ���������� �� ��������� � ��������� �������� �� 4 */
igor_v 0:8ad47e2b6f00 229 LPC_SC->PCLKSEL1 &= ~(0x3<<10); //00 CLK/4; 1 CLK; 2 CLK/2; 3 CLK/8
igor_v 0:8ad47e2b6f00 230 LPC_SC->PCLKSEL1 |= (0x0<<10); //00 CLK/4; 1 CLK; 2 CLK/2; 3 CLK/8
igor_v 0:8ad47e2b6f00 231 // LPC_SC->PCLKSEL0 &= ~(0x3<<20);
igor_v 0:8ad47e2b6f00 232
igor_v 0:8ad47e2b6f00 233 // P0.15~0.18 as SSP0
igor_v 0:8ad47e2b6f00 234 LPC_PINCON->PINSEL0 &= ~(0x3UL<<30); //��������� � 0.15
igor_v 0:8ad47e2b6f00 235 LPC_PINCON->PINSEL0 |= (0x2UL<<30); //��� (???? SCK 0 ???). ������� ��� �������������� Master - slave
igor_v 0:8ad47e2b6f00 236
igor_v 0:8ad47e2b6f00 237 LPC_PINCON->PINSEL1 &= ~((0x3<<0)|(0x3<<2)|(0x3<<4)); // ����������� � 0.17 � � 0.18
igor_v 0:8ad47e2b6f00 238 LPC_PINCON->PINSEL1 |= ((0x2<<2)|(0x2<<4)); // ��� MISO0 � MOSI0
igor_v 0:8ad47e2b6f00 239
igor_v 0:8ad47e2b6f00 240 LPC_PINCON->PINMODE0 &= ~(0x3UL<<30);// ? ������������ �� � 0.15 ������ On-Chip pull-down resistor enabled
igor_v 0:8ad47e2b6f00 241 LPC_PINCON->PINMODE0 |= (0x3UL<<30);// ? ������������ �� � 0.15 ������ On-Chip pull-down resistor enabled
igor_v 0:8ad47e2b6f00 242
igor_v 0:8ad47e2b6f00 243 LPC_PINCON->PINMODE1 &= ~((0x3<<2)|(0x3<<4));// ? ������������ �� � 0.17 � � 0.18 ������ On-Chip pull-down resistor enabled
igor_v 0:8ad47e2b6f00 244 LPC_PINCON->PINMODE1 |= ((0x3<<2)|(0x3<<4));// ? ������������ �� � 0.17 � � 0.18 ������ On-Chip pull-down resistor enabled
igor_v 0:8ad47e2b6f00 245
igor_v 0:8ad47e2b6f00 246 /* P0.6~0.9 as SSP1 */
igor_v 0:8ad47e2b6f00 247 /* LPC_PINCON->PINSEL0 &= ~((0x3<<12)|(0x3<<14)|(0x3<<16)|(0x3<<18));
igor_v 0:8ad47e2b6f00 248 LPC_PINCON->PINSEL0 |= ((0x2<<12)|(0x2<<14)|(0x2<<16)|(0x2<<18));
igor_v 0:8ad47e2b6f00 249 LPC_PINCON->PINMODE0 &= ~((0x3<<16)|(0x3<<12)|(0x3<<14)|(0x3<<18));
igor_v 0:8ad47e2b6f00 250 LPC_PINCON->PINMODE0 |= ((0x3<<16)|(0x3<<14)|(0x3<<18)); */
igor_v 0:8ad47e2b6f00 251
igor_v 0:8ad47e2b6f00 252 /* Set DSS data to 16-bit, Frame format TI, SCR is 2 */
igor_v 0:8ad47e2b6f00 253 LPC_SSP0->CR0 = ((3<<8)|(0<<7)|(0<<4) |0xF); // (0xF)-������������ DSS(Data sise select) � 16-������ ������, (3<<8 scr - ����� �������),
igor_v 0:8ad47e2b6f00 254 // ������ ������� ����� ������������ ����� �������, ������������ �������� � ������� ���������� ��������� �������
igor_v 0:8ad47e2b6f00 255 // ������ ����� TI.
igor_v 0:8ad47e2b6f00 256 // LPC_SSP1->CR0 = 0x0207;
igor_v 0:8ad47e2b6f00 257
igor_v 0:8ad47e2b6f00 258 /* SSPCPSR clock prescale register, master mode, minimum divisor is 0x02 */
igor_v 0:8ad47e2b6f00 259 LPC_SSP0->CPSR = 0x2; // freq = CLK/(cpsdvr*(scr+1)) = 1.6 MHz
igor_v 0:8ad47e2b6f00 260 // LPC_SSP1->CPSR = 0x2;
igor_v 0:8ad47e2b6f00 261
igor_v 0:8ad47e2b6f00 262 /*SSP enable, master mode */
igor_v 0:8ad47e2b6f00 263 LPC_SSP0->CR1 = SSPCR1_SSE;
igor_v 0:8ad47e2b6f00 264 // LPC_SSP1->CR1 = SSPCR1_SSE;
igor_v 0:8ad47e2b6f00 265
igor_v 0:8ad47e2b6f00 266 while (LPC_SSP0->SR & SSP_BUSY);
igor_v 0:8ad47e2b6f00 267 // while (LPC_SSP1->SR & SSP_BUSY);
igor_v 0:8ad47e2b6f00 268
igor_v 0:8ad47e2b6f00 269 while (LPC_SSP0->SR & RX_SSP_notEMPT) /* clear the RxFIFO */
igor_v 0:8ad47e2b6f00 270 Dummy = LPC_SSP0->DR;
igor_v 0:8ad47e2b6f00 271 //all pins after reset is in GPIO mode, so CS pins needn't to configure
igor_v 0:8ad47e2b6f00 272 LPC_GPIO0->FIODIR |= ADC; // P0.16 defined as CS for ADC
igor_v 0:8ad47e2b6f00 273 LPC_GPIO0->FIOSET |= ADC; // set CS for ADC
igor_v 0:8ad47e2b6f00 274
igor_v 0:8ad47e2b6f00 275 LPC_GPIO0->FIODIR |= DAC; // P defined as CS for DAC
igor_v 0:8ad47e2b6f00 276 LPC_GPIO0->FIOCLR |= DAC; // set CS for DAC
igor_v 0:8ad47e2b6f00 277 /* while (LPC_SSP1->SR & RX_SSP_notEMPT)
igor_v 0:8ad47e2b6f00 278 Dummy = LPC_SSP1->DR;*/ /* clear the RxFIFO */
igor_v 0:8ad47e2b6f00 279 }
igor_v 0:8ad47e2b6f00 280 /*****************************************************************************
igor_v 0:8ad47e2b6f00 281 ** Function name: DACInit
igor_v 0:8ad47e2b6f00 282 **
igor_v 0:8ad47e2b6f00 283 ** Descriptions: initialize DAC channel
igor_v 0:8ad47e2b6f00 284 **
igor_v 0:8ad47e2b6f00 285 ** parameters: None
igor_v 0:8ad47e2b6f00 286 ** Returned value: None
igor_v 0:8ad47e2b6f00 287 **
igor_v 0:8ad47e2b6f00 288 *****************************************************************************/
igor_v 0:8ad47e2b6f00 289 void DACInit( void )
igor_v 0:8ad47e2b6f00 290 {
igor_v 0:8ad47e2b6f00 291 /* setup the related pin to DAC output */
igor_v 0:8ad47e2b6f00 292 LPC_PINCON->PINSEL1 |= 0x00200000; /* ���������� p0.26 ��� ����� ��� */
igor_v 0:8ad47e2b6f00 293 // LPC_GPIO0->FIODIR |= (1<<26);
igor_v 0:8ad47e2b6f00 294 LPC_DAC->CNTVAL = 0; // ������� ���������
igor_v 0:8ad47e2b6f00 295 LPC_DAC->CTRL = 0; // ��� ���
igor_v 0:8ad47e2b6f00 296 return;
igor_v 0:8ad47e2b6f00 297 }
igor_v 0:8ad47e2b6f00 298 /******************************************************************************
igor_v 0:8ad47e2b6f00 299 ** Function name: Out_G_photo
igor_v 0:8ad47e2b6f00 300 **
igor_v 0:8ad47e2b6f00 301 ** Descriptions: Start of potentiometer data writing process
igor_v 0:8ad47e2b6f00 302 **
igor_v 0:8ad47e2b6f00 303 ** parameters: pointer to gain factors
igor_v 0:8ad47e2b6f00 304 ** Returned value: None
igor_v 0:8ad47e2b6f00 305 **
igor_v 0:8ad47e2b6f00 306 ******************************************************************************/
igor_v 0:8ad47e2b6f00 307 void Out_G_photo(uint32_t Ph_A, uint32_t Ph_B)
igor_v 0:8ad47e2b6f00 308 {
igor_v 0:8ad47e2b6f00 309 I2CMasterBuffer[2] = Ph_A;// ������ � ����� I2C ������� ������ � � ������ ���� �������.(��������)
igor_v 0:8ad47e2b6f00 310 I2CMasterBuffer[5] = Ph_B;// ������ � ����� I2C ������� ������ � � ������ ���� �������.(��������)
igor_v 0:8ad47e2b6f00 311
igor_v 0:8ad47e2b6f00 312 LPC_I2C0->CONSET = I2CONSET_STA; // ���������� ����� ����.
igor_v 0:8ad47e2b6f00 313 I2CMasterState = I2C_BUSY; // ���������� ���� ������� ����.
igor_v 0:8ad47e2b6f00 314 }
igor_v 0:8ad47e2b6f00 315