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 | |||
| ) |
1.5.5