test
Dependencies: ad5422_arduino mbed LT1446 ADS1248-1 LM35-1 Flash FT813 PGA280_ADS1259
Diff: main.cpp
- Revision:
- 6:cfe7cb0bdb1a
- Parent:
- 5:21240fa1ee4c
- Child:
- 7:c364201bc3ed
--- a/main.cpp Thu Aug 13 14:37:39 2020 +0000 +++ b/main.cpp Fri Aug 14 14:16:03 2020 +0000 @@ -74,17 +74,7 @@ { float t; /*Обработка ошибки*/ - //LM35_start(0.25); - if(ads1.MUX0.MUX_SP!=0) - { - DS1248_START=1; - ADS1248WakeupCommand(); - ads1.MUX0.MUX_SN=1; //AIN1 - ads1.MUX0.MUX_SP=0; //AIN0 - ads1.VBIAS.all=0; - ADS1248SettingReg(&ads1); - } - + //LM35_start(0.25); if (LM35_0.ready) //если данные готовы то считать и сбросить флаг (способ многозадачности) { LM35_0.ready=0; @@ -104,15 +94,7 @@ { float r; //Если не настроен, то настраиваем нужный канал чтения - if(ads1.MUX0.MUX_SP!=2) - { - DS1248_START=1; - ADS1248WakeupCommand(); - ads1.MUX0.MUX_SN=3; //AIN3 - ads1.MUX0.MUX_SP=2; //AIN2 - ads1.VBIAS.VBIAS3=1; - ADS1248SettingReg(&ads1); - } + //используем тот же тип из-за схожести if(RAS.ready)//Если данные готовы для считывания.. {RAS.ready=0; @@ -208,21 +190,33 @@ -только второй канал -оба канала или как вариант: позиция бита означает какие каналы считываются если их больше чем 2*/ -{ - double v=0; +{ + double v=0; + //температура + + if(ads1.MUX0.MUX_SP!=0){ + /*Если не настроено чтение температуры то считать + текущие показания для предыдущих настроек и записать необходимые*/ + v=2.048*ADS1248ReadData(&ads1)/0x800000; + RAS.volts=v; + RAS.temp=v*26.316-0.263;// мл/мин (сделать уставку) + RAS.ready=1; + ads1.MUX0.MUX_SN=1; //AIN1 + ads1.MUX0.MUX_SP=0; //AIN0 + ads1.VBIAS.all=0; + ADS1248SettingReg(&ads1); + goto end;} + + if(ads1.MUX0.MUX_SP!=2){ + /*То же самое для расхода*/ v=2.048*ADS1248ReadData(&ads1)/0x800000; - if(ads1.MUX0.MUX_SP==0) - { LM35_0.temp=v*100; LM35_0.ready=1; - } - if (ads1.MUX0.MUX_SP==2) - { - RAS.volts=v; - RAS.temp=v*26.316-0.263;// мл/мин (сделать уставку) - RAS.ready=1; - } - + ads1.MUX0.MUX_SN=3; //AIN3 + ads1.MUX0.MUX_SP=2; //AIN2 + ads1.VBIAS.VBIAS3=1; + ADS1248SettingReg(&ads1);} + end: } void Mem_write() @@ -339,7 +333,8 @@ UART.printf("PID:\r\nKp=%0.3f\r\nkI=%0.3f\r\nkD=%0.3f\r\n",Mem.PID.kP,Mem.PID.kI,Mem.PID.kD); UART.printf("PID_R:\r\nKp=%0.3f\r\nkI=%0.3f\r\nkD=%0.3f\r\n",Mem.PID_R.kP,Mem.PID_R.kI,Mem.PID_R.kD); UART.printf("%08X\r\n",Mem.PID.chkd); - + temp=Mem.temp_u; + rashod_u=Mem.rashod_u; //Инициализация периферийных устройств SPI1_MasterInitMode(1);//работают режимы 1 и 2 для платы ТЭД2 //SPI3_MasterInitMode(1); @@ -379,7 +374,7 @@ ads1.VBIAS.all=0; ads1.VBIAS.VBIAS0=0; - ads1.SYS0.DR=DR20; + ads1.SYS0.DR=DR10; ads1.SYS0.PGA=PGA_1; //=log2(PGA) пример: PGA=16 значит значение будет log2(16)=4; ads1.MUX1.MUXCAL=0; @@ -451,6 +446,54 @@ // else disp.selectedEditor=(selectedEditor_t)NONE_PRESS; disp.PidScreen(&BufToFloat,LM35_0.temp,RAS.temp,LT1446_0.dacB.Code,LT1446_0.dacA.Code,&Mem.PID,&Mem.PID_R);} wait_ms(100); + if(disp.pressedButton==SAVE_PRESS) + { + Mem_write();//сохраняем настройки + } + if(disp.pressedButton==PID1SW_PRESS&&Mem.PID.enabled) + { + lm_temp.detach(); + pressed(); + printer_p=&printPID; + lm_temp.attach(printer_p,0.25); + } + if(disp.pressedButton==PID1SW_PRESS&&Mem.PID.enabled==0) + { + lm_temp.detach(); + PID1.detach(); + //PID2.detach(); + Mem.PID.enabled=0; + //Mem.PID_R.enabled=0; + LT1446_0.dacB.Code=0; + //LT1446_0.dacA.Code=0; + LTCwrite(<1446_0); + UART.printf("PID1 is stopped\r\n"); + } + if(disp.pressedButton==PID2SW_PRESS&&Mem.PID_R.enabled) + { + lm_temp.detach(); + pid2_start(); + printer_p=&printPID; + lm_temp.attach(printer_p,0.25); + } + if(disp.pressedButton==PID2SW_PRESS&&Mem.PID_R.enabled==0) + { + lm_temp.detach(); + //PID1.detach(); + PID2.detach(); + //Mem.PID.enabled=0; + Mem.PID_R.enabled=0; + //LT1446_0.dacB.Code=0; + LT1446_0.dacA.Code=0; + LTCwrite(<1446_0); + UART.printf("PID2 is stopped\r\n"); + } + if(disp.pressedButton==BACK_PRESS) + { + disp.activeScreen = TEST_CHROM_SCREEN; + } + disp.pressedButton = NONE_PRESS; + //=--------------------------------------------------------------------- @@ -566,7 +609,7 @@ } //задание уставки температуры if ((str[2]>='0')&&(str[2]<='9')){ - temp=(str[2]-'0')*10+(str[3]-'0'); + Mem.temp_u=temp=(str[2]-'0')*10+(str[3]-'0'); UART.printf("temp= %d\r\n",temp); } break;} @@ -649,12 +692,12 @@ if (str[2]=='a')//команда = "da=xxxx" где хххх - код ЦАП { LT1446_0.dacA.Code=(str[3]-0x30)*1000+(str[4]-0x30)*100+(str[5]-0x30)*10+(str[6]-0x30); - UART.printf("%d\r\n",LT1446_0.dacA.Code); + UART.printf("da=%04d\r\n",LT1446_0.dacA.Code); } - if (str[1]=='b') + if (str[2]=='b') { LT1446_0.dacB.Code=(str[3]-0x30)*1000+(str[4]-0x30)*100+(str[5]-0x30)*10+(str[6]-0x30); - UART.printf("%d\r\n",LT1446_0.dacB.Code); + UART.printf("db=%04d\r\n",LT1446_0.dacB.Code); } LTCwrite(<1446_0); break;} @@ -708,7 +751,7 @@ case 'u':{ // ru=xx.xx; точка обязательна //задание уставки расхода - rashod_u=BufToFloat(str); + Mem.rashod_u=rashod_u=BufToFloat(str); UART.printf("Rashod = %0.3f\r\n",rashod_u); break;} default:break;