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

  • #76
    cho em hỏi chip ARM có gì mạnh hơn mấy con AVR hay PIC hay 8051 mà mình phải xài nó. Sao không xài 8051 hay PIC cho nhanh
    hi;rõ ràng là có sự khác biệt chứ ARM là dòng uC 32 bit sử dụng cấu truc ARM ; còn PIC16;8051;avr(atmega8,16,128...) là dòng uC 8bit.hơn nữa tốc độ xử lý của nó nhanh 60Mhz và bộ nhớ flash lớn,như con lpc2378 mình đang sử dụng có tích hợp săn RTC,KB interrupt (như port B của PIC) ,TCP/IP,USB,SPI,SSP,PWM,ADC 10bits 2.44us,DAC 10 bit,timer...., thích hợp với những ứng dụng phức tạp;với những tính toán phức tạp như số thực...Hiện nay ở việt nam có bán rộng rãi ARM7 của atmel (SAM7);ngòai ra còn có ARM7 của NXP(LPC2000 xem ở nhungviet.com);...Hi trong bạn có thể thấy người ta dùng ARM trong điện thoại di động;mp3;...hoặc những thiết bị khác!
    bạn có thể xem tổng quan về LPC2000 ở đầu thread này
    http://dientuvietnam.net/forums/showthread.php?t=12936
    Last edited by hbaocr; 18-08-2008, 12:40.

    Comment


    • #77
      Nguyên văn bởi hbaocr Xem bài viết
      hic , pac oi;thach anh trong mach pac dung bao nhieu vay!sao de tinh toan trong code vay 15MHZ vay
      X-TAL =12 Mhz
      M(Multiply)=5
      P(Divide)=2
      CPU Clock =M*X-TAL=60Mhz
      VPB Clock =CPU CLock/4 (Cai nay thay thiet lap trong file Startup.s)
      =15Mhz

      Tui tính vậy không đúng sao bác ???

      Comment


      • #78
        Em nghĩ bác trongnghia85 tính như vậy đúng rồi mà
        |

        Comment


        • #79
          hi;cái thông số của bạn set không sai nhưng độ sai số của nó lớn
          UART baudrate 2397.70
          Relative error -0.10%

          thử bộ thông số này xem
          UART baudrate 2400.15
          Relative error 0.01%
          các số này là số thập phân nghen hổng phải số HEX đâu
          UDL 217
          UDLM 0
          UDLL 217
          DivAddVal 4
          MulVal 5

          good luck

          Comment


          • #80
            cam on cac ban nhieu minh cung dang can tai lieu ve arm.cho minhhoi la khi minh khai bao thanh ghi I/O trong khi viet chuong trinhhien thi lcd thi lcd ko co tin hieu gi het.con neu bo dong khai bao nay thi lcd hoat dong binh thuong.

            Comment


            • #81
              Nguyên văn bởi trch Xem bài viết
              cam on cac ban nhieu minh cung dang can tai lieu ve arm.cho minhhoi la khi minh khai bao thanh ghi I/O trong khi viet chuong trinhhien thi lcd thi lcd ko co tin hieu gi het.con neu bo dong khai bao nay thi lcd hoat dong binh thuong.
              bạn có thể post đoan code đó lên ko?chứ nói kô như vậy biết đường nào!

              Comment


              • #82
                Nguyên văn bởi hbaocr Xem bài viết
                hi;cái thông số của bạn set không sai nhưng độ sai số của nó lớn
                UART baudrate 2397.70
                Relative error -0.10%

                thử bộ thông số này xem
                UART baudrate 2400.15
                Relative error 0.01%
                các số này là số thập phân nghen hổng phải số HEX đâu
                UDL 217
                UDLM 0
                UDLL 217
                DivAddVal 4
                MulVal 5

                good luck
                Mình đã tìm ra nguyên nhân tại sao bị lỗi rồi đó là do mình sử dụng 2 bộ UART cùng lúc ,mình sử dụng nó như sau :
                Bộ UART1 đọc dữ liệu từ một thiết bị khác sau đó xử lý dữ liệu đọc được rồi gửi qua UART0 .Nếu như cắt kết nối UART1 đi thì truyền UART0 ngon lành (truyền 1 đoạn kí tự linh tinh lên thôi) nhưng khi kết nối cả 2 thì UART1 vẫn nhận ngon còn UART0 thì truyền lên bị lỗi Font(Mình sợ có lỗi khi xử lý dữ liệu đọc từ UART1 nên chỉ truyền qua UART0 1 xâu linh tinh thôi ) Hơi vô lý làm sao mà không dùng được cùng lúc 2 bộ UART chứ.Bác nào chỉ giúp cách khắc phục với.

                Comment


                • #83
                  anh bảo,cho em hỏi trong chương trình hiển thị lcd 16*2 của anh thi có đoạn code này
                  #define RS 25

                  cho em hỏi có phải dùng dể khai báo chân của arm ko.mà là P0.25 hay p1.25 vậy.em cảm on anh nhiều.em cũng mới tìm hiểu về arm thôi.còn câu hỏi của anh thi hôm khác em post code lên anh xem dùm nha.

                  Comment


                  • #84
                    Nguyên văn bởi trch Xem bài viết
                    anh bảo,cho em hỏi trong chương trình hiển thị lcd 16*2 của anh thi có đoạn code này
                    #define RS 25

                    cho em hỏi có phải dùng dể khai báo chân của arm ko.mà là P0.25 hay p1.25 vậy.em cảm on anh nhiều.em cũng mới tìm hiểu về arm thôi.còn câu hỏi của anh thi hôm khác em post code lên anh xem dùm nha.
                    #define RS 25 tức là dùng P1.25
                    #define RW 26 tức là dùng P1.26
                    #define EN 27 tức là dùng P1.27
                    #define BUSYBIT 31 tức là dùng P1.31
                    #define LCDPORT 28 tức là vị trí bắt đầu của của LCD Nibble port
                    D4 ứng với P1.28
                    D5 ứng với P1.29
                    D6 ứng với P1.30
                    D7 ứng với P1.31 hay Busy bit

                    Comment


                    • #85
                      nhưng ma chỉ
                      #define cs 25
                      thi ko thể biết nó là Port 0 hay Port 1 dc.Vì có p0.25 và p1.25 mà.

                      Comment


                      • #86
                        việc định nghĩa chân ra là Port0 hoặc 1 còn phụ thuôc vào việc bạn nạp giá trị cho thanh ghi IOSET0(or1) IOCLR0(or1), IODIR0(or1) bạn nha. Anh bảo ko nói kĩ nên có thể bạn chưa hiểu bạn nên đọc tiếp phần dưới ấy sẽ thấy

                        IODIR1|= 15<<LCDPORT;//set output pin at LCD data bus
                        IODIR1|=1<<RS; //set output
                        IODIR1|=1<<RW; //set output
                        IODIR1|=1<<EN; //set output

                        viết như vậy có nghĩa là Port 1 đấy.
                        Hi vọng mình nói vậy bạn đã hiểu.
                        |

                        Comment


                        • #87
                          cảm ơn bạn nhieu nha.mình hiểu rồi.nhung mà nếu chuong trình dung ca p0.25 và p1.25 thi phai khai bao khac pai ko?

                          Comment


                          • #88
                            Đúng thế. việc khai báo chân nào IN OUT phụ thuộc vào bạn nhập giá trị cho các thanh ghi IODIR như thế nào bít tương ứng trong thanh ghi đó bằng 1 thì là In và 0 là Out. Bạn muốn tìm hiểu thì có thể mail cho mình mình sẽ gửi tài liệu 2148 cho, hoặc bạn có thể vào trang của Philip có manual đấy.
                            Yahoo: tranvantoan_vk
                            |

                            Comment


                            • #89
                              có thể khai báo nhiều ngắt cùng lúc; về nguyên tắc thì ngắt có độ ưu tien cao hơn sẽ được phục vụ trước (nếu có 2 ngắt cùng lúc xảy ra).Ví dụ bạn có thể dùng ngắt Timer và ngắt SPI.

                              Comment


                              • #90
                                @boycdt04
                                bac Bao oi.doan code doc phim nhan e thu roi,bac co the viet cach khac duoc ko? viet theo cach nay khi ta nhan giu phim thi led tat,neu tha phim thi led sang,em muon khi nhan phim thi led sang nhan tiep cai nua thi led tat.bac co code thi up len cho anh em hoc hoi nhe.thanks
                                hi;bạn chỉ cần them 1 cái cờ on_of để lưu trang thai thui! Đại loại là như vầy nè
                                Code:
                                #include "LPC214x.H"  	// LPC2148 MPU Register
                                
                                /* pototype  section */
                                int main(void)
                                {  unsigned long int p;
                                int on_flag;
                                  // xxxx xxxx xxxx xxxx xxxx xxxx 1xxx 1xxx  
                                  IODIR0  = 0x00000088;		// P0.3 and p0.7 output
                                  IOCLR0  = 0x00000008;		//P0.3 on
                                  IOSET0  =	0x00000080;		//p0.7 off
                                  on_flag=0;
                                  while(1)													
                                  {    		
                                		                 								
                                  	p=IO0PIN;  //doc trang thai port 0
                                	p=(p&(1<<5))>>5;// kiem tra bit p0.5					         
                                if(p==0)//neu nhan sw
                                {
                                        if(on_flag==0)
                                	{
                                        IOCLR0|=1<<7 ;
                                         on_flag=1;
                                        }
                                	else
                                	{
                                        on_flag=0;
                                        IOSET0|=1<<7;
                                        }
                                
                                  }  
                                }
                                }

                                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