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

موضوع: مشکل در استفاده ازadc در 1768

  1. #1
    عضو جدید
    تاریخ عضویت
    Jul 2014
    نوشته ها
    19
    تشکر
    12
    تشکر شده 0 بار در 0 پست

    پیش فرض مشکل در استفاده ازadc در 1768

    با سلام.
    من یک برنامه نوشتم برای واحد adc که که وقتی از کانال 10 استفاده میکنم به خوبی کار میکنه ولی وقتی از کانال های 1و2 و ... استفتده میکنم و ریجستر ها رو برای آنها تغییر میدم کار نمیکنه.
    کد:
        int i;
        lcd_init(); 
        delay1(100);
        lcd_clear();
        lcd_gotoxy(1,1);
        lcd_putsf("hello world");
        delay1(1000);
        while(1){
            LPC_SC->PCONP|=(1<<12);
            LPC_PINCON->PINSEL1=(0X10000);
            LPC_ADC->ADCR=(0x00200302);
            
            
            
            LPC_ADC->ADCR|=0X01000000;
        do{
            i=LPC_ADC->ADDR0;
        }while((i&(1<<31))==0);
            
    lcd_puts((i>>4)&0x0fff);
    delay1(100);
    lcd_clear();    
    
    
        }    
    }
    من وقتی pinsel1 رو به 0x4000 و LPC_ADC->ADCR=0x00200301; قرار میدم برنامه کار میکنه و اجرا میشه و خروجی رو هم میبینم. ولی وقتی که برنامه رو برای کانال دو تغییر میدم یعنی به شکل بالا برنامه تو حلقه do-while گیر میکنه.
    میشه راهنمایی کنید که مشکل از کجاست؟
    و چطوری میتنم این کانلا ها رو بخونم.

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر علاقه مند
    تاریخ عضویت
    Apr 2014
    نام
    جواد اسماعیلی
    نوشته ها
    51
    تشکر
    19
    تشکر شده 14 بار در 10 پست

    Thumbs up

    سلام از این تابع من استفاده کن جواب داده :
    فقط باید قبل از وایل پایه های ADcکه نیاز داری رو کانفیگ کنی
    نحوه استفادش از تابع هم دقیقا مثل کد ویژن هستش
    تابع:

    کد:
    unsigned int read_adc(unsigned char adc_input)
    {
    LPC_SC->PCONP       |=  (1<<12);               /* Enable power to ADC block */
    LPC_ADC->ADCR        =  (1<< adc_input) |      /* select AD0.4 pin */
                            (4<< 8) |              /* ADC clock is 25MHz/5   4+1*/
                            (1<<21);               /* enable ADC */
    
        
                
        LPC_ADC->ADCR |=  (1<<24);                    /* start conversion */
      while (!(LPC_ADC->ADGDR & (1UL<<31)));        /* Wait for Conversion end */
        LPC_ADC->ADCR &= ~(7<<24);                    /* stop conversion  */
        return ((LPC_ADC->ADGDR>>4) & 0xfff);
    }
    نحوه کانفیگ قبل از وایل:
    کد:
    LPC_PINCON->PINSEL3 |=  (3UL<<28);             /* P1.30 is AD0.4 */
    LPC_PINCON->PINSEL3 |=  (3UL<<30);             /* P1.30 is AD0.5 */
    البته خط زیر رو هم فکر کنم بشه قبل از وایل گذاشت:
    کد:
    LPC_SC->PCONP |= (1<<12); /* Enable power to ADC block */

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

  1. پاسخ: 10
    آخرين نوشته: 30-06-2014, 10:45
  2. تایمر دقیق در 1768
    توسط Z.F.K در انجمن LPC series (NXP)
    پاسخ: 2
    آخرين نوشته: 19-04-2014, 10:13
  3. کلاک cpu در 1768
    توسط forumwork.net در انجمن LPC series (NXP)
    پاسخ: 13
    آخرين نوشته: 10-05-2013, 16:10
  4. وقفه در lpc 1768
    توسط avr_rva در انجمن LPC series (NXP)
    پاسخ: 14
    آخرين نوشته: 15-03-2013, 00:51

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

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