"PCF2127A" : RTC chip with TCXO and quartz crystal demo Please refer >> http://mbed.org/users/okano/notebook/nxp_pcf2172a-demo-code/

Dependencies:   mbed

Information

Latest version is available on components page.

Committer:
okano
Date:
Sat Jun 05 02:18:50 2010 +0000
Revision:
0:e13d786ba650

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 0:e13d786ba650 1 /*
okano 0:e13d786ba650 2 * PCF2127A (Integrated RTC, TCXO and quartz crystal) demo
okano 0:e13d786ba650 3 *
okano 0:e13d786ba650 4 * PCF2127A is a "real time clock (RTC)" module which is including a Xtal and TCXO
okano 0:e13d786ba650 5 * http://www.nxp.com/pip/PCF2127A_2.html
okano 0:e13d786ba650 6 *
okano 0:e13d786ba650 7 * This is a just simple operation sample of the PCF2127A.
okano 0:e13d786ba650 8 * In this sample, the PCF2127A is interfaced by I2C through pin9 and 10 of mbed.
okano 0:e13d786ba650 9 * And also the mbed-pin8 is connected to RTC's /INT pin.
okano 0:e13d786ba650 10 * The RTC chip is set to generate periodical interrupt in every seconds.
okano 0:e13d786ba650 11 * This interrupt triggers the update of the terminal and LCD screen.
okano 0:e13d786ba650 12 *
okano 0:e13d786ba650 13 * RTC initializing part is ported from...
okano 0:e13d786ba650 14 * http://mbed.org/users/roen/notebook/real-time/
okano 0:e13d786ba650 15 *
okano 0:e13d786ba650 16 * Released under the MIT License: http://mbed.org/license/mit
okano 0:e13d786ba650 17 *
okano 0:e13d786ba650 18 * revision 1.0 05-Jun-2010 (a) 1st release
okano 0:e13d786ba650 19 * revision 1.1 05-Jun-2010 (a) class name changed
okano 0:e13d786ba650 20 *
okano 0:e13d786ba650 21 */
okano 0:e13d786ba650 22
okano 0:e13d786ba650 23 #include "mbed.h"
okano 0:e13d786ba650 24 #include "TextLCD.h"
okano 0:e13d786ba650 25 #include "NXP_PCF2127A.h"
okano 0:e13d786ba650 26
okano 0:e13d786ba650 27 TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); // rs, rw, e, d0, d1, d2, d3
okano 0:e13d786ba650 28 NXP_PCF2127A rtc( p9, p10 );
okano 0:e13d786ba650 29 InterruptIn intr( p8 );
okano 0:e13d786ba650 30 BusOut leds( LED4, LED3, LED2, LED1 );
okano 0:e13d786ba650 31
okano 0:e13d786ba650 32 void time_intr( void );
okano 0:e13d786ba650 33 void led_ctrl( void );
okano 0:e13d786ba650 34
okano 0:e13d786ba650 35 int main() {
okano 0:e13d786ba650 36 printf( "----------------- PCF2127 demo started.\r\n" );
okano 0:e13d786ba650 37
okano 0:e13d786ba650 38 leds = 1;
okano 0:e13d786ba650 39
okano 0:e13d786ba650 40 if ( rtc.is_init_required() ) {
okano 0:e13d786ba650 41 lcd.locate( 0, 0 );
okano 0:e13d786ba650 42 lcd.printf( "please set time from terminal" );
okano 0:e13d786ba650 43
okano 0:e13d786ba650 44 rtc.set_time();
okano 0:e13d786ba650 45
okano 0:e13d786ba650 46 lcd.cls();
okano 0:e13d786ba650 47 }
okano 0:e13d786ba650 48
okano 0:e13d786ba650 49 intr.fall( &time_intr );
okano 0:e13d786ba650 50
okano 0:e13d786ba650 51 while ( 1 )
okano 0:e13d786ba650 52 ;
okano 0:e13d786ba650 53 }
okano 0:e13d786ba650 54
okano 0:e13d786ba650 55
okano 0:e13d786ba650 56 void time_intr( void ) {
okano 0:e13d786ba650 57 struct tm dt, *dtp;
okano 0:e13d786ba650 58 time_t t;
okano 0:e13d786ba650 59 char s[ 30 ];
okano 0:e13d786ba650 60 dtp = &dt;
okano 0:e13d786ba650 61
okano 0:e13d786ba650 62 rtc.clear_intr();
okano 0:e13d786ba650 63
okano 0:e13d786ba650 64 t = rtc.time( NULL );
okano 0:e13d786ba650 65 dtp = localtime( &t );
okano 0:e13d786ba650 66
okano 0:e13d786ba650 67 strftime( s, 30, "%H:%M:%S, %Y/%b/%d %a", dtp );
okano 0:e13d786ba650 68 printf( "%s\r\n", s );
okano 0:e13d786ba650 69
okano 0:e13d786ba650 70 strftime( s, 20, "%H:%M:%S PCF2127", dtp );
okano 0:e13d786ba650 71 lcd.locate( 0, 0 );
okano 0:e13d786ba650 72 lcd.printf( "%s", s );
okano 0:e13d786ba650 73
okano 0:e13d786ba650 74 strftime( s, 20, "%Y/%b/%d(%a)", dtp );
okano 0:e13d786ba650 75 lcd.locate( 0, 1 );
okano 0:e13d786ba650 76 lcd.printf( "%s", s );
okano 0:e13d786ba650 77
okano 0:e13d786ba650 78 led_ctrl();
okano 0:e13d786ba650 79 }
okano 0:e13d786ba650 80
okano 0:e13d786ba650 81
okano 0:e13d786ba650 82 void led_ctrl( void )
okano 0:e13d786ba650 83 {
okano 0:e13d786ba650 84 static char direction = true;
okano 0:e13d786ba650 85
okano 0:e13d786ba650 86 leds = direction ? leds << 1 : leds >> 1;
okano 0:e13d786ba650 87 direction = (leds & 0x9) ? !direction : direction;
okano 0:e13d786ba650 88 }
okano 0:e13d786ba650 89