Libs for using Nucleo STM32F411 periphery
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 QUADRATURE * | instance |
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:
-
tim Entsprechender Timer (Die Funktion wird bei der STM32F-Serie nur von Timer 1-5 unterstützt). mode Encoder 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_PORT Capture Input 1 Port Entsprechend den Port z.B. A,B,C,D,E des ausgewählten Eingangs aus der Tabelle entnehmen. CI1_PIN Capture Input 1 Pin Entsprechend den Pin zu dem ausgewählten Eingang aus der Tabelle entnehmen. CI1_POL Capture Input 1 Polarität Invertiert den Eingang CI1. Standartwert = steigende Flanke CI2_PORT Capture Input 2 Port Entsprechend den Port z.B. A,B,C,D,E des ausgewählten Eingangs aus der Tabelle entnehmen. CI2_PIN Capture Input 2 Pin Entsprechend den Pin zu dem ausgewählten Eingang aus der Tabelle entnehmen. CI2_POL Capture Input 2 Polarität Invertiert den Eingang CI2. Standartwert = steigende Flanke - 1: Zählt hoch/runter auf CI2-Flanke unter Bedingung der Spannung an CI1
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:
-
port Portname 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:
-
port GPIO Port Port der geändert werden soll pin GPIO Pin Pin der geändert werden soll tim Timer 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_METHODE Adresse 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:
-
pre Prescaler Standartwert = (0x0000) + 1. Von 0x0000 bis 0xFFFF möglich arr Auto 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.
Generated on Wed Jul 13 2022 17:06:12 by 1.7.2