اطلاعیه

Collapse
No announcement yet.

تنظیم adc

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تنظیم adc

    سلام
    پین های adc زو من ب این شکل پیکربندی کردم

    کد:
    //adc 0
    	PinCfg.Funcnum = 1;
    	PinCfg.OpenDrain = 0;
    	PinCfg.Pinmode = 0;
    	PinCfg.Pinnum = 23;
    	PinCfg.Portnum = 0;
    	PINSEL_ConfigPin(&PinCfg);
    	
    	//adc 1
    	PinCfg.Funcnum = 1;
    	PinCfg.OpenDrain = 0;
    	PinCfg.Pinmode = 0;
    	PinCfg.Pinnum = 24;
    	PinCfg.Portnum = 0;
    	PINSEL_ConfigPin(&PinCfg);
    	
    	//adc 2//
    	PinCfg.Funcnum = 1;
    	PinCfg.OpenDrain = 0;
    	PinCfg.Pinmode = 0;
    	PinCfg.Pinnum = 25;
    	PinCfg.Portnum = 0;
    	PINSEL_ConfigPin(&PinCfg);
    	
    	
    	
    	//adc 4*
    	PinCfg.Funcnum = 3;
    	PinCfg.OpenDrain = 0;
    	PinCfg.Pinmode = 0;
    	PinCfg.Pinnum = 30;
    	PinCfg.Portnum = 1;
    	PINSEL_ConfigPin(&PinCfg);
    	
    	
    	//adc5*//
    	PinCfg.Funcnum = 3;
    	PinCfg.OpenDrain = 0;
    	PinCfg.Pinmode = 0;
    	PinCfg.Pinnum = 31;
    	PinCfg.Portnum = 1;
    	PINSEL_ConfigPin(&PinCfg);
    	
    	//adc6//
    	PinCfg.Funcnum = 2;
    	PinCfg.OpenDrain = 0;
    	PinCfg.Pinmode = 0;
    	PinCfg.Pinnum = 3;
    	PinCfg.Portnum = 0;
    	PINSEL_ConfigPin(&PinCfg);
    	
    	//adc7*
     	PinCfg.Funcnum = 2;
    	PinCfg.OpenDrain = 0;
    	PinCfg.Pinmode = 0;
    	PinCfg.Pinnum = 2;
    	PinCfg.Portnum = 0;
    	PINSEL_ConfigPin(&PinCfg);
    ب نظرتون درسته؟؟
    با این پیکربندی فقط adc های 4 5 7 جواب دادن!
    خودم با دستور PinCfg.Funcnum گیج شدم ک چظوری مقدار دهی کنم! دوستان اگر امکانش هست توضیح بدین چطوری این متغیر رو مقدار دهی کنم!!
    انجام پروژه هاي برنامه نويسي اندرويد
    [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
    http://cafebazaar.ir/app/?id=com.atxdroid

    #2
    پاسخ : تنظیم adc

    با این برنامه کار خودت راحت کن.
    کد:
    #include <lpc17xx.h>
    #include <stdio.h>
    
    #define LCD_LPC1768    
    #define LCD_PORT_1
    #define LCD_RS   14
    #define LCD_RW   10
    #define LCD_E   9
    #define LCD_DB4  8
    #define LCD_DB5  4
    #define LCD_DB6  1
    #define LCD_DB7  0
    
    #include "lcd.h"
    
    delay(){
    	
    	int i;
    	for(i=0;i<3000000;i++);
    
    }
    
    void ADC_IRQHandler(){
    	
    	int a;
    	char buf[16];
    	float v;
    	a = (LPC_ADC->ADGDR >> 4 & 0xFFF);
    	v = (a * 3.3) / 4096;
    	sprintf(buf,"AD = %4.3f",v);
    	lcd_gotoxy(2,1);
    	lcd_putsf(buf);
    	LPC_ADC->ADCR |= (1 << 24);
    
    }	 
    
    main(){
    
    	SystemInit();
    	lcd_init();
    	lcd_clear();
    	lcd_gotoxy(1,3);
    	lcd_putsf("ADC Example");
    
    	LPC_PINCON->PINSEL0 |= (2UL << 4);
    	LPC_SC->PCONP |= (1 << 12);
    	LPC_ADC->ADCR |= ((1 << 7) | // channel number 
    					 (4 << 8) |
    					 (1 << 21));
    	LPC_ADC->ADINTEN |= 0x80;
    	NVIC_EnableIRQ(ADC_IRQn);
    	LPC_ADC->ADCR |= (1 << 24);
    
    }

    دیدگاه


      #3
      پاسخ : تنظیم adc

      خوشحال میشم با cmsis جوابم رو بدید
      انجام پروژه هاي برنامه نويسي اندرويد
      [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
      http://cafebazaar.ir/app/?id=com.atxdroid

      دیدگاه


        #4
        پاسخ : تنظیم adc

        کد زیر رو برای تاچ استفاده میکنم:
        کد:
         LPC_IOCON->P0_25 =1;      //select Y+ as an analong input
        LPC_SC->PCONP  |= (1<<12);  //adc Power enable set PCADC
        LPC_ADC->CR   = (1 <<2);  //select Chanle CH2 
        LPC_ADC->CR   |= (149<<8);  //select ADC Clock here we set it 400Khz			149
        LPC_ADC->CR   |= (1 <<21);		//set ADC in opration mode 
         LPC_ADC->CR|= (1<<24);          //start ADC conversion   
        while ((LPC_ADC->GDR &(1<<31))==0);      //wait untilconversion done		 
        ADC =((unsigned int )(LPC_ADC->GDR>>4)&0x0fff);
        از جمله ی رفتگان این راه دراز
        باز آمده ای کو که به ما گوید راز
        هان بر سر این دو راهه از روی نیاز
        چیزی نگذاری که نمی آیی باز

        دیدگاه

        لطفا صبر کنید...
        X