PEC Kurzreferenz (vereinfachter Auszug)

PEC steht für Portable Embedded Classes und ist eine Klassenbibliothek für Mikrocontrolleranwendungen.

Alle für den Anwendungsentwickler vorgesehenen Klassen und Templates beginnen mit dem Präfix Pec… Die ausschließliche Verwendung dieser Bibliotheksbausteine gewährleistet die Portabilität der erstellten Anwendung. Die folgende Kurzreferenz zeigt die wichtigsten PEC-Bibliotheksbausteine und deren wesentlichen Funktionen. Eine vollständige Dokumentation alles PEC Bausteine lässt sich aus dem jeweiligen Klassenmodell automatisch generieren.

Die Verwendung eines PEC-Bibliotheksbausteins folgt immer folgendem Muster:

  1. für jeden Systembaustein eine eigene Klasse anlegen
  2. einen geeigneten PEC-Bibliotheksbaustein suchen und zuweisen
  3. die konkret verwendete Hardware zuweisen oder konfigurieren.
  4. eine Instanz des Systembausteins erzeugen

Beispiel1: Eine LED für die Fehleranzeige ist an Pin B0 vorgesehen.

  1. Name des Systembausteins festlegen und Klasse anlegen: ErrorLED
  2. die Bibliothek bietet für solche Anwendungsfälle das High-Level Klassentemplate PecLed an, diese zuweisen
  3. das Template muss mit der Ressource pinB0 ergänzt werden
  4. die Anwendung braucht eine Instanz des Bausteins zum Beispiel als Aggregation in der Klasse Controller

Beispiel2: Für die Konfiguration des eingebetteten Systems ist ein RS232-Terminal an UART0 des Controllers vorgeshen.

  1. Name des Systembausteins festlegen und Klasse anlegen: Terminal
  2. die Bibliothek bietet für solche Anwendungsfälle das Klassentemplate PecUart an, diese zuweisen
  3. das Template muss mit der Ressource uart0xxx ergänzt werden
  4. die Anwendung braucht eine Instanz des Bausteins zum Beispiel als Aggregation in der Klasse Controller

BEACHTE: Die Bezeichner der verwendeten Hardware sind Controller-spezifisch!

PecPinInput «template» benötigt als Parameter pinXn, [pullUp]
bool getState()     // lese aktuellen Zustand vom Pin 0/1
PecPinOutput «template» benötigt als Parameter pinXn
bool getState()     // lese aktuellen Zustand vom Pin 0/1
void setState(bool) // setze neuen Zustand des Pin 0/1
void on()           // Pin anschalten 1
void off()          // Pin ausschalten 0
void toggle()       // Pin umschalten 0->1 / 1->0
PecPinInterrupt «template» benötigt als Parameter pinXn, [pullUp]
bool getState()           // lese aktuellen Zustand vom Pin 0/1
virtual void onPinEvent() // zum Überschreiben, Funktion zur Ereignisbehandlung
pinXn «parameter» für Templates
#define %port% X
#define %pin% n
pinPullUp «parameter» für Templates
#define %pinLevel% 1!
PecPinOutputTimed «template» benötigt Parameter pinXn
void on(delay)     // um x Millisek. verzögertes anschalten (10 ms Raster)
void off(delay)    // um x Millisek. verzögertes ausschalten (10 ms Raster)
void toggle(delay) // um x Millisek. verzögertes umschalten (10 ms Raster)
void pulse(delay,pulseMs)  // ______/¯¯¯¯¯¯¯\
void pulse(delay,hiMs,loMs,count) // ______/¯¯¯¯¯¯¯\_______/¯¯¯¯¯¯¯\ ...
bool isBusy()      // liefert Status, true = noch beschäftigt
PecLED «template» benötigt Parameter pinXn
void on()               // LED anschalten
void off()              // LED ausschalten
void toggle()           // LED umschalteten
void flash()            // LED blitzt kurz auf
void blink(code)        // schaltet Blinkcode an code=3 |||_|||_|||_... 
uint8_t getBlinkCode()  // liefert den aktuellen Blinkcode
void nextBlinkCode()    // aktueller Blinkcode +1 
void slowBlink()        // langsam blinken ... |__|__|__|__...
void flicker()          // schnell blinken ... ||||||||||||... 
void dim()              // um 50% gedimmt leuchten
PecButtonClickAndHold «template» benötigt Parameter pinXn
bool isPressed()            // liefert den aktuellen Zustand des Button true=gedrückt
virtual void onClick()      // zum Überschreiben, Ereignisfunktion bei Klick
virtual void onHoldStart()  // zum Überschreiben,  Ereignis bei Beginn Halten
virtual void onHolding()    // zum Überschreiben,  Ereignis alle 10ms bei Halten
virtual void onHoldEnd()    // zum Überschreiben,  Ereignis bei Festhalten Ende 

PecUart «template» benötigt Parameter baudrateXXX, uartN

