Libs for using Nucleo STM32F411 periphery

Embed: (wiki syntax)

« Back to documentation index

QUADRATURE Class Reference

#include <QUADRATURE.h>

Public Member Functions

 QUADRATURE (int tim, int mode, char _CI1_PORT, int _CI1_PIN, int CI1_POL, char _CI2_PORT, int _CI2_PIN, int CI2_POL)
 ~QUADRATURE ()
void startTIM ()
void stopTIM ()
void setUpRes ()
void setDownRes ()
unsigned int getTIM ()
signed short getCARRY ()
void setTIM (int pre, int arr)
void setGPIO (char port, int pin, int tim)
void UPDATE_HANDLER (void)
void setIRQ_METHODE (void(*IRQ_HANDLER_METHODE)(void))

Protected Member Functions

void GPIOchoose (char port)

Static Protected Member Functions

static void _UPDATE_HANDLER (void)
 Funktion zum Zuweisen der ISR zum Handler der erstellten Instanz.

Protected Attributes

char CI1_PORT
 Caputure Input 1 Portname.
char CI2_PORT
 Caputure Input 2 Portname.
int CI1_PIN
 Caputure Input 1 Pin.
int CI2_PIN
 Caputure Input 2 Pin.
GPIO_TypeDef * portpo
 Pointer zum zuletzt definierten GPIO.
TIM_TypeDef * tipo
 Pointer zum aktuell definierten Timer.
IRQn_Type temp_ITM
 Pointer zum aktuell definierten Interrupt Handler.
bool extfct
 Freigabe zur Verwendung externer Funktionen.
void(* IRQ_HANDLER_EXTERN )(void)
 Externe Funktion bei Timer Interrupt aufrufen.
signed short TIMERCARRY
 Timer Über und Unterlauf Zähler (Wenn Unterlauf wird decrementiert, wenn Überlauf wird incrementiert)

Static Protected Attributes

static QUADRATUREinstance
 Pointer zur Adresse der erstellte Instanz.

Detailed Description

Die Klasse kann aus den Timern 1 bis 5 verschiedene Encoder generieren. Es kann zwischen verschiendenen Encodermodis gewählt werden. Für den STM32 gibt es für die einzelnen Timer verschiedene Kanäle die zu wählen sind:

Eingang Timer 1 Timer 2 Timer 3 Timer 4 Timer 5
CI 1 PA8 PA0 PA6 PB6 PA0
CI 1 PE9 PA5 PB4 PD12 -
CI 1 - PA15 PC6 - -
CI 2 PA9 PA1 PB5 PD13 PA1
CI 2 PE11 PB3 PA7 PB7 -
CI 2 - - PC7 - -

Achtung! Es können Doppelbelegungen vorkommen! Bitte vorher prüfen, ob der Pin nicht schon verwendet wird. Zudem kann es passieren das mehrfach der gleiche Timer genutzt wird. Mit einer Neudeklaration des Timers wird dieser Überschrieben mit den zuletzt verwendeten Parametern. Zudem gibt es einen Interrupt Eventhandler der bei Über- und Unterlauf des Timers eine Timercarry Variable hoch bzw. runter zählt. So kann man bei Frequenzmessungen den Überlauf mit betrachten.

 #include "mbed.h"
 #include "QUADRATURE.h"

 int Event_Routine(){ .... }                          // Irgendeine Funktion die bei Timerüberlauf aufgerufen wird              

 int main() {
    
     QUADRATURE  encoder(1, 3, 'A', 8, 0, 'A', 9, 0); // Instanz mit Timer 1, Modus 3,
                                                      // CI1: Port A, CI1: Pin 8, rising edge
                                                      // CI2: Port A, CI2: Pin 9, rising edge
 
     encoder.setDownRes();                            // Setzt die Pull Down Widerstände
 
     encoder.startTIM();                              // Startet den Timer

     encoder.setIRQ_METHODE(Event_Routine);           // Bei Timerüberlauf wird diese Routine aufgerufen

      while(1){
        printf("Value: %i\r\n", encoder.getTIM());    // Ausgabe des aktuellen Timerwerts als Integer
        printf("Carry: %i\r\n", encoder.getCARRY());  // Ausgabe des aktuellen Timerüberlaufs als signed short 
      }
    }

Definition at line 98 of file QUADRATURE.h.


Constructor & Destructor Documentation

QUADRATURE ( int  tim,
int  mode,
char  _CI1_PORT,
int  _CI1_PIN,
int  CI1_POL,
char  _CI2_PORT,
int  _CI2_PIN,
int  CI2_POL 
)

Konstruktor zum Erstellen einer Instanz für einen bestimmten Timer und die Input Pins. Nach dem Erstellen der Instanz sollte der Timer nicht für andere Zwecke verwendet werden. Nach dem Erstellen sind die Encoder voll einsatzbereit und kann mit der "startTIM"-Funktion gestartet werden.

Parameters:
timEntsprechender Timer (Die Funktion wird bei der STM32F-Serie nur von Timer 1-5 unterstützt).
modeEncoder Modus

  • 1: Zählt hoch/runter auf CI2-Flanke unter Bedingung der Spannung an CI1
  • 2: Zählt hoch/runter auf CI1-Flanke unter Bedingung der Spannung an CI2
  • 3: Zählt hoch/runter auf CI1-Flanke und CI2-Flanke unter Bedinung der Spannung an den jeweiligen anderen Eingang
