"PCF2127A" : RTC chip with TCXO and quartz crystal demo Please refer >> http://mbed.org/users/okano/notebook/nxp_pcf2172a-demo-code/
Information
Latest version is available on components page.
main.cpp@0:e13d786ba650, 2010-06-05 (annotated)
- Committer:
- okano
- Date:
- Sat Jun 05 02:18:50 2010 +0000
- Revision:
- 0:e13d786ba650
Who changed what in which revision?
User | Revision | Line number | New 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 |