Functions and formatted printing of time and date for RTC8563

Dependencies:   mbed

RTC Klassendeklaration

Inhalt

Die folgende Überführung aus der strukturierten Programmierung in C in ein Klassendesign der objektorientierten Programmierung in C++ wurde mit dem Programm StarUML vorgenommen, wobei zwei Unzulänglichkeiten aufgetreten sind: void vor dem Konstruktor und der Aufruf des Konstruktors in der Klasse I2C wurd nicht richtig abgebildet.

Die folgende Abbildung zeigt das Klassendiagramm in UML (Unified Modeling Language), wobei die I2C Klasse nur der vollständigkeit halber hinzugefügt wurde, da sie in der MBED-Bibliothek enthalten ist: /media/uploads/bulmecisco/class_rtc8563.jpg Daraus wurde für den PCF8563 die folgende Header-Datei RTC8563.h erstellt, wobei

  • in Zeile 17 und 18 void vor dem Konstruktor zu löschen ist:

//
//  @ Project : RTC8563
//  @ File Name : RTC8563.h
//  @ Date : 06.04.2015
//  @ Author : Franz Pucher
//  @ Copyright : pe@bulme.at
//
#include "mbed.h"
#include "const.h"

#if !defined(_RTC8563_H)
#define _RTC8563_H

class RTC8563
{
public:
    RTC8563();          // delete void
    RTC8563(PinName sda, PinName scl);
    char rtc_read(char address);
    void rtc_write(char address, char value);
    void rtc_init();
    void rtc_alarm();
protected:
    I2C i2c;
};

#endif  //_RTC8563_H

... und die Source-Datei RTC8563.cpp noch um die folgenden Unzulänglichkeiten bereinigt wurde:

  • in Zeile 14 und 18 ist void vor dem Konstruktor zu löschen
  • der Aufruf des Konstruktors der Klasse (I2C) hinzuzufügen:
    • in Zeile 14 : i2c(p28, p27) - Defaultkonstruktor mit fixen Pins 27 und 28
    • in Zeile 18 : i2c(sda, scl) - parametrisierten Konstruktor mit zu definierenden Pins sda und scl des I2C

//
//  @ Project : RTC8563
//  @ File Name : RTC8563.cpp
//  @ Date : 06.04.2015
//  @ Author : Franz Pucher
//  @ Copyright : pe@bulme.at
//

#include "mbed.h"
#include "const.h"

#include "RTC8563.h"

RTC8563::RTC8563() : i2c(p28, p27)  // delete void and add call to base constructor 
{
}

RTC8563::RTC8563(PinName sda, PinName scl) : i2c(sda, scl) 
{
}

char RTC8563::rtc_read(char address)
{
}

void RTC8563::rtc_write(char address, char value)
{
}

void RTC8563::rtc_init()
{
}

void RTC8563::rtc_alarm()
{
}

Beschreibung siehe OOP Begriffe in Klassen in C++.

RTC Methodendefinition


All wikipages