HAL  v0.6.1
Hardware Abstraction Layer
Loading...
Searching...
No Matches
QEI

Quadrature Encoder Interface. More...

Collaboration diagram for QEI:

Data Structures

struct  qei_data_t
 
struct  qei_channel_attr_t
 
struct  qei_handle_t
 

Typedefs

typedef void(* hal_qei_callback) (const uint8_t channel, const uint8_t flag)
 Index interrupt callback function prototype.
 

Enumerations

enum  qei_result_t {
  QEI_RESULT_OK ,
  QEI_RESULT_INVALID ,
  QEI_RESULT_UNSUPPORTED ,
  QEI_RESULT_ERR ,
  TOTAL_QEI_RESULT
}
 
enum  qei_status_t {
  QEI_STATUS_UNKNOWN ,
  QEI_STATUS_OK ,
  QEI_STATUS_BUSY ,
  QEI_STATUS_STOP ,
  QEI_STATUS_ERR ,
  TOTAL_QEI_STATUS
}
 
enum  qei_reset_mode_t {
  QEI_RESET_MODE_NONE ,
  QEI_RESET_MODE_HOME_EVENT ,
  QEI_RESET_MODE_INDEX_EVENT ,
  TOTAL_QEI_RESET_MODE
}
 
enum  qei_direction_t {
  QEI_DIRECTION_NONE ,
  QEI_DIRECTION_FORWARD ,
  QEI_DIRECTION_REVERSE ,
  TOTAL_QEI_DIRECTION
}
 
enum  qei_interrupt_t {
  QEI_INTERRUPT_HOME ,
  QEI_INTERRUPT_INDEX ,
  QEI_INTERRUPT_OVERFLOW ,
  QEI_INTERRUPT_LOWER_LIMIT ,
  QEI_INTERRUPT_UPPER_LIMIT ,
  TOTAL_QEI_INTERRUPT
}
 

Functions

qei_result_t hal_qei_init (qei_handle_t *handle, const qei_channel_attr_t attr, const hal_qei_callback callback)
 Configure QEI channel.
 
int32_t hal_qei_get_counter (qei_handle_t *handle)
 Get encoder counter value.
 
qei_result_t hal_qei_set_counter (qei_handle_t *handle, const int32_t value)
 Set encoder counter to specified value.
 
qei_result_t hal_qei_reset_counter (qei_handle_t *handle)
 Reset encoder counter value to zero.
 
qei_result_t hal_qei_start (qei_handle_t *handle)
 Enable QEI channel.
 
qei_result_t hal_qei_stop (qei_handle_t *handle)
 Disable QEI channel.
 

Detailed Description

Quadrature Encoder Interface.

Typedef Documentation

◆ hal_qei_callback

typedef void(* hal_qei_callback) (const uint8_t channel, const uint8_t flag)

#include <qei/public_inc/hal_qei.h>

Index interrupt callback function prototype.

Parameters
[in]channelQEI channel
[in]flagQEI interrupt flag

Enumeration Type Documentation

◆ qei_direction_t

#include <qei/public_inc/hal_qei.h>

Enumerator
QEI_DIRECTION_NONE 
QEI_DIRECTION_FORWARD 
QEI_DIRECTION_REVERSE 
TOTAL_QEI_DIRECTION 

◆ qei_interrupt_t

#include <qei/public_inc/hal_qei.h>

Enumerator
QEI_INTERRUPT_HOME 
QEI_INTERRUPT_INDEX 
QEI_INTERRUPT_OVERFLOW 
QEI_INTERRUPT_LOWER_LIMIT 
QEI_INTERRUPT_UPPER_LIMIT 
TOTAL_QEI_INTERRUPT 

◆ qei_reset_mode_t

#include <qei/public_inc/hal_qei.h>

Enumerator
QEI_RESET_MODE_NONE 
QEI_RESET_MODE_HOME_EVENT 
QEI_RESET_MODE_INDEX_EVENT 
TOTAL_QEI_RESET_MODE 

◆ qei_result_t

#include <qei/public_inc/hal_qei.h>

Enumerator
QEI_RESULT_OK 

No error.

QEI_RESULT_INVALID 

Operation invalid.

QEI_RESULT_UNSUPPORTED 

Operation not supported.

QEI_RESULT_ERR 

Error occurred.

TOTAL_QEI_RESULT 

◆ qei_status_t

#include <qei/public_inc/hal_qei.h>

Enumerator
QEI_STATUS_UNKNOWN 

Unknown channel status.

QEI_STATUS_OK 

No error.

QEI_STATUS_BUSY 

Channel busy.

QEI_STATUS_STOP 

Channel stopped.

QEI_STATUS_ERR 

Error occurred.

TOTAL_QEI_STATUS 

Function Documentation

◆ hal_qei_get_counter()

int32_t hal_qei_get_counter ( qei_handle_t * handle)

#include <qei/public_inc/hal_qei.h>

Get encoder counter value.

If counter value reached INT32_MAX value either positive or negative signed, counter will reset value to zero.

int32_t counter = hal_qei_get_counter( &handle );
int32_t hal_qei_get_counter(qei_handle_t *handle)
Get encoder counter value.
Parameters
[in,out]handleQEI handler
Returns
Encoder counter value

◆ hal_qei_init()

qei_result_t hal_qei_init ( qei_handle_t * handle,
const qei_channel_attr_t attr,
const hal_qei_callback callback )

#include <qei/public_inc/hal_qei.h>

Configure QEI channel.

static void callback( const uint8_t channel );
qei_handle_t handle = {
.channel = BSP_QEI_CHANNEL_1
};
.ch_a_pin = CHANNEL_A_PIN,
.ch_b_pin = CHANNEL_B_PIN,
.index_pin = INDEX_PIN,
.start_value = 0,
};
qei_result_t result = hal_qei_init( &handle, attr, &callback );
qei_result_t
Definition hal_qei.h:47
qei_result_t hal_qei_init(qei_handle_t *handle, const qei_channel_attr_t attr, const hal_qei_callback callback)
Configure QEI channel.
@ QEI_RESET_MODE_INDEX_EVENT
Definition hal_qei.h:71
Definition hal_qei.h:104
gpio_pin_t ch_a_pin
channel A pin
Definition hal_qei.h:105
Definition hal_qei.h:114
uint8_t channel
QEI channel.
Definition hal_qei.h:115
Parameters
[in,out]handleQEI handler
[in]attrQEI channel attributes
Return values
QEI_RESULT_OKSuccess configure QEI channel
QEI_RESULT_INVALIDConfiguration attributes invalid
QEI_RESULT_UNSUPPORTEDOperation not supported
QEI_RESULT_ERRFailed configure QEI channel

◆ hal_qei_reset_counter()

qei_result_t hal_qei_reset_counter ( qei_handle_t * handle)

#include <qei/public_inc/hal_qei.h>

Reset encoder counter value to zero.

hal_qei_reset( &handle );
int32_t counter = hal_qei_reset_counter( &handle );
assert( counter == 0 );
qei_result_t hal_qei_reset_counter(qei_handle_t *handle)
Reset encoder counter value to zero.
Parameters
[in,out]handleQEI handler
Return values
QEI_RESULT_OKSuccess reset counter to zero
QEI_RESULT_INVALIDConfiguration attributes invalid
QEI_RESULT_UNSUPPORTEDOperation not supported
QEI_RESULT_ERRFailed to reset counter

◆ hal_qei_set_counter()

qei_result_t hal_qei_set_counter ( qei_handle_t * handle,
const int32_t value )

#include <qei/public_inc/hal_qei.h>

Set encoder counter to specified value.

hal_qei_set_counter( &handle, -500 );
int32_t counter = hal_qei_get_counter( &handle );
assert( counter == -500 );
qei_result_t hal_qei_set_counter(qei_handle_t *handle, const int32_t value)
Set encoder counter to specified value.
Parameters
[in,out]handleQEI handler
[in]valueCounter value to be loaded
Return values
QEI_RESULT_OKSuccess load counter value
QEI_RESULT_INVALIDInvalid counter value
QEI_RESULT_UNSUPPORTEDOperation not supported
QEI_RESULT_ERRFailed to load counter value

◆ hal_qei_start()

qei_result_t hal_qei_start ( qei_handle_t * handle)

#include <qei/public_inc/hal_qei.h>

Enable QEI channel.

qei_result_t result = hal_qei_start( &handle );
qei_result_t hal_qei_start(qei_handle_t *handle)
Enable QEI channel.
Parameters
[in,out]handleQEI handler
Return values
QEI_RESULT_OKSuccess start QEI channel
QEI_RESULT_UNSUPPORTEDOperation not supported
QEI_RESULT_ERRFailed to start QEI channel

◆ hal_qei_stop()

qei_result_t hal_qei_stop ( qei_handle_t * handle)

#include <qei/public_inc/hal_qei.h>

Disable QEI channel.

qei_result_t result = hal_qei_stop( &handle );
qei_result_t hal_qei_stop(qei_handle_t *handle)
Disable QEI channel.
Parameters
[in,out]handleQEI handler
Return values
QEI_RESULT_OKSuccess stop QEI channel
QEI_RESULT_UNSUPPORTEDOperation not supported
QEI_RESULT_ERRFailed to stop QEI channel