Skip to content

HausnerR/AVR-PCF8563

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

AVR PCF8563

This is C library for communication between PCF8563 and AVR uC. Written for Atmega88PA, but should work with other microprocessors without modifications (if it have hardware TWI/I2C interface).

It's implement almost all PCF features:

  • Date and time
  • Alarm
  • Clock out
  • Timer
  • Interrupt flags

Setup

Just copy library to your project and use it.

Functions are well named so I think long description are not required.

If you have any questions - feel free to ask me by mail: kuba [at] pachciarek [dot] pl

Small doc###

Pre: All constants are defined in header file. If something is not well described, look into PCF documentation. This library use standard Atmel TWI interface to communicate with PCF8563.

To initialize communication with PCF, use function:

PCF_Init();

You can initialize PCF with one or many interrupts enabled:

PCF_Init(PCF_ALARM_INTERRUPT_ENABLE | PCF_TIMER_INTERRUPT_ENABLE);

To set clock output use function:

PCF_SetClockOut(PCF_CLKOUT_1024HZ);

To set PCF date and time you need to create defined structure and pass it to function that send it to PCF:

PCF_DateTime dateTime;
dateTime.second = 43;
dateTime.minute = 59;
dateTime.hour = 20;
dateTime.day = 15;
dateTime.weekday = 6;
dateTime.month = 8;
dateTime.year = 2015;

PCF_SetDateTime(&dateTime);

Getting date and time information from PCF looks similar. Create structure and pass it to function to get data:

PCF_DateTime pcfDateTime;
PCF_GetDateTime(&pcfDateTime);

Setting and disabling timer:

PCF_SetTimer(PCF_TIMER_1HZ, 100); //Sets 1Hz ticks and counting to 100. Max 255
PCF_SetTimer(PCF_TIMER_DISABLED, 0); //Disables timer

Getting timer value:

uint8_t x = PCF_GetTimer();

Alarm settings looks like date time setting. Create structure, fill them and pass to function. PCF_DISABLE_ALARM makes given parameter "transparent". So in this example alarm turns on every day at 22:22:

PCF_Alarm pcfAlarm;
pcfAlarm.minute = 22;
pcfAlarm.hour = 22;
pcfAlarm.day = PCF_DISABLE_ALARM;
pcfAlarm.weekday = PCF_DISABLE_ALARM;
PCF_SetAlarm(&pcfAlarm);

Getting alarm data:

PCF_Alarm pcfAlarm;
PCF_GetAlarm(&pcfAlarm);

And if you are use PCF interrupts, use something like that to get information about interrupt source:

uint8_t flags = PCF_GetAndClearFlags();

//Alarm enabled
if (flags & PCF_ALARM_FLAG)
{
}

//Timer countdown end
if (flags & PCF_TIMER_FLAG)
{
}

About

C library for communication between PCF8563 and AVR uC

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages