Thông báo

Collapse
No announcement yet.

Thảo luận về ARM LPC 2138/2148

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    code VD cho ADC va xuat ra UẢT port

    Code:
    // Used GPIO3.28 = AIN7 (ADC7:AD1.0) Measure Voltage
    // Display Result on UART0(9600,N,8,1)
    
    #include <LPC22xx.H> 										// LPC2214 MPU Register
    #include <stdio.h>											// For Used Function printf 
    
    void init_serial0 (void);							// Used Initial UART0 From "Serial0.c"
    
    unsigned int val;		   									// ADC Result (HEX)
    float volt;													// ADC Result Volt
    
    int main(void)
    {  
      init_serial0();				   							// Initial UART0 = 9600,N,8,1
      printf("\nET-JR ARM7 LPC2214 --> TEST ADC-7(P3.28)\n"); 	// Call prinff Function
    
      //Initial ADC7 (GPIO-3.28) By Set PINSEL2[5:4=11]  
      PINSEL2 |= 0x00000030; 									// Select ADC7 Pin Connect P3.28
      
      // Initial ADC7 (ADCR=0x01210080)    
      ADCR &= 0x00000000;										// Clear All Bit Control
      ADCR |= 0x00000080;										// Select ADC = AIN7
      ADCR |= 0x00000600;										// ADC Clock = VBP(PCLK) / 7
      ADCR |= 0x00010000;                                       // Busrt = 1 = Conversion Continue
      ADCR &= 0xFFF1FFFF;										// CLKS = 000 = 10Bit : 11 Cycle Clock Conversion 
      ADCR |= 0x00200000;										// PDN = 1 = Active ADC Module
      ADCR &= 0xFF3FFFFF;										// TEST[1:0] = 00 = Normal Mode
      ADCR &= 0xF7FFFFFF;										// EDGE = 0 = Conversion on Falling Edge  
      ADCR |= 0x01000000;										// START = 001 = Start Conversion Now
        
      // Start Test Read ADC8 and Display on UART0 //
      while(1)													// Loop Continue
      {
        do			  											// Loop Read ADC7
        {
          val = ADDR;                   						// Read ADC 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]	 
    	  printf("\rADC7 Result = %1.3f Volt.",volt); 			// Display 3-Digit Result(0-3.3V)
        }
    }
    /****************************************************/
    
    #include <LPC22xx.H>           					// LPC2214 definitions
    
    #define CR     0x0D
    
    /******************************/
    /* Initial UART0 = 9600,N,8,1 */
    /* VPB(pclk) = 29.4912 MHz    */
    /******************************/
    void init_serial0 (void)  
    {
      PINSEL0 &= 0xFFFFFFF0;						// Reset P0.0,P0.1 Pin Config
      PINSEL0 |= 0x00000001;						// Select P0.0 = TxD(UART0)
      PINSEL0 |= 0x00000004;						// Select P0.1 = RxD(UART0)
    
      U0LCR &= 0xFC;								// Reset Word Select(1:0)
      U0LCR |= 0x03;								// Data Bit = 8 Bit
      U0LCR &= 0xFB;								// Stop Bit = 1 Bit
      U0LCR &= 0xF7;								// Parity = Disable
      U0LCR &= 0xBF;								// Disable Break Control
      U0LCR |= 0x80;								// Enable Programming of Divisor Latches
    
      // U0DLM:U0DLL = 29.4912MHz / [16 x Baud]
      //             = 29.4912MHz / [16 x 9600]
      //             = 192 = 0x00C0
      U0DLM = 0x00;									// Program Divisor Latch(192) for 9600 Baud
      U0DLL = 0xC0;
    
      U0LCR &= 0x7F;								// Disable Programming of Divisor Latches
    
      U0FCR |= 0x01;								// FIF0 Enable
      U0FCR |= 0x02;								// RX FIFO Reset
      U0FCR |= 0x04;								// TX FIFO Reset
      U0FCR &= 0x3F;                      
    }
    
    /****************************/
    /* Write Character To UART0 */
    /****************************/
    int putchar (int ch)  
    {                  
      if (ch == '\n')  
      {
        while (!(U0LSR & 0x20));  					// Wait TXD Buffer Empty
        U0THR = CR;                          		// Write CR
      }
      while (!(U0LSR & 0x20));						// Wait TXD Buffer Empty
      return (U0THR = ch);							// Write Character
    }
    
    /*****************************/
    /* Read Character From UART0 */
    /*****************************/
    int getchar (void)  
    {                    
      while (!(U0LSR & 0x01));						// Wait RXD Receive Data Ready
      return (U0RBR);								// Get Receice Data & Return
    }

    Comment


    • #17
      Bravo bác Bảo,thành viên nhiệt tình nhất,những bài viết của Bác thực sự rất hữu ích cho anh em,ai vào đọc nhớ thanks nha,bác ý mà nản ko post nữa thì.... hiii

      Comment


      • #18
        mình cũng đang tìm hiểu mấy con ARM này mong anh em giúp đỡ.
        ko_198800@yahoo.com

        Comment


        • #19
          Read ADC cho 2148

          hi đây là function để read adc dùng cho LPC2148. viết function cho ba con de su dung
          Code:
          unsigned long int read_adc1(unsigned int num_adc1)
          {	//ADC Clock = VBP(PCLK) / 7
          	//Busrt = 1 = Conversion Continue
          	//CLKS = 000 = 10Bit : 11 Cycle Clock Conversion 
          	//PDN = 1 = Active ADC Module
          	//EDGE = 0 = Conversion on Falling Edge 
          	//START = 001 = Start Conversion Now
          unsigned int val;
          unsigned long int temp;
            AD1CR  = 0x00210600 |(1<<num_adc1);
             
          	    AD1CR  |= 0x01000000;                   //Bat dau chuyen doi
          		do
                     switch(num_adc1)
          		   {
          		       case 0 :
          		  	  {
          			   val = AD1DR0;      // Read A/D Data Register and clear DONE bit 
          			   break;
          			  }
          			  case 1 :
          			  {
          			   val = AD1DR1;      // Read A/D Data Register and clear DONE bit 
          			   break;
          			  }
          			  case 2 :
          			  {
          			   val = AD1DR2;      // Read A/D Data Register and clear DONE bit 
          			   break;
          			  }
          			  case 3 :
          			  {
          			   val = AD1DR3;      // Read A/D Data Register and clear DONE bit 
          			   break;
          			  }
          			  case 4 :
          			  {
          			   val = AD1DR4;      // Read A/D Data Register and clear DONE bit 
          			   break;
          			  }
          			  case 5 :
          			  {
          			   val = AD1DR5;      // Read A/D Data Register and clear DONE bit 
          			   break;
          			  }
          			  case 6 :
          			  {
          			   val = AD1DR6;      // Read A/D Data Register and clear DONE bit 
          			   break;
          			  }
          			  default:
          			  val=	AD1DR7;
          		}        
                  while ((val & 0x80000000) == 0);	// Wait ADC Conversion Complete and clear DONE bit	
          	    val = (val >> 6) & 0x03FF;
          		temp=val; 
          	
          	    //temp=temp*3.3/1023/100.0;
          return (temp);
          		    
           }

          Comment


          • #20
            Nguyên văn bởi hbaocr Xem bài viết
            hi đây là function để read adc dùng cho LPC2148. viết function cho ba con de su dung
            Code:
            unsigned long int read_adc1(unsigned int num_adc1)
            {	//ADC Clock = VBP(PCLK) / 7
            	//Busrt = 1 = Conversion Continue
            	//CLKS = 000 = 10Bit : 11 Cycle Clock Conversion 
            	//PDN = 1 = Active ADC Module
            	//EDGE = 0 = Conversion on Falling Edge 
            	//START = 001 = Start Conversion Now
            unsigned int val;
            unsigned long int temp;
              AD1CR  = 0x00210600 |(1<<num_adc1);
               
            	    AD1CR  |= 0x01000000;                   //Bat dau chuyen doi
            		do
                       switch(num_adc1)
            		   {
            		       case 0 :
            		  	  {
            			   val = AD1DR0;      // Read A/D Data Register and clear DONE bit 
            			   break;
            			  }
            			  case 1 :
            			  {
            			   val = AD1DR1;      // Read A/D Data Register and clear DONE bit 
            			   break;
            			  }
            			  case 2 :
            			  {
            			   val = AD1DR2;      // Read A/D Data Register and clear DONE bit 
            			   break;
            			  }
            			  case 3 :
            			  {
            			   val = AD1DR3;      // Read A/D Data Register and clear DONE bit 
            			   break;
            			  }
            			  case 4 :
            			  {
            			   val = AD1DR4;      // Read A/D Data Register and clear DONE bit 
            			   break;
            			  }
            			  case 5 :
            			  {
            			   val = AD1DR5;      // Read A/D Data Register and clear DONE bit 
            			   break;
            			  }
            			  case 6 :
            			  {
            			   val = AD1DR6;      // Read A/D Data Register and clear DONE bit 
            			   break;
            			  }
            			  default:
            			  val=	AD1DR7;
            		}        
                    while ((val & 0x80000000) == 0);	// Wait ADC Conversion Complete and clear DONE bit	
            	    val = (val >> 6) & 0x03FF;
            		temp=val; 
            	
            	    //temp=temp*3.3/1023/100.0;
            return (temp);
            		    
             }
            Bác Bảo cố lên , UP nhiều nữa hen , các chương trình của Bác rất có ích đó cho ai yêu thích ARM
            Chắc em theo bác BẢO chơi ARM luôn quá ,thấy bác vừa có Hardware + Soft + CODE nhiều như vậy .Chắc học theo bác thì lên nhanh về ARM lắm nhỉ.Hi hi

            Không biết bác có đồng ý không nhỉ?
            My department's Website: www4.hcmut.edu.vn/~thietbidien/trangchu

            Motorola-FreeScale's MCU 68HC11 & HCS12X Supporter

            Comment


            • #21
              Bác Bảo có kinh nghiệm gì về sử dụng TCP/IP ko share cho anh em với :-)

              Comment


              • #22
                hehe xin lỗi nghen,tui dân tự động nên cũng không rành lắm về thứ này.TCP/IP trên 2148 hay 2378 mới coi sơ sơ trên usermanual.chưa làm lần nào!bên Khoa CNTT có 2378 (BÁch khoa và bên Tự Nhiên) bạn wa đó hỏi thử.

                Comment


                • #23
                  Cach su dung timer

                  He he, chao cac bác ,xin lôi vi tới hôm nay mới pót tiếp bài được.Em mới thi xong ma! cầu trời wa hết năm cuối mà rớt chắc chít wa! Hôm nay em mạo mụi pót tiep các sử dụng timer trong LPC2000


                  Đăc Điểm:
                  Bộ timer 32 bit có thể lập trình chia lại tầm được.
                  Hỗ trợ tới 4 kênh Capture (bắt giữ) cho mỗi timerkhiến ta có thể “bắt giữ” giá trị của thanh ghi Timer khi có sự thay đổi của tín hiệu ngõ vào mỗi kênh.Mỗi Capture có khả năng gây ra 1 sự kiện ngắt nếu được cho phép
                  Hỗ trợ 4 thanh ghi Match 32 bit :với công dụng(tùy người thiết lập)
                  -Gây ra ngắt khi xảy ra sự kiện Match (thanh ghi tích lũy của timer= Match)
                  -Dừng timer ngắt khi xảy ra sự kiện Match
                  -Reset Timer
                  Hỗ trợ 4 ngõ ra bên ngoài ứng với thanh ghi Match: có thể tùy thiết lập với công dụng sau khi xảy ra Match
                  -Xuống thấp
                  -Lên cao
                  -Đổi trạng thái
                  -Không làm gì cả
                  Chức năng:

                  Định Khoảng thời gian cho mỗi sự kiện
                  Đo độ rộng xung
                  Tạo bộ định thời.

                  Mô tả chức năng các PIN
                  CAPX.Y
                  X=0,1
                  Y=0..3
                  loại Input
                  mô tả : Sự thay đổi của tín hiệu trên mỗi Capture Pin sẽ được thiết lập sẽ nạp giá trị của thanh ghi counter Timer vào thanh ghi Capture (CRY) ứng với chỉ số Y của PIN CAPX.Y và có thể gây ra ngắt nếu được phép.Khi có nhiều hơn 1 Pin được chọn là ngõ vào CAPTURE cho cùng 1 nguồn CAPTURE thì Pin nào có chỉ số thấp hơn hoạt động
                   CAP0.0 (3 pin) :P0.2 ;P0.22;P0.30
                   CAP0.1(2 pin) :P0.4;P0.27
                   CAP0.2(3 Pin) :P0.6;P0.16;P0.28
                   CAP0.3(1 pin) :P0.29
                   CAP1.0(1 pin): P0.10
                   CAP1.1(1 pin):P0.11
                   CAP1.2(2 pin):P0.17;P0.19
                   CAP1.3(2 pin):P0.18;P0.21
                  MATX.Y
                  X=0,1
                  Y=0..3
                  X:ứng với số Timer
                  Y:ứng với từng thanh ghi MAT
                  thuộc loại OutPut
                  Mô tả: Khi xảy ra sự kiện match các chân này sẽ được tác động nếu được cho phép (có thẻ lên cao,xuống thấp,đảo trạng thái,hay không làm gì cả).Nếu có 2 pin được chọn liên kết với 1 nguồn Match thì cả 2 Pin cùng hoạt động song song
                   MAT0.0(2pin):P0.3 ,P0.22
                   MAT0.1(2pin):P0.5;P0.27
                   MAT0.2(2Pin):P0.16;P0.28
                   MAT0.3(1Pin):P0.29
                   MAT1.0(1 Pin): P0.12
                   MAT1.1(1Pin):P0.13
                   MAT1.2(2 Pin):P0.17;P0.19
                   MAT1.3 (2 Pin):P0.18;P0.20

                  Comment


                  • #24
                    Mô tả chức năng các Thanh ghi TIMERx:
                    Tên Mô Tả
                    IR Thanh ghi điều khiển ngắt.Nó có thể được đọc để xác định nguồn ngắt nào được phục vụ
                    TCR Thanh ghi điều khiển Timer.Được dùng để thiết lập cho TIMER
                    TC Thanh ghi tích luỹ 32 bit,tăng lên 1 sau PR+1 chu kỳ PCLK.Được kiểm soát bởi TCR
                    PR Chi tần cho timer.Khi PC=PR thì chu kì PCLK tiếp theo sẽ xóa PC và tăng TC lên 1
                    PC Được tăng từ 0 cho đến PR sau mỗi PCLK
                    MCR Thanh ghi điều khiển Match.Được dùng để cho phép ngắt hay reset TC khi có sự kiện MATCH
                    MR0..3 Thanh ghi MATCH. MRx có thể được cho phép bởi MCR để thực hiện các chức năng sau:reset TC/dừng TC va PC/gây ra ngắt mỗi khi có sự “khớp nhau” giữa TC và MRx.(MRx=TC)
                    CCR Thanh ghi điều khiển sự kiện bắt dữ (CAPTURE).Kiểm soát cạnh lên/xuống ờ CAP pin thì xảy ra sự kiện nạp giá trị của TC vào CRY ứng với pin CAPX.Y
                    CR0..3 CRY được nạp giá trị của TC khi có sự kiện capture
                    EMR Thanh ghi điều khiển các PIN MATn.0..3 liên hệ với sự kiện MATCH

                    Comment


                    • #25
                      A, E cho hỏi hiện tại chổ nào bán mấy chu LPC 2138/2148 vậy, thấy hay quá định tìm hiểu mà không biết mua ở đâu?
                      thank!

                      Comment


                      • #26
                        bên nhúng việt có bán đó bạn ơi 33$ 1 board STAMP LPC2148

                        Comment


                        • #27
                          đó là bên nào vậy bạn, có địa chỉ không vậy, mà mình muốn mua chíp thôi.

                          Comment


                          • #28
                            http://www.nhungviet.com/index.php?o...id=24&Itemid=2
                            đây nè,nó có bán LPC2148,LPC2378 và evalution board

                            Comment


                            • #29
                              Bác nào biết mua evalution board LPC2148 ở hà nội ko ?
                              Last edited by trongnghia85; 27-06-2008, 13:58.

                              Comment


                              • #30
                                Bác nào biết mua evalution board LPC2148 ở hà nội ko ?
                                Em đang có 5 con LPC2378 ,nếu bác nào có nhu cầu mua thì liên hệ dt: 0985332557
                                Bác trongnghia85 có thi NXP contest hả?Bác lấy 5 chip LPC2000 để bán sao????Sao ko để mà làm!


                                tiep đây là 1 chương trình
                                http://f1.grp.yahoofs.com/v1/EMtjSIp...g/baudcalc.zip
                                đây la chuong trinh tinh toán để nap gia vao cac thanh ghi control UART của LPC2000 để có tốc độ baud fu hop thiet ke

                                Comment

                                Về tác giả

                                Collapse

                                emdaikho Tìm hiểu thêm về emdaikho

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X