AVR32 QDEC driver module.
Definition in file qdec.h.
#include <avr32/io.h>
#include "compiler.h"
Go to the source code of this file.
Data Structures | |
struct | qdec_interrupt_t |
QDEC interrupts. More... | |
struct | qdec_quadrature_decoder_opt_t |
Parameters when initializing a QDEC in Quadrature Decoder mode. More... | |
struct | qdec_timer_opt_t |
Parameters when initializing a QDEC in Counter mode. More... | |
Defines | |
#define | QDEC_INVALID_ARGUMENT (-1) |
QDEC driver functions return value in case of invalid argument(s). | |
#define | QDEC_QDEC_MODE 1 |
QDEC Mode Selection. | |
#define | QDEC_TIMER_MODE 0 |
TIMER Mode Selection. | |
#define | QDEC_TSIR_DOWN 1 |
Direction Down In TIMER Mode. | |
#define | QDEC_TSIR_UP 0 |
Direction Up In TIMER Mode. | |
#define | QDEC_UPD_EVNT 1 |
EVENT Changes Input In TIMER Mode. | |
#define | QDEC_UPD_TSDIR 0 |
TSDIR Changes Input In TIMER Mode. | |
QDEC Index Phase Detection | |
#define | QDEC_IDXPHS_QEPB_0_QEPA_0 |
#define | QDEC_IDXPHS_QEPB_0_QEPA_1 |
#define | QDEC_IDXPHS_QEPB_1_QEPA_0 |
#define | QDEC_IDXPHS_QEPB_1_QEPA_1 |
Functions | |
int | qdec_configure_interrupts (volatile avr32_qdec_t *qdec, const qdec_interrupt_t *bitfield) |
Enables various QDEC interrupts. | |
int | qdec_get_interrupt_settings (volatile avr32_qdec_t *qdec) |
Get the QDEC current interrupt settings. | |
int | qdec_init_quadrature_decoder_mode (volatile avr32_qdec_t *qdec, const qdec_quadrature_decoder_opt_t *opt) |
Sets options for QDEC quadrature decoder initialization. | |
int | qdec_init_timer_mode (volatile avr32_qdec_t *qdec, const qdec_timer_opt_t *opt) |
Sets options for QDEC Timer mode initialization. | |
unsigned short int | qdec_read_pc (volatile avr32_qdec_t *qdec) |
Read value of the channel's QDEC Position Current Counter register. | |
unsigned short int | qdec_read_pc_cap (volatile avr32_qdec_t *qdec) |
Read value of the channel's QDEC Position Capture Counter register. | |
unsigned short int | qdec_read_rc (volatile avr32_qdec_t *qdec) |
Read value of the channel's QDEC Revolution Current Counter register. | |
unsigned short int | qdec_read_rc_cap (volatile avr32_qdec_t *qdec) |
Read value of the channel's QDEC Revolution Capture register. | |
int | qdec_software_trigger (volatile avr32_qdec_t *qdec) |
Software Trigger Condition to start QDEC service. | |
int | qdec_stop (volatile avr32_qdec_t *qdec) |
Stops a QDEC. | |
unsigned short int | qdec_write_pc_cmp (volatile avr32_qdec_t *qdec, unsigned short int value) |
Writes a value to the channel's QDEC Position Counter Compare register. | |
unsigned short int | qdec_write_pc_cnt (volatile avr32_qdec_t *qdec, unsigned short int value) |
Write value of the channel's QDEC Position Current Counter register. | |
unsigned short int | qdec_write_pc_top (volatile avr32_qdec_t *qdec, unsigned short int value) |
Writes a value to the channel's QDEC Position Counter Top register. | |
unsigned short int | qdec_write_rc_cmp (volatile avr32_qdec_t *qdec, unsigned short int value) |
Writes a value to the channel's QDEC Revolution Counter Compare register. | |
unsigned short int | qdec_write_rc_cnt (volatile avr32_qdec_t *qdec, unsigned short int value) |
Write value of the channel's QDEC Revolution Current Counter register. | |
unsigned short int | qdec_write_rc_top (volatile avr32_qdec_t *qdec, unsigned short int value) |
Writes a value to the channel's QDEC Revolution Counter Top register. |
#define QDEC_INVALID_ARGUMENT (-1) |
#define QDEC_TSIR_DOWN 1 |
int qdec_configure_interrupts | ( | volatile avr32_qdec_t * | qdec, | |
const qdec_interrupt_t * | bitfield | |||
) |
Enables various QDEC interrupts.
qdec | Pointer to the QDEC instance to access. | |
bitfield | The interrupt enable configuration. |
0 | Success. |
Definition at line 59 of file qdec.c.
References qdec_interrupt_t::cap, qdec_interrupt_t::cmp, qdec_interrupt_t::dirinv, qdec_interrupt_t::idexerr, qdec_interrupt_t::ovr, qdec_interrupt_t::pcro, qdec_interrupt_t::qepi, and qdec_interrupt_t::rcro.
Referenced by main().
00060 { 00061 00062 AVR32_ENTER_CRITICAL_REGION( ); 00063 // Enable the appropriate interrupts. 00064 qdec->ier = bitfield->ovr << AVR32_QDEC_IER_OVR_OFFSET | 00065 bitfield->dirinv << AVR32_QDEC_IER_DIRINV_OFFSET | 00066 bitfield->idexerr << AVR32_QDEC_IER_IDXERR_OFFSET | 00067 bitfield->rcro << AVR32_QDEC_IER_RCRO_OFFSET | 00068 bitfield->pcro << AVR32_QDEC_IER_PCRO_OFFSET | 00069 bitfield->cap << AVR32_QDEC_IER_CAP_OFFSET | 00070 bitfield->cmp << AVR32_QDEC_IER_CMP_OFFSET | 00071 bitfield->qepi << AVR32_QDEC_IER_QEPI_OFFSET; 00072 00073 // Disable the appropriate interrupts. 00074 qdec->idr = (~bitfield->ovr & 1) << AVR32_QDEC_IER_OVR_OFFSET | 00075 (~bitfield->dirinv & 1) << AVR32_QDEC_IER_DIRINV_OFFSET | 00076 (~bitfield->idexerr & 1) << AVR32_QDEC_IER_IDXERR_OFFSET | 00077 (~bitfield->rcro & 1) << AVR32_QDEC_IER_RCRO_OFFSET | 00078 (~bitfield->pcro & 1) << AVR32_QDEC_IER_PCRO_OFFSET | 00079 (~bitfield->cap & 1) << AVR32_QDEC_IER_CAP_OFFSET | 00080 (~bitfield->cmp & 1) << AVR32_QDEC_IER_CMP_OFFSET | 00081 (~bitfield->qepi & 1) << AVR32_QDEC_IER_QEPI_OFFSET; 00082 00083 AVR32_LEAVE_CRITICAL_REGION( ); 00084 00085 return 0; 00086 }
int qdec_get_interrupt_settings | ( | volatile avr32_qdec_t * | qdec | ) |
Get the QDEC current interrupt settings.
qdec | Pointer to the QDEC instance to access. |
>=0 | The interrupt enable configuration organized according to qdec_interrupt_t. | |
Interrupt | Settings Value. |
Definition at line 53 of file qdec.c.
00054 { 00055 return qdec->imr; 00056 }
int qdec_init_quadrature_decoder_mode | ( | volatile avr32_qdec_t * | qdec, | |
const qdec_quadrature_decoder_opt_t * | opt | |||
) |
Sets options for QDEC quadrature decoder initialization.
qdec | Pointer to the QDEC instance to access. | |
opt | Options for quadrature decoder mode. |
0 | Success. |
Definition at line 88 of file qdec.c.
References qdec_quadrature_decoder_opt_t::evtrge, qdec_quadrature_decoder_opt_t::filten, qdec_quadrature_decoder_opt_t::idxe, qdec_quadrature_decoder_opt_t::idxinv, qdec_quadrature_decoder_opt_t::idxphs, qdec_quadrature_decoder_opt_t::pcce, qdec_quadrature_decoder_opt_t::phsinva, qdec_quadrature_decoder_opt_t::phsinvb, and qdec_quadrature_decoder_opt_t::rcce.
00089 { 00090 qdec->cf = 0; 00091 qdec->cf = 1 << AVR32_QDEC_CF_QDEC_OFFSET | 00092 opt->idxe << AVR32_QDEC_CF_IDXE_OFFSET | 00093 opt->pcce << AVR32_QDEC_CF_PCCE_OFFSET | 00094 opt->rcce << AVR32_QDEC_CF_RCCE_OFFSET | 00095 opt->evtrge << AVR32_QDEC_CF_EVTRGE_OFFSET | 00096 opt->phsinva << AVR32_QDEC_CF_PHSINVA_OFFSET | 00097 opt->phsinvb << AVR32_QDEC_CF_PHSINVB_OFFSET | 00098 opt->idxinv << AVR32_QDEC_CF_IDXINV_OFFSET | 00099 opt->idxphs << AVR32_QDEC_CF_IDXPHS_OFFSET | 00100 opt->filten << AVR32_QDEC_CF_FILTEN_OFFSET ; 00101 // Start QDEC Clock by default 00102 qdec->ctrl |= 1 << AVR32_QDEC_CTRL_CLKEN_OFFSET; 00103 return 0; 00104 00105 }
int qdec_init_timer_mode | ( | volatile avr32_qdec_t * | qdec, | |
const qdec_timer_opt_t * | opt | |||
) |
Sets options for QDEC Timer mode initialization.
qdec | Pointer to the QDEC instance to access. | |
opt | Options for quadrature decoder mode. |
0 | Success. |
Definition at line 107 of file qdec.c.
References qdec_timer_opt_t::evtrge, qdec_timer_opt_t::filten, qdec_timer_opt_t::pcce, qdec_timer_opt_t::rcce, qdec_timer_opt_t::tsdir, and qdec_timer_opt_t::upd.
Referenced by main().
00108 { 00109 qdec->cf = 0; 00110 qdec->cf = 0 << AVR32_QDEC_CF_QDEC_OFFSET | 00111 opt->pcce << AVR32_QDEC_CF_PCCE_OFFSET | 00112 opt->rcce << AVR32_QDEC_CF_RCCE_OFFSET | 00113 opt->evtrge << AVR32_QDEC_CF_EVTRGE_OFFSET | 00114 opt->filten << AVR32_QDEC_CF_FILTEN_OFFSET | 00115 opt->tsdir << AVR32_QDEC_CF_TSDIR_OFFSET | 00116 opt->upd << AVR32_QDEC_CF_UPD_OFFSET ; 00117 // Start QDEC Clock by default 00118 qdec->ctrl |= 1 << AVR32_QDEC_CTRL_CLKEN_OFFSET; 00119 return 0; 00120 }
unsigned short int qdec_read_pc | ( | volatile avr32_qdec_t * | qdec | ) |
unsigned short int qdec_read_pc_cap | ( | volatile avr32_qdec_t * | qdec | ) |
unsigned short int qdec_read_rc | ( | volatile avr32_qdec_t * | qdec | ) |
unsigned short int qdec_read_rc_cap | ( | volatile avr32_qdec_t * | qdec | ) |
int qdec_software_trigger | ( | volatile avr32_qdec_t * | qdec | ) |
int qdec_stop | ( | volatile avr32_qdec_t * | qdec | ) |
unsigned short int qdec_write_pc_cmp | ( | volatile avr32_qdec_t * | qdec, | |
unsigned short int | value | |||
) |
Writes a value to the channel's QDEC Position Counter Compare register.
qdec | Pointer to the QDEC instance to access. | |
value | Value to write to the RC register. |
>=0 | Written value. | |
QDEC_INVALID_ARGUMENT | Invalid argument(s). |
Definition at line 179 of file qdec.c.
Referenced by main().
unsigned short int qdec_write_pc_cnt | ( | volatile avr32_qdec_t * | qdec, | |
unsigned short int | value | |||
) |
Write value of the channel's QDEC Position Current Counter register.
qdec | Pointer to the QDEC instance to access. | |
value | Value to write to the PC register. |
>=0 | Status register value. |
Definition at line 152 of file qdec.c.
Referenced by main(), and qdec_int_handler().
unsigned short int qdec_write_pc_top | ( | volatile avr32_qdec_t * | qdec, | |
unsigned short int | value | |||
) |
unsigned short int qdec_write_rc_cmp | ( | volatile avr32_qdec_t * | qdec, | |
unsigned short int | value | |||
) |
Writes a value to the channel's QDEC Revolution Counter Compare register.
qdec | Pointer to the QDEC instance to access. | |
value | Value to write to the RC register. |
>=0 | Written value. | |
QDEC_INVALID_ARGUMENT | Invalid argument(s). |
Definition at line 172 of file qdec.c.
Referenced by main().
unsigned short int qdec_write_rc_cnt | ( | volatile avr32_qdec_t * | qdec, | |
unsigned short int | value | |||
) |
Write value of the channel's QDEC Revolution Current Counter register.
qdec | Pointer to the QDEC instance to access. | |
value | Value to write to the RC register. |
>=0 | Status register value. |
Definition at line 146 of file qdec.c.
Referenced by main(), and qdec_int_handler().
00147 { 00148 qdec->CNT.rc = value; 00149 return 0; 00150 }
unsigned short int qdec_write_rc_top | ( | volatile avr32_qdec_t * | qdec, | |
unsigned short int | value | |||
) |