FSST - Hardwarenahe Programmierung

RTC Klassendeklaration

Klassendesign PCF8563

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/fpucher/pcf8563_uml_class.jpg Daraus wurde für den PCF8563 die folgende Header-Datei PCF8563.h erstellt, wobei

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

//
//  Generated by StarUML(tm) C++ Add-In
//
//  @ Project : RTC Date Time Clock
//  @ File Name : PCF8563.h
//  @ Date : 14.03.2016
//  @ Author : Franz Pucher
//

#if !defined(_PCF8563_H)
#define _PCF8563_H


class PCF8563 {
public:
	PCF8563();
	PCF8563(PinName sda, PinName scl);
	char read(char address);
	void write(char address, char value);
	void init();
	void alarm();
protected:
	I2C i2c;
private:
	void error();
};
#endif  //_PCF8563_H

... und die Source-Datei PCF8563.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 : PCF8563
//  @ File Name : PCF8563.cpp
//  @ Date : 06.04.2015
//  @ Author : Franz Pucher
//  @ Copyright : pe@bulme.at
//

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

#include "PCF8563.h"

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

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

char PCF8563::read(char address)
{
}

void PCF8563::write(char address, char value)
{
}

void PCF8563::init()
{
}

void PCF8563::alarm()
{
}

void PCF8563::error() 
{
}

Beschreibung siehe OOP Begriffe in Klassen in C++.

RTC Methodendefinition


All wikipages