rtc1308.h
64 lines
| 2.2 KiB
| text/x-c
|
CLexer
|
r132 | /* | ||
* rtc1308.h | ||||
* | ||||
* Created on: Nov 4, 2014 | ||||
* Author: Alan Aguilar Sologuren | ||||
*/ | ||||
#ifndef RTC1308_H_ | ||||
#define RTC1308_H_ | ||||
#include <Arduino.h> | ||||
#include <pins_arduino.h> | ||||
|
r140 | #include <Wire.h> | ||
#include <Time.h> | ||||
|
r132 | #include <te_structs.h> | ||
extern void ISR_gnss_pps(void); | ||||
#define DS1308_CTRL_ID 0x68 | ||||
#define DS1308_RAM_BASE 0x08 /*!< Direccion base de la memoria RAM */ | ||||
#define DS1308_RAM_MAX 0x37 /*!< Direccion del final de la RAM */ | ||||
#define DS1308_RAM_REGS (DS1308_RAM_MAX - DS1308_RAM_BASE + 1) | ||||
#define DS1308_SEC_ADD 0x00 /*!< Direccion de registro de configuracion de segundos */ | ||||
#define DS1308_MIN_ADD 0x01 /*!< Direccion de registro de configuracion de minutos */ | ||||
#define DS1308_HOU_ADD 0x02 /*!< Direccion de registro de configuracion de horas */ | ||||
#define DS1308_DOW_ADD 0x03 /*!< Direccion de registro de configuracion de dia de la semana */ | ||||
#define DS1308_DAT_ADD 0x04 /*!< Direccion de registro de configuracion de dia del mes */ | ||||
#define DS1308_MON_ADD 0x05 /*!< Direccion de registro de configuracion de mes */ | ||||
#define DS1308_YEA_ADD 0x06 /*!< Direccion de registro de configuracion de ahno */ | ||||
#define DS1308_CTL_ADD 0x07 /*!< Direccion de registro de control */ | ||||
#define OUT 7 /*!< Bit 7 en DS1308_CTL_ADD */ | ||||
#define ECLK 6 /*!< Bit 6 en DS1308_CTL_ADD */ | ||||
#define OSF 5 /*!< Bit 5 en DS1308_CTL_ADD */ | ||||
#define SQWE 4 /*!< Bit 4 en DS1308_CTL_ADD */ | ||||
#define LOS 3 /*!< Bit 3 en DS1308_CTL_ADD */ | ||||
#define BBCLK 2 /*!< Bit 2 en DS1308_CTL_ADD */ | ||||
#define RS1 1 /*!< Bit 1 en DS1308_CTL_ADD */ | ||||
#define RS0 0 /*!< Bit 0 en DS1308_CTL_ADD */ | ||||
//pin ports | ||||
#define CLKIN 38 /*!< internal PPS output PD7 AVR <> 38 ARDUINO MEGA */ | ||||
#define PPS 0 /*|< GNSS receptor PPS signal interrupt int0, port 2 (Arduino i/o), pe4 (avr i/o) */ | ||||
|
r196 | uint8_t te_rtc_write_reg(uint8_t regaddr, uint8_t *ptrvalues, uint8_t nregs); | ||
uint8_t te_rtc_read_reg(uint8_t regaddr, uint8_t *ptrvalues, uint8_t nregs); | ||||
|
r132 | |||
|
r196 | bool te_rtc_initialization(void); | ||
bool te_rtc_configure(rtc_config_struct &rtc); | ||||
bool te_rtc_activate_pps(bool actv); | ||||
bool te_rtc_set_date_time(gnss_precise_time >); | ||||
bool te_rtc_read_date_time(gnss_precise_time >); | ||||
|
r132 | |||
|
r196 | // TODO a utils | ||
inline uint8_t dec2bcd(uint8_t val); | ||||
inline uint8_t bcd2dec(uint8_t val); | ||||
|
r132 | |||
#endif /* RTC1308_H_ */ | ||||