int main() { /* Place your initialization/startup code here (e.g. MyInst_Start()) */ ADC_DelSig_Start(); AMux_Start(); UART_Start(); CyGlobalIntEnable; /* Uncomment this line to enable global interrupts. */ // LCD_Char_Start(); //status = LCD_SegStat_Start(); CyDelay(10000u); //10 second delay to allow for sensors to "warm up" //uint8 buffer[50]; //uint8 buffer2[50]; uint8 value[128]; for(;;) { /* Place your application code here. */ Radiation rad; rad = take_radiation_reading(); Vaisala vais; vais = take_Temp_RH_reading(); //LCD_Char_ClearDisplay(); //LCD_Char_Position(0u, 0u); //sprintf(buffer,"%d %d %d %d", (int)fake.SW_In, (int)fake.SW_Out, (int)fake.LW_In, (int)fake.LW_Out); //LCD_Char_PrintString(buffer); //LCD_Char_Position(1u, 0u); //sprintf(buffer2,"%d %d",(int)fake2.Temp, (int)fake2.RH); //LCD_Char_PrintString(buffer2); sprintf(value,"%d,%d,%d,%d,%d,%d,%d\r\n",(int)rad.SW_In, (int)rad.SW_Out, (int)rad.LW_In, (int)rad.LW_Out,(int)((rad.temp-273.15)*100), (int)(vais.Temp*100), (int)(vais.RH*100)); UART_PutString(value); uint8 x = 0; } }
/******************************************************************************* * Function Name: main ******************************************************************************** * * Summary: * Main function performs following functions: * 1: Enables global interrupts * 2: Start all components on the schematic * 3: Calls a function to configure DMA * Parameters: * None. * * Return: * None. * *******************************************************************************/ int main() { /* Start all components used on schematic */ ADC_DelSig_IRQ_Start(); //isr_StartEx(filterVDAC); ADC_DelSig_Start(); ADC_DelSig_StartConvert(); VDAC8_Start(); //Opamp_Start(); Filter_Start(); /* User-implemented function to set-up DMA */ DMA_Config(); /* Enable Global Interrupts */ CYGlobalIntEnable; for(;;) { } } /* End of main */
Radiation take_radiation_reading(){ int32 output; uint8 i; Radiation reading; Thermo RTD; AMux_Select(4); ADC_DelSig_SelectConfiguration(ADC_DelSig_CFG2,1); ADC_DelSig_StartConvert(); //ADC_DelSig_SelectConfiguration(ADC_DelSig_CFG2,1); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_mVolts(ADC_DelSig_GetResult32()); RTD.sensor = (float)output; RTD.sensor_valid = 1; break; } CyDelay(5u); } ADC_DelSig_StopConvert(); AMux_Select(5); ADC_DelSig_SelectConfiguration(ADC_DelSig_CFG2,1); ADC_DelSig_StartConvert(); //ADC_DelSig_SelectConfiguration(ADC_DelSig_CFG2,1); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_mVolts(ADC_DelSig_GetResult32()); RTD.ref = (float)output; RTD.ref_valid = 1; break; } CyDelay(5u); } r = 98*RTD.sensor/RTD.ref; reading.temp = GetPt100Temperature(r) + 273.15;//2.5584*r - 255.7 + 273.15; //linear equation from wikipedia table plus 273 to convert to kelvin ADC_DelSig_Stop(); AMux_Select(0); ADC_DelSig_Start(); ADC_DelSig_SelectConfiguration(ADC_DelSig_CFG1,1); ADC_DelSig_StartConvert(); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_uVolts(ADC_DelSig_GetResult32()); reading.SW_In = (float)output/17.53; reading.SW_In_valid = 1; break; } CyDelay(5u); } ADC_DelSig_StopConvert(); AMux_Select(1); ADC_DelSig_StartConvert(); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_uVolts(ADC_DelSig_GetResult32()); reading.SW_Out = (float)output/20.69; reading.SW_Out_valid = 1; break; } CyDelay(5u); } ADC_DelSig_StopConvert(); AMux_Select(2); ADC_DelSig_StartConvert(); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_uVolts(ADC_DelSig_GetResult32()); reading.LW_In = (float)output/12.95 + .0000000567*reading.temp*reading.temp*reading.temp*reading.temp; reading.LW_In_valid = 1; break; } CyDelay(5u); } ADC_DelSig_StopConvert(); AMux_Select(3); ADC_DelSig_StartConvert(); CyDelay(100u); for(i = 0; i < 100; i++) { if(ADC_DelSig_IsEndConversion(ADC_DelSig_WAIT_FOR_RESULT)) { output = ADC_DelSig_CountsTo_uVolts(ADC_DelSig_GetResult32()); reading.LW_Out = (float)output/11.21 + .0000000567*reading.temp*reading.temp*reading.temp*reading.temp; reading.LW_Out_valid = 1; break; } CyDelay(5u); } ADC_DelSig_StopConvert(); return reading; }