Simon Liebelt / Mbed 2 deprecated BewaesserungsanlageTCGensingen_sicher

Dependencies:   mbed

RTC.cpp

Committer:
SimonLie
Date:
2017-03-28
Revision:
0:34f429428d45

File content as of revision 0:34f429428d45:

#include "mbed.h"
#include "RTC.h"

/* Pinfunktionen */
I2C i2cRTC(PB_9,PB_8);

/* Funktionen */
void vfStopRTCOszi(){
    char data[2];
    data[0] = 0x00;
    data[1] = 0x80;
    i2cRTC.write(nRTCADRESS_W, data, 2);
    }
    
void vfStartAndInitRTC(unsigned char bSeconds, 
                       unsigned char bMinutes, 
                       unsigned char bHours, 
                       unsigned char bDay, 
                       unsigned char bDate,
                       unsigned char bMonth,
                       unsigned char bYear,
                       unsigned char bControl){
    char acCalendar[9];
    acCalendar[0] = 0x00;
    acCalendar[1] = cfDezToBcd(bSeconds);
    acCalendar[2] = cfDezToBcd(bMinutes);
    acCalendar[3] = cfDezToBcd(bHours);
    acCalendar[4] = cfDezToBcd(bDay);
    acCalendar[5] = cfDezToBcd(bDate);
    acCalendar[6] = cfDezToBcd(bMonth);
    acCalendar[7] = cfDezToBcd(bYear);
    acCalendar[8] = cfDezToBcd(bControl);    
    i2cRTC.write(nRTCADRESS_W, acCalendar, 9);                           
    }
void vfSetTime(unsigned char bSeconds,
               unsigned char bMinutes,
               unsigned char bHours){
    char acTime[4];
    acTime[0] = 0x00;
    acTime[1] = cfDezToBcd(bSeconds);               
    acTime[2] = cfDezToBcd(bMinutes);
    acTime[3] = cfDezToBcd(bHours);
    i2cRTC.write(nRTCADRESS_W, acTime, 4);
    }    

    
void vfGetTime(unsigned char *bSeconds,
               unsigned char *bMinutes,
               unsigned char *bHours){
    char time[1];
    char data[3];
    time[0] = 0x00;     //Adresse des Sekunden-Registers
    i2cRTC.write(nRTCADRESS_W, time, 1);
    i2cRTC.read(nRTCADRESS_R, data, 3);
    *bSeconds = bfBcdToDez((unsigned char)data[0]);
    *bMinutes = bfBcdToDez((unsigned char)data[1]);
    *bHours = bfBcdToDez((unsigned char)data[2]);                   
    }
    
unsigned char bfBcdToDez(unsigned char bBcdValue){
    unsigned char bDezValue = 0;
    bDezValue = bBcdValue & 0x0F;
    bDezValue = bDezValue + ((bBcdValue >> 4) * 10);
    return bDezValue;
    }
    
char cfDezToBcd(unsigned char bDezValue){
    char cBcdValue = 0;
    cBcdValue = bDezValue % 10;
    cBcdValue = cBcdValue | (((bDezValue - (bDezValue%10)) / 10) << 4);
    return cBcdValue;
    }