* * $Log: x12rtc.c,v $ * 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. * * *
#include <cfg/os.h>
#include <dev/twif.h>
#include <sys/event.h>
#include <sys/timer.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <dev/x12rtc.h>
Defines | |
#define | EEPROM_PAGE_SIZE 64 |
#define | I2C_SLA_EEPROM 0x57 |
#define | I2C_SLA_RTC 0x6F |
Functions | |
int | X12EepromRead (u_int addr, void *buff, size_t len) |
Read contents from non-volatile EEPROM. | |
int | X12EepromWrite (u_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. | |
int | X12RtcClearStatus (u_long sflgs) |
Clear RTC status flags. | |
int | X12RtcGetAlarm (int idx, struct _tm *tm, int *aflgs) |
Get alarm date and time of an X12xx hardware clock. | |
int | X12RtcGetClock (struct _tm *tm) |
Get date and time from an X12xx hardware clock. | |
int | X12RtcGetStatus (u_long *sflgs) |
Query RTC status flags. | |
int | X12RtcReadRegs (u_char reg, u_char *buff, size_t cnt) |
Read RTC registers. | |
int | X12RtcSetAlarm (int idx, CONST struct _tm *tm, int aflgs) |
Set alarm of an X12xx hardware clock. | |
int | X12RtcSetClock (CONST struct _tm *tm) |
Set an X12xx hardware clock. | |
int | X12RtcWrite (int nv, CONST u_char *buff, size_t cnt) |
Write to RTC registers. | |
Variables | |
NUTRTC | rtcX12x6 |
int X12EepromRead | ( | u_int | addr, | |
void * | buff, | |||
size_t | len | |||
) |
Read contents from non-volatile EEPROM.
addr | Start location. | |
buff | Points to a buffer that receives the contents. | |
len | Number of bytes to read. |
int X12EepromWrite | ( | u_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.
addr | Storage start location. | |
buff | Points to a buffer that contains the bytes to store. | |
len | Number of valid bytes in the buffer. |
int X12Init | ( | void | ) |
Initialize the interface to an Intersil X12xx hardware clock.
int X12RtcClearStatus | ( | u_long | sflgs | ) |
Clear RTC status flags.
sflgs | Status flags to clear. |
int X12RtcGetAlarm | ( | int | idx, | |
struct _tm * | tm, | |||
int * | aflgs | |||
) |
Get alarm date and time of an X12xx hardware clock.
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. |
int X12RtcGetClock | ( | struct _tm * | tm | ) |
Get date and time from an X12xx hardware clock.
tm | Points to a structure that receives the date and time information. |
int X12RtcGetStatus | ( | u_long * | sflgs | ) |
Query RTC status flags.
sflgs | Points to an unsigned long that receives the status flags.
|
Read RTC registers.
reg | The first register to read. | |
buff | Pointer to a buffer that receives the register contents. | |
cnt | The number of registers to read. |
int X12RtcSetAlarm | ( | int | idx, | |
CONST struct _tm * | tm, | |||
int | aflgs | |||
) |
Set alarm of an X12xx hardware clock.
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.
|
int X12RtcSetClock | ( | CONST struct _tm * | tm | ) |
Set an X12xx hardware clock.
tm | Points to a structure which contains the date and time information. |
int X12RtcWrite | ( | int | nv, | |
CONST u_char * | buff, | |||
size_t | cnt | |||
) |
Write to RTC registers.
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. |
NUTRTC rtcX12x6 |
Initial value: