BJ-Keyer  1.03
Morsekeyer für 2 TRX und 6 Morsetasten
encoder.h
1 #ifndef ENCODER_H_
2 #define ENCODER_H_
3 // Art des Drehencoders definieren
4 // #define SingleStep
5 // #define TwoStep
6 #define TwoStep
7 
8 #define ENC_A_PORT PORTB
9 #define ENC_A_PIN PB1
10 #define ENC_B_PORT PORTB
11 #define ENC_B_PIN PB0
12 #define ENC_T_PORT PORTB
13 #define ENC_T_PIN PB2
15 #define DDR(x) (*(&x-1))
16 #define Port(x) (*(&x))
17 #define PIN(x) (*(&x-2))
18 
19 #define PHASE_A PIN(ENC_A_PORT) & (1<<ENC_A_PIN)
20 #define PHASE_B PIN(ENC_B_PORT) & (1<<ENC_B_PIN)
21 #define BUTTONPRESSED (!(PIN(ENC_T_PORT) & (1<<ENC_T_PIN)))
22 
32 #define ENCODERTIMER 5
33 #define BUTTON_DEBOUNCETIME_MS 30/ENCODERTIMER
34 #define BUTTON_PRESSEDLONG_MS 250/ENCODERTIMER
35 
36 typedef enum EButtonPressedState
37 {
38  ButtonPressed_Unpressed,
39  ButtonPressed_Short,
40  ButtonPressed_Long
41 }tEButtonPressedState;
42 
43 // Initialisiert den Encoder und aktiviert den Interrupt + Timer
44 void EncoderInit( void );
45 // Liest die Position des Encoders aus
46 // Wenn Ueberlauf=1 dann zählt der Encoder nach Max
47 // wieder von Min und umgekehrt
48 int8_t EncoderRead(char Ueberlauf);
49 // Ruft den Status des Encoder-Knopfes
50 tEButtonPressedState EncoderGetButtonState(void);
51 // Setzt die aktuelle Drehencoderposition
52 void EncoderWrite(int8_t EncoderPos);
53 // Setzt Min- und Max-Werte für die Drehgeberposition
54 void EncoderMinMax(int8_t EncoderMin,int8_t EncoderMax);
55 void EncoderPolling(void);
56 #endif /* ENCODER_H_ */
void EncoderPolling(void)
EncoderPolling.
Definition: encoder.c:61
volatile int8_t EncoderPos
Encoderposition für WpM/BpM.
Definition: globals.h:188