CI1_PORTCapture Input 1 Port Entsprechend den Port z.B. A,B,C,D,E des ausgewählten Eingangs aus der Tabelle entnehmen.
CI1_PINCapture Input 1 Pin Entsprechend den Pin zu dem ausgewählten Eingang aus der Tabelle entnehmen.
CI1_POLCapture Input 1 Polarität Invertiert den Eingang CI1. Standartwert = steigende Flanke
CI2_PORTCapture Input 2 Port Entsprechend den Port z.B. A,B,C,D,E des ausgewählten Eingangs aus der Tabelle entnehmen.
CI2_PINCapture Input 2 Pin Entsprechend den Pin zu dem ausgewählten Eingang aus der Tabelle entnehmen.
CI2_POLCapture Input 2 Polarität Invertiert den Eingang CI2. Standartwert = steigende Flanke

Definition at line 11 of file QUADRATURE.cpp.

~QUADRATURE (  )

Destruktor der Klasse

Definition at line 121 of file QUADRATURE.h.


Member Function Documentation

void _UPDATE_HANDLER ( void   ) [static, protected]

Funktion zum Zuweisen der ISR zum Handler der erstellten Instanz.

Definition at line 221 of file QUADRATURE.cpp.

signed short getCARRY (  )

Gibt aktuellen Über bzw Unterlaufwert als signed short zurück

Definition at line 151 of file QUADRATURE.cpp.

unsigned int getTIM (  )

Gibt aktuellen Timerwert als Integer zurück

Definition at line 147 of file QUADRATURE.cpp.

void GPIOchoose ( char  port ) [protected]

Wählt das passende GPIO register aus und schreibt es in den Pointer portpo

Parameters:
portPortname Welcher Port gewählt werden soll z.B. A,B,...

Definition at line 188 of file QUADRATURE.cpp.

void setDownRes (  )

Setzt die Pulldown Widerstände beider CI Eingänge

Definition at line 169 of file QUADRATURE.cpp.

void setGPIO ( char  port,
int  pin,
int  tim 
)

Setzt den entsprechenden GPIO auf die Alternative Funktion für den Timer Eingang.

Parameters:
portGPIO Port Port der geändert werden soll
pinGPIO Pin Pin der geändert werden soll
timTimer Für die Auswahl zwischen den Alternativen Funktionen notwendig

Definition at line 87 of file QUADRATURE.cpp.

void setIRQ_METHODE ( void(*)(void)  IRQ_HANDLER_METHODE )

Setzt eine weitere Routine die verwendet werden kann, wenn der Timer Interrupthandler aufgerufen wird.

Parameters:
IRQ_HANDLER_METHODEAdresse zur weiteren Routine

Definition at line 178 of file QUADRATURE.cpp.

void setTIM ( int  pre,
int  arr 
)

Setzt für den Timer den Prescaler und das Autoload register

Parameters:
prePrescaler Standartwert = (0x0000) + 1. Von 0x0000 bis 0xFFFF möglich
arrAuto Reload Bei diesem Wert beginnt der Timer wieder bei 0x0000. Standartwert = 0xFFFF

Definition at line 155 of file QUADRATURE.cpp.

void setUpRes (  )

Setzt die Pullup Widerstände beider CI Eingänge

Definition at line 160 of file QUADRATURE.cpp.

void startTIM (  )

Startet den Timer und den IRQ Handler.

Definition at line 137 of file QUADRATURE.cpp.

void stopTIM (  )

Stoppt den Timer und den IRQ Handler.

Definition at line 142 of file QUADRATURE.cpp.

void UPDATE_HANDLER ( void   )

Interrupt Routine bei Überlauf bzw. Unterlauf des Timers.

Definition at line 116 of file QUADRATURE.cpp.


Field Documentation

int CI1_PIN [protected]

Caputure Input 1 Pin.

Definition at line 173 of file QUADRATURE.h.

char CI1_PORT [protected]

Caputure Input 1 Portname.

Definition at line 169 of file QUADRATURE.h.

int CI2_PIN [protected]

Caputure Input 2 Pin.

Definition at line 175 of file QUADRATURE.h.

char CI2_PORT [protected]

Caputure Input 2 Portname.

Definition at line 171 of file QUADRATURE.h.

bool extfct [protected]

Freigabe zur Verwendung externer Funktionen.

Definition at line 183 of file QUADRATURE.h.

QUADRATURE * instance [static, protected]

Pointer zur Adresse der erstellte Instanz.

Definition at line 192 of file QUADRATURE.h.

void(* IRQ_HANDLER_EXTERN)(void) [protected]

Externe Funktion bei Timer Interrupt aufrufen.

Definition at line 185 of file QUADRATURE.h.

GPIO_TypeDef* portpo [protected]

Pointer zum zuletzt definierten GPIO.

Definition at line 177 of file QUADRATURE.h.

IRQn_Type temp_ITM [protected]

Pointer zum aktuell definierten Interrupt Handler.

Definition at line 181 of file QUADRATURE.h.

signed short TIMERCARRY [protected]

Timer Über und Unterlauf Zähler (Wenn Unterlauf wird decrementiert, wenn Überlauf wird incrementiert)

Definition at line 188 of file QUADRATURE.h.

TIM_TypeDef* tipo [protected]

Pointer zum aktuell definierten Timer.

Definition at line 179 of file QUADRATURE.h.