x12rtc.c File Reference

RTC and EEPROM routines for the Intersil X12xx clock chips. More...

Go to the source code of this file.

Defines

#define I2C_SLA_RTC   0x6F
#define I2C_SLA_EEPROM   0x57
#define EEPROM_PAGE_SIZE   64

Functions

int X12RtcReadRegs (uint8_t reg, uint8_t *buff, size_t cnt)
 Read RTC registers.
int X12RtcWrite (int nv, CONST uint8_t *buff, size_t cnt)
 Write to RTC registers.
int X12RtcGetClock (struct _tm *tm)
 Get date and time from an X12xx hardware clock.
int X12RtcSetClock (CONST struct _tm *tm)
 Set an X12xx hardware clock.
int X12RtcGetAlarm (int idx, struct _tm *tm, int *aflgs)
 Get alarm date and time of an X12xx hardware clock.
int X12RtcSetAlarm (int idx, CONST struct _tm *tm, int aflgs)
 Set alarm of an X12xx hardware clock.
int X12RtcGetStatus (uint32_t *sflgs)
 Query RTC status flags.
int X12RtcClearStatus (uint32_t sflgs)
 Clear RTC status flags.
int X12EepromRead (unsigned int addr, void *buff, size_t len)
 Read contents from non-volatile EEPROM.
int X12EepromWrite (unsigned int addr, CONST void *buff, size_t len)
 Store buffer contents in non-volatile EEPROM.
int X12Init (void)
 Initialize the interface to an Intersil X12xx hardware clock.

Variables

NUTRTC rtcX12x6


Detailed Description

