test

Dependencies:   ad5422_arduino mbed LT1446 ADS1248-1 LM35-1 Flash FT813 PGA280_ADS1259

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(&LT1446_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(&LT1446_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(&LT1446_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;