/** @file encoder.h * @date 2014-12-04 * @author Frank Klee * @brief Headerdatei Drehencoder Library * * Basisroutinen zum Abfragen eines Drehencoders mittels Polling. * Quelle: https://www.mikrocontroller.net/articles/Drehgeber * * @brief Formatierungen und Umbenennungen der Funktionen * @author Tom, DL7BJ * @date 2023-03-23 */ #ifndef ENCODER_H_ #define ENCODER_H_ // Art des Drehencoders definieren // #define SingleStep // #define TwoStep #define TwoStep ///< Art des Drehencoders #define ENC_A_PORT PORTB ///< port for line A #define ENC_A_PIN PB1 ///< pin for line A #define ENC_B_PORT PORTB ///< port for line B #define ENC_B_PIN PB0 ///< pin for line B #define ENC_T_PORT PORTB ///< port for button #define ENC_T_PIN PB2 ///< pin for button #define DDR(x) (*(&x-1)) ///< Makro Datenrichtungsregister #define Port(x) (*(&x)) ///< Makro Port #define PIN(x) (*(&x-2)) ///< Makro Pin #define PHASE_A PIN(ENC_A_PORT) & (1<<ENC_A_PIN) ///< Makro für Encoder PHASE A #define PHASE_B PIN(ENC_B_PORT) & (1<<ENC_B_PIN) ///< Makro für Encoder PHASE B #define BUTTONPRESSED (!(PIN(ENC_T_PORT) & (1<<ENC_T_PIN))) ///< Makro für Taster des Encoders #define BUTTON_DEBOUNCETIME_MS 30 ///< Entprellzeit Taster #define BUTTON_PRESSEDLONG_MS 250 ///< Definition langer Tastendruck typedef enum EButtonPressedState { ButtonPressed_Unpressed, ///< kein Taster betötigt ButtonPressed_Short, ///< Taster kurz betätigt ButtonPressed_Long ///< Taster lang betätigt }tEButtonPressedState; // Initialisiert den Encoder und aktiviert den Interrupt + Timer void EncoderInit( void ); // Liest die Position des Encoders aus // Wenn Ueberlauf=1 dann zдhlt der Encoder nach Max // wieder von Min und umgekehrt int8_t EncoderRead(char Ueberlauf); // Ruft den Status des Encoder-Knopfes tEButtonPressedState EncoderGetButtonState(void); // Setzt die aktuelle Drehencoderposition void EncoderWrite(int8_t EncoderPos); // Setzt Min- und Max-Werte fьr die Drehgeberposition void EncoderMinMax(int8_t EncoderMin,int8_t EncoderMax); void EncoderPolling(void); #endif /* ENCODER_H_ */