RTC and EEPROM routines for the Intersil X12xx clock chips.

 *
 * $Log: x12rtc.c,v $
 * Revision 1.10  2009/02/13 14:52:05  haraldkipp
 * Include memdebug.h for heap management debugging support.
 *
 * Revision 1.9  2009/01/17 11:26:46  haraldkipp
 * Getting rid of two remaining BSD types in favor of stdint.
 * Replaced 'u_int' by 'unsinged int' and 'uptr_t' by 'uintptr_t'.
 *
 * Revision 1.8  2008/08/11 06:59:42  haraldkipp
 * BSD types replaced by stdint types (feature request #1282721).
 *
 * Revision 1.7  2008/07/09 14:25:06  haraldkipp
 * Made EEPROM_PAGE_SIZE configurable. Does it really make sense?
 *
 * Revision 1.6  2007/06/03 08:50:38  haraldkipp
 * Automatic detection of X1226 or X1286.
 * Fixed wrong century determination for X1226.
 * Debugging output added.
 *
 * Revision 1.5  2007/05/02 11:29:25  haraldkipp
 * Failed to store more than one EEPROM page. Removing NutSleep() from
 * X12WaitReady() fixes this. Why?
 *
 * Revision 1.4  2006/10/05 17:21:53  haraldkipp
 * Hardware specific functions marked deprecated.
 * Hardcoded register addresses and values replaced by macros.
 *
 * Revision 1.3  2006/03/02 19:57:34  haraldkipp
 * ICCARM insists on a (void *) typecast for the second parameter of memcpy().
 *
 * Revision 1.2  2006/01/19 18:41:34  haraldkipp
 * Year translation was completely broken. Fixed.
 *
 * Revision 1.1  2005/10/24 10:21:57  haraldkipp
 * Initial check in.
 *
 *
 * 

Definition in file x12rtc.c.


Define Documentation

#define I2C_SLA_RTC   0x6F

Definition at line 101 of file x12rtc.c.

#define I2C_SLA_EEPROM   0x57

Definition at line 105 of file x12rtc.c.

Referenced by X12EepromRead(), and X12EepromWrite().

#define EEPROM_PAGE_SIZE   64

Definition at line 109 of file x12rtc.c.

Referenced by X12EepromWrite().


Function Documentation

int X12RtcReadRegs ( uint8_t  reg,
uint8_t buff,
size_t  cnt 
)

Read RTC registers.

Parameters:
reg The first register to read.
buff Pointer to a buffer that receives the register contents.
cnt The number of registers to read.
Returns:
0 on success or -1 in case of an error.

Definition at line 174 of file x12rtc.c.

References I2C_SLA_RTC, NUT_WAIT_INFINITE, printf, putchar(), and TwMasterTransact().

int X12RtcWrite ( int  nv,
CONST uint8_t buff,
size_t  cnt 
)

Write to RTC registers.

Parameters:
nv Must be set to 1 when writing to non-volatile registers. In this case the routine will poll for write cycle completion before returning to the caller. Set to zero if writing to volatile registers.
buff This buffer must contain all bytes to be transfered to the RTC chip, including the register address.
cnt Number of valid bytes in the buffer.
Returns:
0 on success or -1 in case of an error.

Definition at line 207 of file x12rtc.c.

References I2C_SLA_RTC, NUT_WAIT_INFINITE, printf, putchar(), and TwMasterTransact().

int X12RtcGetClock ( struct _tm tm  ) 

Get date and time from an X12xx hardware clock.

Deprecated:
New applications must use NutRtcGetTime().
Parameters:
tm Points to a structure that receives the date and time information.
Returns:
0 on success or -1 in case of an error.

Definition at line 239 of file x12rtc.c.

References BCD2BIN, _tm::tm_hour, _tm::tm_mday, _tm::tm_min, _tm::tm_mon, _tm::tm_sec, _tm::tm_wday, _tm::tm_year, X12RTC_SC, and X12RtcReadRegs().

int X12RtcSetClock ( CONST struct _tm tm  ) 

Set an X12xx hardware clock.

Deprecated:
New applications must use NutRtcSetTime().
New time will be taken over at the beginning of the next second.

Parameters:
tm Points to a structure which contains the date and time information.
Returns:
0 on success or -1 in case of an error.

Definition at line 276 of file x12rtc.c.

References BIN2BCD, memset(), X12RTC_SC, and X12RtcWrite().

int X12RtcGetAlarm ( int  idx,
struct _tm tm,
int *  aflgs 
)

Get alarm date and time of an X12xx hardware clock.

Deprecated:
New applications must use NutRtcGetAlarm().
Parameters:
idx Zero based index. Two alarms are supported.
tm Points to a structure that receives the date and time information.
aflgs Points to an unsigned long that receives the enable flags.
Returns:
0 on success or -1 in case of an error.

Definition at line 320 of file x12rtc.c.

References BCD2BIN, memset(), RTC_ALARM_HOUR, RTC_ALARM_MDAY, RTC_ALARM_MINUTE, RTC_ALARM_MONTH, RTC_ALARM_SECOND, RTC_ALARM_WDAY, _tm::tm_hour, _tm::tm_mday, _tm::tm_min, _tm::tm_mon, _tm::tm_sec, _tm::tm_wday, X12RTC_DTA_EDT, X12RTC_DWA_EDW, X12RTC_HRA_EHR, X12RTC_MNA_EMN, X12RTC_MOA_EMO, X12RTC_SCA_ESC, and X12RtcReadRegs().

int X12RtcSetAlarm ( int  idx,
CONST struct _tm tm,
int  aflgs 
)

Set alarm of an X12xx hardware clock.

Deprecated:
New applications must use NutRtcSetAlarm().
Parameters:
idx Zero based index. Two alarms are supported.
tm Points to a structure which contains the date and time information. May be NULL to clear the alarm.
aflgs Each bit enables a specific comparision.
  • Bit 0: Seconds
  • Bit 1: Minutes
  • Bit 2: Hours
  • Bit 3: Day of month
  • Bit 4: Month
  • Bit 7: Day of week (Sunday is zero)
Returns:
0 on success or -1 in case of an error.

Definition at line 374 of file x12rtc.c.

References BIN2BCD, memset(), RTC_ALARM_HOUR, RTC_ALARM_MDAY, RTC_ALARM_MINUTE, RTC_ALARM_MONTH, RTC_ALARM_SECOND, RTC_ALARM_WDAY, X12RTC_DTA_EDT, X12RTC_DWA_EDW, X12RTC_HRA_EHR, X12RTC_MNA_EMN, X12RTC_MOA_EMO, X12RTC_SCA_ESC, and X12RtcWrite().

int X12RtcGetStatus ( uint32_t sflgs  ) 

Query RTC status flags.

Deprecated:
New applications must use NutRtcGetStatus().
Parameters:
sflgs Points to an unsigned long that receives the status flags.
  • Bit 0: Power fail.
  • Bit 5: Alarm 0 occured.
  • Bit 6: Alarm 1 occured.
Returns:
0 on success or -1 in case of an error.

Definition at line 415 of file x12rtc.c.

References X12RTC_SR, and X12RtcReadRegs().

int X12RtcClearStatus ( uint32_t  sflgs  ) 

Clear RTC status flags.

Deprecated:
New applications must use NutRtcClearStatus().
Parameters:
sflgs Status flags to clear.
Returns:
Always 0.

Definition at line 436 of file x12rtc.c.

int X12EepromRead ( unsigned int  addr,
void *  buff,
size_t  len 
)

Read contents from non-volatile EEPROM.

Parameters:
addr Start location.
buff Points to a buffer that receives the contents.
len Number of bytes to read.
Returns:
0 on success or -1 in case of an error.

Definition at line 463 of file x12rtc.c.

References I2C_SLA_EEPROM, NUT_WAIT_INFINITE, and TwMasterTransact().

int X12EepromWrite ( unsigned int  addr,
CONST void *  buff,
size_t  len 
)

Store buffer contents in non-volatile EEPROM.

The EEPROM of the X122x has a capacity of 512 bytes, while the X1286 is able to store 32 kBytes.

Parameters:
addr Storage start location.
buff Points to a buffer that contains the bytes to store.
len Number of valid bytes in the buffer.
Returns:
0 on success or -1 in case of an error.

Definition at line 488 of file x12rtc.c.

References CONST, EEPROM_PAGE_SIZE, free, I2C_SLA_EEPROM, malloc, memcpy(), NUT_WAIT_INFINITE, and TwMasterTransact().

int X12Init ( void   ) 

Initialize the interface to an Intersil X12xx hardware clock.

Deprecated:
New applications must use NutRegisterRtc().
Returns:
0 on success or -1 in case of an error.

Definition at line 546 of file x12rtc.c.

References NutSleep(), printf, TwInit(), X128xRTC_SSEC, X12RtcGetStatus(), and X12RtcReadRegs().


Variable Documentation

NUTRTC rtcX12x6

Initial value:

Definition at line 443 of file x12rtc.c.


© 2000-2007 by egnite Software GmbH - visit http://www.ethernut.de/