Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

LPC2138 ve ADC

Başlatan muat, 11 Şubat 2008, 16:42:36

muat

Merhaba arkadaşlar,
Elimde bulunan LPC2138 ile denge sönsörünün verdiği analog veriyi ölçmeye çalışıyoru. Denge sensöründen 3 analog veri geliyor. Fakat ben aşağıdaki örnek kodu kendi amacım için değiştirdiğimde hep aynı sonucu veriyor. Nasıl yapmam gerektiğini anlayamadım. Yardım ederseniz sevinirim.
İyi günler.

Örnek program:
int main(void)
{  
  
	
  
  // Initial ADC0 (ADCR=0x01210601)    
  AD0CR &= 0x00000000;										// Clear All Bit Control
  AD0CR |= 0x00000001;										// Select ADC = AIN0
  AD0CR |= 0x00000600;										// ADC Clock = VBP(PCLK) / 7
  AD0CR |= 0x00010000;                                      // Busrt = 1 = Conversion Continue
  AD0CR &= 0xFFF1FFFF;										// CLKS = 000 = 10Bit : 11 Cycle Clock Conversion 
  AD0CR |= 0x00200000;										// PDN = 1 = Active ADC Module
  AD0CR &= 0xFF3FFFFF;										// TEST[1:0] = 00 = Normal Mode
  AD0CR &= 0xF7FFFFFF;										// EDGE = 0 = Conversion on Falling Edge  
  AD0CR |= 0x01000000;										// START = 001 = Start Conversion Now
    
  // Start Test Read ADC0 										// Loop Continue
  {
    do			  											// Loop Read ADC0
    {
      val = AD0DR;                   						// Read A/D Data Register 
    }        
      while ((val & 0x80000000) == 0);  					// Wait ADC Conversion Complete	 
	  val = (val >> 6) & 0x03FF; 							// Shift ADC Result to Integer	 	        
	  volt = val * 3.3 / 1023.0;	  						// Volt = ADC Result x [3.3V / 1024]	 
    }
}

leblebitozu

IODIR ile port'u direction'ı nı input olarak tanımlaman ve PINSEL ile de PIN fonksiyonunu ADC olarak ayarlaman gerekiyor. LPC2138'in user manual'inde detayları bulabilirsin.