NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3194 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 3 از 3

موضوع: استفاده از چند کانال adc در lpc1768

  1. #1
    کاربر فعال soodi آواتار ها
    تاریخ عضویت
    Jun 2010
    نام
    مسعود محمدی
    نوشته ها
    264
    تشکر
    111
    تشکر شده 296 بار در 138 پست

    پیش فرض استفاده از چند کانال adc در lpc1768

    سلام

    من این هدر رو برای خواندن 4 کانال ADC نوشتم
    برای استفاده دوستان گزاشتم

    کد:
      
    /*********************************************************************************************************/
    #include "lpc17xx.h"                              /* LPC17xx definitions    */
    #include "adc.h"
    
    /*----------------------------------------------------------------------------
      initialize ADC Pins
     *----------------------------------------------------------------------------*/
    void ADC_Init (void) {
    
      LPC_PINCON->PINSEL1 = 0x00154000;
        
      LPC_SC->PCONP|=(1<<12);               /* Enable power to ADC block */
        
        LPC_ADC->ADCR |= 0x200000;
    }
    
    /*----------------------------------------------------------------------------
      get converted ADC0 value
     *----------------------------------------------------------------------------*/
    uint32_t ADC_GetCnv0 (void) {
      uint32_t adGdr;
        LPC_ADC->ADCR = 0x200F01; /* enable ADC */  /* ADC clock is 25MHz/5 */ /* select AD0.0 To 4 pin */
    
      do {
        adGdr = LPC_ADC->ADDR0; // Read A/D Data Register
     }while ((LPC_ADC->ADGDR & 0x80000000)==0); // Wait for end of A/D Conversion
     return (adGdr >> 4) & ADC_VALUE_MAX; // bit 4:15 is 12 bit AD value
    }
    /*----------------------------------------------------------------------------
      get converted ADC1 value
     *----------------------------------------------------------------------------*/
    uint32_t ADC_GetCnv1 (void) {
      uint32_t adGdr;
        LPC_ADC->ADCR = 0x200F02; /* enable ADC */  /* ADC clock is 25MHz/5 */ /* select AD0.0 To 4 pin */
    
      do {
        adGdr = LPC_ADC->ADDR1; // Read A/D Data Register
     }while ((LPC_ADC->ADGDR & 0x80000000)==0); // Wait for end of A/D Conversion
     return (adGdr >> 4) & ADC_VALUE_MAX; // bit 4:15 is 12 bit AD value
    }
    /*----------------------------------------------------------------------------
      get converted ADC2 value
     *----------------------------------------------------------------------------*/
    uint32_t ADC_GetCnv2 (void) {
      uint32_t adGdr;
        LPC_ADC->ADCR = 0x200F04; /* enable ADC */  /* ADC clock is 25MHz/5 */ /* select AD0.0 To 4 pin */
    
      do {
        adGdr = LPC_ADC->ADDR2; // Read A/D Data Register
     }while ((LPC_ADC->ADGDR & 0x80000000)==0); // Wait for end of A/D Conversion
     return (adGdr >> 4) & ADC_VALUE_MAX; // bit 4:15 is 12 bit AD value
    }
    /*----------------------------------------------------------------------------
      get converted ADC3 value
     *----------------------------------------------------------------------------*/
    uint32_t ADC_GetCnv3 (void) {
      uint32_t adGdr;
        LPC_ADC->ADCR = 0x200F08; /* enable ADC */  /* ADC clock is 25MHz/5 */ /* select AD0.0 To 4 pin */
    
      do {
        adGdr = LPC_ADC->ADDR3; // Read A/D Data Register
     }while ((LPC_ADC->ADGDR & 0x80000000)==0); // Wait for end of A/D Conversion
     return (adGdr >> 4) & ADC_VALUE_MAX; // bit 4:15 is 12 bit AD value
    }
    
    /*------------------------------------------------------------------------------
      read a converted value from the Analog/Digital0 converter
     *------------------------------------------------------------------------------*/
    uint16_t ADC_Get0 (void) {
      uint16_t val;
    /*----------------------------------------------------------------------------
      start ADC Conversion
     *----------------------------------------------------------------------------*/
      LPC_ADC->ADCR &= ~(7<<24);                     /* stop conversion */
      LPC_ADC->ADCR |=  (1<<24);                     /* start conversion */
        
      val = ADC_GetCnv0();                             /* use upper 8 bits of 12 bit AD conversion */
        
    /*----------------------------------------------------------------------------
      stop ADC Conversion
     *----------------------------------------------------------------------------*/    
      LPC_ADC->ADCR &= ~(7<<24);                     /* stop conversion */
        
      return (val);
    }
    
    /*------------------------------------------------------------------------------
      read a converted value from the Analog/Digital1 converter
     *------------------------------------------------------------------------------*/
    uint16_t ADC_Get1 (void) {
      uint16_t val;
    /*----------------------------------------------------------------------------
      start ADC Conversion
     *----------------------------------------------------------------------------*/
      LPC_ADC->ADCR &= ~(7<<24);                     /* stop conversion */
      LPC_ADC->ADCR |=  (1<<24);                     /* start conversion */
        
      val = ADC_GetCnv1();                             /* use upper 8 bits of 12 bit AD conversion */
        
    /*----------------------------------------------------------------------------
      stop ADC Conversion
     *----------------------------------------------------------------------------*/    
      LPC_ADC->ADCR &= ~(7<<24);                     /* stop conversion */
        
      return (val);
    }
    
    /*------------------------------------------------------------------------------
      read a converted value from the Analog/Digital2 converter
     *------------------------------------------------------------------------------*/
    uint16_t ADC_Get2 (void) {
      uint16_t val;
    /*----------------------------------------------------------------------------
      start ADC Conversion
     *----------------------------------------------------------------------------*/
      LPC_ADC->ADCR &= ~(7<<24);                     /* stop conversion */
      LPC_ADC->ADCR |=  (1<<24);                     /* start conversion */
        
      val = ADC_GetCnv2();                             /* use upper 8 bits of 12 bit AD conversion */
        
    /*----------------------------------------------------------------------------
      stop ADC Conversion
     *----------------------------------------------------------------------------*/    
     LPC_ADC->ADCR &= ~(7<<24);                     /* stop conversion */
        
      return (val);
    }
    
    /*------------------------------------------------------------------------------
      read a converted value from the Analog/Digital3 converter
     *------------------------------------------------------------------------------*/
    uint16_t ADC_Get3 (void) {
      uint16_t val;
    /*----------------------------------------------------------------------------
      start ADC Conversion
     *----------------------------------------------------------------------------*/
      LPC_ADC->ADCR &= ~(7<<24);                     /* stop conversion */
      LPC_ADC->ADCR |=  (1<<24);                     /* start conversion */
        
      val = ADC_GetCnv3();                             /* use upper 8 bits of 12 bit AD conversion */
        
    /*----------------------------------------------------------------------------
      stop ADC Conversion
     *----------------------------------------------------------------------------*/    
      LPC_ADC->ADCR &= ~(7<<24);                     /* stop conversion */
        
      return (val);
    }
    /*********************************************************************************
    **                            End Of File
    *********************************************************************************/

    ویرایش توسط soodi : 29-10-2013 در ساعت 17:22

  2. کاربران : 7 تشکر کرده اند از شما soodi برای ارسال این پست سودمند:


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #2
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    سلام
    با فعال کردن بیت burst می توان همزمان از چند کانال نمونه برداری انجام داد بدین صورت که تا تبدیل انجام شد و روی رجیستر کانال مربوطه قرار گرفت و بعد خوانده شد بلافاصله نمونه بعدی تبدیل و قابل استفاده است
    نتیجه خروجی هم در فیلم ضمیمه هست که اگر ملاحظه بکنید بدون هیچ مکثی پشت سر هم از کانال 4 و 5 قرائت انجام شده و روی پورت سریال نشان داده شده است.
    فايل هاي پيوست شده فايل هاي پيوست شده

  5. کاربران : 4 تشکر کرده اند از شما mzarkoob برای ارسال این پست سودمند:


  6. #3
    کاربر علاقه مند
    تاریخ عضویت
    Apr 2014
    نوشته ها
    22
    تشکر
    11
    تشکر شده 4 بار در 4 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    سلام
    با فعال کردن بیت burst می توان همزمان از چند کانال نمونه برداری انجام داد بدین صورت که تا تبدیل انجام شد و روی رجیستر کانال مربوطه قرار گرفت و بعد خوانده شد بلافاصله نمونه بعدی تبدیل و قابل استفاده است
    نتیجه خروجی هم در فیلم ضمیمه هست که اگر ملاحظه بکنید بدون هیچ مکثی پشت سر هم از کانال 4 و 5 قرائت انجام شده و روی پورت سریال نشان داده شده است.
    سلام جناب زرکوب در صورت امکان این نمونه کد را در قرار بدین چون من خودم واقعا درگیر راه اندازی همزمان چند کانال adc هستم
    متشکرم

  7. تشکرها از این نوشته :


موضوعات مشابه

  1. استفاده از مد RS485 در lpc1768
    توسط mzarkoob در انجمن LPC series (NXP)
    پاسخ: 8
    آخرين نوشته: 12-07-2014, 14:32
  2. استفاده از وقفه lpc1768 ؟
    توسط pirozy در انجمن LPC series (NXP)
    پاسخ: 1
    آخرين نوشته: 23-11-2013, 23:40
  3. کمک در مورد استفاده از RAM2 میکرو lpc1768 در کیل
    توسط novinandish در انجمن LPC series (NXP)
    پاسخ: 1
    آخرين نوشته: 28-08-2013, 20:43
  4. فوری فوری : پخش صدا با استفاده از lpc1768
    توسط faryjoon در انجمن LPC series (NXP)
    پاسخ: 3
    آخرين نوشته: 25-08-2013, 10:02
  5. تولید ولتاژ منفی با استفاده DAC lpc1768
    توسط smahdy در انجمن LPC series (NXP)
    پاسخ: 2
    آخرين نوشته: 31-08-2012, 02:27

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •