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)
Các bác pro có kinh nghiệm vấn đề này xin chỉ giáo.
Thanks!
Vui Nguyen
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)
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); } }
Vui Nguyen
Comment