Пример #1
0
void baro_init( void ) {

  adc_buf_channel(ADC_CHANNEL_BARO, &baro_board.buf, DEFAULT_AV_NB_SAMPLE);

  baro_board.status = BB_UNINITIALIZED;
  baro_board.absolute = 0;
  baro_board.offset = 1023;
  DACSet(baro_board.offset);
  baro_board.value_filtered = 0;
#ifdef BARO_LED
  LED_OFF(BARO_LED);
#endif
}
Пример #2
0
void main(void)
{
    
    //char chRxByte;
    //int tDuty; /* storage value of Duty Cycle */
    int16_t vPeak;

    /* Configure the oscillator for the device */
    ConfigureOscillator();

    //OSCCON =  0b11110000; // 32MHz Internal Osc, SCS bits 00 for 4xPL
    /* Initialize I/O and Peripherals for application */
    InitApp();
    //vPWM = EEPROMRead(0);
    //vPWM = EEPROM_READ(0);
    vPWM = eeprom_read(0);
    DACSet(100);
    //RB1 = 1;

    //TRISA5=1;

    /* Scanning */
    //ScanFrq();

    while(1)
    {
        /* TODO <INSERT USER APPLICATION CODE HERE> */
        if (flgTicTac == true)
        {
            flgTicTac = false;

            //if(cntCur==cntPerd)
            //{
            //    //RC2 = !RC2; // TURN ON LED TO CHECK IF THE INTERRUPT WAS SERVED
            //    cntCur = 0;
            //}

            RC2 = !RC2; // TURN ON LED TO CHECK IF THE INTERRUPT WAS SERVED
            cntCur++;
            
            vADCAN0 = ReadADC(AN1);

            //vADCAN0=vADCAN0;
            
            vADCANFlt = vADCANOld+(vADCAN0-vADCANOld)/20;

            /* Blinking */
            //Blinking(vADCANFlt);

            if ((vADCANFlt==vADCANOld)&&(vADCAN0!=vADCANOld))
            {
                if ((vADCAN0>vADCANOld))
                {
                    vADCANFlt++;
                }
                else
                {
                    vADCANFlt--;
                }
            }

            if ((RA7==1)&&(RA7Old==0)) //button Press is 1, not press is 0
            {
                //PWMSetPeriod (8000-((uint32_t)7360*vADCANFlt)/4096);
                //PWMSetDutyCycle (4000-((uint32_t)7360*vADCANFlt)/8192);
                //PSMC1INT = 0x00;
                ////PWMSetPeriod (20);
                ////PWMSetDutyCycle (10);
                //(void)EEPROMWrite(vPWM,0);
                eeprom_write(0,vPWM);
            }
            else
            {
                 PSMC1INT = 0x10;
            }

            vADCANOld = vADCANFlt;
            vPWM = vADCANFlt;

            /* send ADC data to UART */
            cntUARTSend++;
            if ((cntUARTSend==50)) //1s will send data to UART
            {
               
               
               sprintf(chBufADC,"ADC:%d\r\n",vADCANFlt);
               UARTSend(chBufADC,0);
               cntUARTSend = 0;
            }
            else if ((cntUARTSend)%2==1)
            {
                /* ADC with interrupt at AN9*/
                //(void)ReadADCINT();
            }
            else
            {
                ;
            }

             /* Check Array of ADC values */
             //vPeak = ChkPeakVal();

             //if (vPeak > 0) /* ZERO is not updated */
             //{
             //    vPeakVld = vPeak;
             //}
             RA7Old = RA7;


        }


        //     if (RA5 ==1)

        
        //    PWMSetPeriod (25600-((uint32_t)24960*vADCANFlt)/4096);
        //   PWMSetDutyCycle (12800-((uint32_t)24960*vADCANFlt)/8192);

        

        //if (flgPSMC==true)
        //{
        //    PWMSetPeriod (0);
        //    PWMSetDutyCycle (0);
        //}
        //else
        //{
        //    PWMSetPeriod (25600-((uint32_t)24960*vADCANFlt)/4096);
        //    PWMSetDutyCycle (12800-((uint32_t)24960*vADCANFlt)/8192);
        //}

   
        
    
    }//while
}