Thông báo

Collapse
No announcement yet.

Thảo luận về RTC trên chip LPC2103

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

  • Thảo luận về RTC trên chip LPC2103

    Chào các bác!
    Hôm nay mình xin mạo mụi post 1 bài về RTC và vấn đề mình đang gặp phải qua cái chức năng này.
    Chuyện là thế lầy mình có làm 1 cái kit sử dụng chip LPC2103 dự định là sẽ dùng internal RTC của nó để làm mạch đồng hồ nhưng mỗi khi mất nguồn là thời gian bị reset, đã sử dụng đủ cách (Power-down mode để lưu giá trị vào SRAM) vậy mà vẫn không chạy.(Mình có attach schematic kèm theo)
    Click image for larger version

Name:	RTC.jpg
Views:	1
Size:	60.7 KB
ID:	1408568

    Các bác pro có kinh nghiệm vấn đề này xin chỉ giáo.
    Code:
    #include <LPC2103.H> 	                                	// LPC2103 MPU Register
    #include <stdio.h>											// For Used Function printf 
    #include "serial.h"
    #define MASKSEC 0x3F  										// Second 00..59   00000000:00000000:00xxxxxx
    #define MASKMIN 0x3F00										// Minute 00..59   00000000:00xxxxxx:00000000
    #define MASKHR  0x1F0000									// Hour 00..23	   000xxxxx:00000000:00000000
    
    int main(void)
    {  
      unsigned char Hour,Minute,Second,Last_Second;				// RTC Buffer Data
      init_serial0();		   									// Initilial UART0 = 9600,N,8,1
      printf("\n\n\nET-ARM7 STAMP LPC2103...TEST RTC\n"); 
    // Initial Internal RTC Function
      CCR &= 0x00;												// Reset All Bit
      CCR |= 0x10; 												// CLKSRC = 1 = Used EXT 32.768 KHz
      CCR |= 0x02; 												// Reset Clock	  (0000 0010)
      CCR &= 0xFD;												// Release Reset  (1111 1101)
      CCR |= 0x01;												// Start RTC Clock	
      CCR  = 0x11;												// Start RTC Clock Used EXT 32.768 KHz
    
      // Setup Start Time For RTC = 00:00:00
      HOUR = 0x00;
      MIN  = 0x00;
      SEC  = 0x00;
      Last_Second = 0x00;
     
      // Start Test Read RTC and Display on UART0 //
      while(1)
      { 
        do 														// Repeat Get Second until Second Change
    	{		
    	  Hour   = (CTIME0 & MASKHR)>>16;						// Read Hour
    	  Minute = (CTIME0 & MASKMIN)>>8;		 				// Read Minute
    	  Second = CTIME0 & MASKSEC;		  					// Read Second
        }
        while(Last_Second == Second);							// Repeat if Second Not Change
    	
        Last_Second = Second;
    printf("\rReal Time Clock = ");							// Print Message String 
      	printf(" %2d : %2d : %2d",Hour,Minute,Second);	 
      }
    }
    Thanks!
    Vui Nguyen
    các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
    trên các dòng chip: stm32, lpc of nxp
    please cell phone: 01649895559

  • #2
    Hi Bác! Bác làm như thế này mô phỏng là chạy rồi mà. Còn khi chạy với kit thì em cũng k có kinh nghiệm.

    Comment


    • #3
      sơ đồ điện thì đúng rồi
      xem lại pin còn đủ điện không (cục pin cmos trừ cho diode, nếu pin tốt còn khoảng 2.96VDC). gắn pin đúng chiều không?
      Mãi đi tìm vàng.

      Comment


      • #4
        // Initial Internal RTC Function
        CCR &= 0x00; // Reset All Bit
        CCR |= 0x10; // CLKSRC = 1 = Used EXT 32.768 KHz
        CCR |= 0x02; // Reset Clock (0000 0010)
        CCR &= 0xFD; // Release Reset (1111 1101)
        CCR |= 0x01; // Start RTC Clock
        CCR = 0x11; // Start RTC Clock Used EXT 32.768 KHz

        // Setup Start Time For RTC = 00:00:00
        HOUR = 0x00;
        MIN = 0x00;
        SEC = 0x00;
        Last_Second = 0x00;

        đoạn code trên chỉ cần chạy 1 lần.
        Mãi đi tìm vàng.

        Comment


        • #5
          Nguyên văn bởi KVLV Xem bài viết
          sơ đồ điện thì đúng rồi
          xem lại pin còn đủ điện không (cục pin cmos trừ cho diode, nếu pin tốt còn khoảng 2.96VDC). gắn pin đúng chiều không?
          chào bác!
          Mình đã kiểm tra hết những điều kiện này,pin CMOS mình dùng MAXCELL CR2032 đo được 3.3V, đã nối thắng nguồn tới pin mà không qua diode. Nhưng cũng đành bó tay,hichic
          các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
          trên các dòng chip: stm32, lpc of nxp
          please cell phone: 01649895559

          Comment


          • #6
            RTC vẫn chạy tốt, code viết sai, khi có nguồn lại thì RTC bị reset => thời gian bị reset.
            Từ chối trách nhiệm:
            Mọi thông tin từ ITX cung cấp với hi vọng nó có ích và không đi kèm với bất kì sự bảo đảm nào.
            Blog: http://mritx.blogspot.com

            Comment


            • #7
              Nguyên văn bởi itx Xem bài viết
              RTC vẫn chạy tốt, code viết sai, khi có nguồn lại thì RTC bị reset => thời gian bị reset.
              Anh itx có thể nói rõ hơn được không ạ?

              Comment


              • #8
                Nguyên văn bởi itx Xem bài viết
                RTC vẫn chạy tốt, code viết sai, khi có nguồn lại thì RTC bị reset => thời gian bị reset.
                Xin bac itx noi ro hon được không ạ,
                Please!!!!
                các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
                trên các dòng chip: stm32, lpc of nxp
                please cell phone: 01649895559

                Comment


                • #9
                  Nguyên văn bởi robocon2011 Xem bài viết
                  Anh itx có thể nói rõ hơn được không ạ?
                  Nguyên văn bởi nguyenvanvui Xem bài viết
                  Xin bac itx noi ro hon được không ạ,
                  Please!!!!
                  Nói rõ như vậy còn cái gì nữa ? Khi có nguồn lại hoặc là bất kỳ cái quái gì đó làm hàm main chạy => main sẽ viết lại hết giá trị rtc bằng giá trị mặc định của nó => xong, đơn giản.
                  Từ chối trách nhiệm:
                  Mọi thông tin từ ITX cung cấp với hi vọng nó có ích và không đi kèm với bất kì sự bảo đảm nào.
                  Blog: http://mritx.blogspot.com

                  Comment


                  • #10
                    Nguyên văn bởi itx Xem bài viết
                    Nói rõ như vậy còn cái gì nữa ? Khi có nguồn lại hoặc là bất kỳ cái quái gì đó làm hàm main chạy => main sẽ viết lại hết giá trị rtc bằng giá trị mặc định của nó => xong, đơn giản.
                    Nói như bác vậy thì chắc e sẽ ko bao giờ hold được giá trị thời gian quá,có cách nào cho rtc chạy độc lập không ta??
                    các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
                    trên các dòng chip: stm32, lpc of nxp
                    please cell phone: 01649895559

                    Comment


                    • #11
                      Nguyên văn bởi nguyenvanvui Xem bài viết
                      Nói như bác vậy thì chắc e sẽ ko bao giờ hold được giá trị thời gian quá,có cách nào cho rtc chạy độc lập không ta??
                      Lỗi đã được chỉ rõ => đọc lại code, phân tích nó => sửa lại code. Không có chuyện người khác viết code ra và chỉ việc copy/paste đâu.
                      Từ chối trách nhiệm:
                      Mọi thông tin từ ITX cung cấp với hi vọng nó có ích và không đi kèm với bất kì sự bảo đảm nào.
                      Blog: http://mritx.blogspot.com

                      Comment


                      • #12
                        Viết đoạn code khởi tạo đó lần đầu và nạp, bỏ đoạn code khởi tạo đó đi và nạp lại là ok...Cách khác, ko cần khởi tạo, viết cài đặt RTC bằng UART...
                        |

                        Comment


                        • #13
                          Chắc dùng 1 key để khi nào nhấn thì hãy gọi hàm khởi tạo RTC...

                          Or call me 0903911109

                          Comment


                          • #14
                            chào cả thread, hôm nay mới có dịp test lại RTC và nhờ chỉ dẫn của mọi nên mọi việc khá suông sẻ,

                            thanks all.
                            các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
                            trên các dòng chip: stm32, lpc of nxp
                            please cell phone: 01649895559

                            Comment


                            • #15
                              Nguyên văn bởi Connection Xem bài viết
                              Chắc dùng 1 key để khi nào nhấn thì hãy gọi hàm khởi tạo RTC...
                              Không cần làm như vậy bác ah. Mình chỉ cần kiểm tra xem RTC đã hoạt động chưa? Nếu chưa hoạt động thì mới cần set nó. Dùng 1 biến để kiểm tra trong hàm main y'.
                              Never forget who you are!

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X