Esempio n. 1
0
void Analog_scan(void)
{
	StartADC();
	adc[0] += (REG_AD_CH0_BUF - adc[0] + 4) / 8;
	adc[1] += (REG_AD_CH1_BUF - adc[1] + 4) / 8;
	adc[2] += (REG_AD_CH2_BUF - adc[2] + 4) / 8;
	StopADC();
}
Esempio n. 2
0
void Analog_initialise(void)
{
	static bool initialised = false;
	if (!initialised) {
		initialised = true;
		StartADC();
		adc[0] = REG_AD_CH0_BUF;
		adc[1] = REG_AD_CH1_BUF;
		adc[2] = REG_AD_CH2_BUF;
		StopADC();
	}
	int i;
	for (i = 0; i < 12; ++i) {
		Analog_scan();
	}
}
char output_logic(void) {
    char error = 0;
    switch (present_state) {
        case STATE_Idle:
            PORTC = 0b00000111; // Reset all Flip-Flops at PORTB

            if (postscalerflag30s == 1) {
                postscalerflag30s =0;
                Trigger = 1;
            }
            break;

        case STATE_Setup_Pot:
            T3CON = 0;
            ADON = 0;
            CloseI2C();
            
            InitializeTimer3(); //interrupt every second
            InitADC();
            
            postscaler = 0;
            postscalerflag = 0;
            
            SendStringUSART("Analog Mode Acquiring");
            
            PORTC = 0b00000101; // Reset all Flip-Flops at PORTB
            SelectChannelADC(0);//select AN0
            
            
            break;
        case STATE_Pot:
            
            if (postscalerflag == 1) {
                
                Value_AN0=0;
                Value_AN0 = GetSampleADC();
                
                sprintf(CharTX, "DATA ANALOG :Humedad TIERRA = %d",Value_AN0);
                
                SendStringUSART(CharTX);
                postscalerflag = 0;
                Trigger =1;
                
            }


            break;
        case STATE_Stop_Pot:
            break;
  
        case STATE_Setup_TEMP: 
            SendStringUSART("I2C Mode Acquiring");
            PORTC = 0b00000100; // Reset all Flip-Flops at PORTB
            
            SelectChannelADC(1);//select AN1
            break;

        case STATE_TEMP:
            if (postscalerflag == 1) {
                Value_AN1=0;
                
                
                Value_AN1 = GetSampleADC();
                ////Value_temp = (float) ((((Value_AN1 / 1023.0) * Vdd - Vo)) / sensibilidad); /// Sensor Placa XLP           
                Value_temp = (float)(log(10000.0 * ((1024.0 / Value_AN1 - 1))));
                Value_temp = (float)(1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Value_temp * Value_temp )) * Value_temp ));
                Value_temp = (float)(Value_temp - 273.15);            // Convert Kelvin to Celcius
                //Temp = (Temp * 9.0)/ 5.0 + 32.0; // Convert Celcius to Fahrenheit
  
                if(Value_pot < 50){
                    PORTBbits.RB5 =1;
                }
                else{
                    PORTBbits.RB5 =0;
                }

                sprintf(CharTX, "DATA ANALOG :Temperature = %.1f C", Value_temp);
   
                SendStringUSART(CharTX);

                postscalerflag = 0;

                Trigger = 1;
            }
            break;

        case STATE_Stop_TEMP:         
            break;
        case STATE_Setup_ONEWIRE:
            PORTC = 0b00000111; // Reset all Flip-Flops at PORTB
            TRISBbits.TRISB4 = 0;
            PORTBbits.RB4 = 1;
            TMR2IE = 1;       // Enable Timer2 interrupt
            T2CON = 0;        // Prescaler 1:1, and Timer2 is off initially  
            TMR2IF = 0;       // Clear TMR INT Flag bit
            TMR2 = 0;
            T2CONbits.T2CKPS = 0b01;
            break;

        case STATE_ONEWIRE:

            GetDataSensorDHT22();

            if (CheckSum == ((RH_Byte1 + RH_Byte2 + T_Byte1 + T_Byte2) & 0xFF)) {
                if (sign) {
                    sprintf(CharTX, "DATA DHT22 :Temperature = -%.1f C", Value_tempdht22);

                    SendStringUSART(CharTX);
                } else {
                    sprintf(CharTX, "DATA DHT22 :Temperature = %.1f C", Value_tempdht22);
                    SendStringUSART(CharTX);
                }

                sprintf(CharTX, "DATA DHT22 :Humidity = %.1f %%", Value_rhdht22);
                SendStringUSART(CharTX);

            } else {
                SendStringUSART("Checksum Error!   Trying Again ... ");
            }
            Trigger = 1;

            break;

        case STATE_Stop_ONEWIRE:
            break;
            

        case STATE_Setup_I2C:           
            Open_I2C1();
            break;
            
        case STATE_I2C:
            
           if (postscalerflag == 1) {
               // I2C_dev = WriteDEVICE_I2C(AddressByteMCP, 0x07);
               // I2C_manu = WriteMANU_I2C(AddressByteMCP, 0x06);
                
                I2C_TemFormula = ReadByte_I2C(AddressByteMCP, 0x05); //temperature


                sprintf(CharTX2, "DATA I2C :Temperature = %.1f C", I2C_TemFormula);

                SendStringUSART(CharTX2);
                
                postscalerflag = 0;
                Trigger = 1;
            }
            
            break;

        case STATE_Stop_I2C:
                      
            SendStringUSART("LDR mode ON");
            
            break;


        case STATE_Setup_LDR:
            //InitializeTimer3(); //interrupt every second
            SelectChannelADC(9);//select AN9
 
            break;

        case STATE_LDR:

           if (postscalerflag == 1) {
                Value_AN9 = 0;
                
                Value_AN9 = GetSampleADC();
                
                sprintf(CharTX, "DATA LDR :Valor Analog = %d",Value_AN9);
                
                SendStringUSART(CharTX);
                
                postscalerflag = 0;
                Trigger = 1;
            }
            
            break;

        case STATE_Stop_LDR:

            SendStringUSART("Sleep 8s");
            
            CloseI2C();
            T2CON = 0;
            StopADC();
            SendStringUSART("Idle mode ON");
            
            break;    
  
        default:
            error = 1;
    }

    return (error);
}
Esempio n. 4
0
/*********************************************************************
*
*       MainTask
*
**********************************************************************
*/
void MainTask(void) 
{ 
    GUI_Init();
    WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */
	WM_EnableMemdev(WM_HBKWIN);
	WM_SetCallback(WM_HBKWIN, &_cbBkWin);


	GUI_SetBkColor(GUI_BLUE);
	GUI_SetFont(&GUI_Font16B_1);
	GUI_Clear();


    ahButton[0] = BUTTON_Create(318-52,152,75-21, 20, GUI_ID_ADC,  BUTTON_CF_SHOW );
	BUTTON_SetTextColor(ahButton[0],BUTTON_CI_UNPRESSED,GUI_GREEN);
    BUTTON_SetFont(ahButton[0],&GUI_Font16B_1);
	BUTTON_SetText(ahButton[0],"Inc");
		
	ahButton[1] = BUTTON_Create(318-52,174,75-21, 20,  GUI_ID_DAC,  BUTTON_CF_SHOW );
	BUTTON_SetTextColor(ahButton[1],BUTTON_CI_UNPRESSED,GUI_GREEN);
    BUTTON_SetFont(ahButton[1],&GUI_Font16B_1);
	BUTTON_SetText(ahButton[1],"Dec");

	ahButton[2] = BUTTON_Create(318-52,196,75-21, 20,  GUI_ID_FFT,  BUTTON_CF_SHOW );
	BUTTON_SetTextColor(ahButton[2],BUTTON_CI_UNPRESSED,GUI_GREEN);
    BUTTON_SetFont(ahButton[2],&GUI_Font16B_1);
	BUTTON_SetText(ahButton[2],"Switch");

	ahButton[3] = BUTTON_Create(318-52,218,75-21, 20,  GUI_ID_Spectrum, BUTTON_CF_SHOW );
	BUTTON_SetTextColor(ahButton[3],BUTTON_CI_UNPRESSED,GUI_GREEN);
    BUTTON_SetFont(ahButton[3],&GUI_Font16B_1);
	BUTTON_SetText(ahButton[3],"Spectr");

	
	ahProgbar[0]=PROGBAR_Create(318-52,2,75-21,20,WM_CF_SHOW);
    PROGBAR_SetBarColor(ahProgbar[0],0,GUI_MAGENTA);
    PROGBAR_SetBarColor(ahProgbar[0],1,GUI_RED);
    PROGBAR_SetFont(ahProgbar[0],&GUI_Font16B_1);
	PROGBAR_SetMinMax(ahProgbar[0],0,100);
	WIDGET_SetEffect(ahProgbar[0], &WIDGET_Effect_3D);

	ahScrollbar[0]=SCROLLBAR_Create(0,11,12,217,0,GUI_ID_OSCLevel,WM_CF_SHOW,SCROLLBAR_CF_VERTICAL);
    SCROLLBAR_SetNumItems(ahScrollbar[0],200);
	SCROLLBAR_SetValue(ahScrollbar[0],100);
	
	DispButton();
	DispChInfo();
	ConfigRefresh=0;
	fRefresh =1;
	while(1)
	{ 
	   if(ConfigRefresh == 0) 
	   { 
		  if (fRefresh)
		  {
			  fRefresh = 0;
			  if(g_DSO.HoldEn == 1)
			{		 
			   DispChInfo();	
			}	 
			  
		  }
		  if (g_DSO.HoldEn == 0)
		  {
		    StopADC();	  			 /* 暂停采样 */			 
	 		DispFrame();
			DispChInfo();
			DispCh1Wave();
			FFT_Convert();
		    StartADC();	  			 /* 开始采样 */
		  }
		  PROGBAR_SetValue(ahProgbar[0],OSCPUUsage);
	   }
		GUI_Delay(50); 			 
	}
}