void writeByte(byte)          // sendet ein 8 Bit Wert (Byte)
void writeString("String")    // sendet einen Text
bool dataAviable()            // prüft ob Daten da sind
uint8_t readByte()            // liest ein Byte
void write(WORD)              // sendet einen 16 Bitwert
void write(DWORD)             // sendet einen 32 Bit Wert
void writeData(buffer,count)  // sendet n Bytes aus einem Buffer

uartEventRx «template» Erweiterung für das Template PecUart

void onEventRx(data)  // Empfangsereignis
                      // muss überschrieben werden

baudrateXXXX «parameter» für das Template PecUart

#define %baud% xxx
PecAdcSingle «template» benötigt Parameter adcX, resolutionX, channelN,
unsigned int getValue()   // liefert den aktuellen Analogwert
PecAdcChannel «template» benötigt Parameter adcX, resolutionX, channelN,
unsigned int getValue()   // liefert den letzten Analogwert des Kanals
adcX «parameter» wird für PecAdc… benötigt
#define %adc% X  // 0, 1, 2, ...
channelN «parameter» wird für PecAdc… benötigt
#define %channel% N  // 0, 1, 2, ...
adcResolutionX «parameter» wird für PecAdc… benötigt
#define %resolution% X  // 8, 10, 12
PecTimer «template» benötigt Parameter timerN
// grundlegendes Klassentemplate für benutzerdefinierte Timer
void configHz(hz)       // initialisiert und startet den Timer mit x Hz 
void configMs(ms)       // initialisiert und startet den Timer mit x mS
void configUs(us)       // initialisiert und startet den Timer mit x µS
void stop()             // hält den Timer an
virtual onTimerEvent()  // zum überschreiben, Timer-Event-Funktion
// bei Bedarf ist auch die Verarbeitung direkt im Interrupt möglich
PecCounterMs «template» benötigt Parameter timerN
// Stoppuhr-Template, realisiert Zeit-Messungen in Millisekunden
void start()            // startet die Stoppuhr bei 0
unsigned int stop()     // hält die Stoppuhr an und liefert den gemessenen Wert
unsigned int getCount() // liefert den aktuellen Wert, Stoppuhr läuft weiter
unsigned int reStart()  // startet die Stoppuhr neu bei 0, liefert akt. Wert
PecCounterUs «template» benötigt Parameter timerN
// Stoppuhr-Template, realisiert Zeit-Messungen in Mikrosekunden
void start()            // startet die Stoppuhr bei 0
unsigned int stop()     // hält die Stoppuhr an und liefert den gemessenen Wert
unsigned int getCount() // liefert den aktuellen Wert, Stoppuhr läuft weiter
unsigned int reStart()  // startet die Stoppuhr neu bei 0, liefert akt. Wert
PecPwmChannel «template» benötigt Parameter timerN und channelX
void configHz()     // konfiguriert die PWM-Frequenz
void setDuty(duty)  // setzt den pseudo-Analogwert 0...1000
void start()        // startet die PWM Ausgabe 
void stop()         // hält die PWM Ausgabe an       
PecFrequencyChannel «template» benötigt Para. timerN und channelX
void setHz(hz)     // konfiguriert die Ausgabefrequenz
void on()          // startet die Frequenzausgabe
void off()         // hält die Frequenzausgabe an  
timerN «parameter» für PecTimer…
#define %timer% n // 0, 1, 2, ...
channelX «parameter» für Pec…Channel
#define %channel% X  // A, B, C, ...
PecSimpleSound «template» benötigt Parameter timerN, channelX
void play("SoundCode")  // spielt die im String codierte Tonfolge (Melodie)
void stop()             // hält die aktuelle Tonausgabe an
bool isPlaying()        // prüft ob noch eine Tonausgabe läuft
// --------------------------------------------------------------
// Soundcodes: 
// 	Ton = Buchstabe, Großbuchstabe höhere Oktave
//		cdefgah = ton
//		c´ = cis (des) =w
//		e´ = es (dis)  =x
//		f´ = fis (ges) =y
//		a´ = as (gis)  =z
//		b  = (ais)
//	Ton = Buchstabe, Großbuchstabe höhere Oktave
//		k...v = c...h inclusive cis,es,fis,as,b
//	/  ab jetzt 1 oktave höher
//	\  ab jetzt 1 oktave tiefer
//	,  kurze pause 1/4 Notenlänge
//	.  lange pause 1/1 Notenlänge
//	Standard = 1/8-Note
//	^  ab jetzt schneller 2x  (z.B. 1/16 Note)
//	v  ab jetzt langsamer 1/2 (z.B. 1/4 Note)
//	Leerzeichen = keine Bedeutung und keine Auswirkung
//-----------------------------------------------------------------
// Beispiel: ein kleines Kinderlied:
speaker.play( "v d,e,f,g,aa,aa, h,h,h,h,aa,.. h,h,h,h,aa,.. g,g,g,g,ff,ff, a,a,a,a,dd" );

Zurück