Переглянути джерело

Update imxrt.h for new Encoder reg structure

Needed to implement Quad encoder library.
main
Mike S 5 роки тому
джерело
коміт
3faabc46cd
1 змінених файлів з 28 додано та 85 видалено
  1. +28
    -85
      teensy4/imxrt.h

+ 28
- 85
teensy4/imxrt.h Переглянути файл

@@ -2427,90 +2427,33 @@ typedef struct {


// 23.7.1: page 1023
#define IMXRT_ENC1 (*(IMXRT_REGISTER16_t *)0x403C8000)
#define ENC1_CTRL (IMXRT_ENC1.offset000)
#define ENC1_FILT (IMXRT_ENC1.offset002)
#define ENC1_WTR (IMXRT_ENC1.offset004)
#define ENC1_POSD (IMXRT_ENC1.offset006)
#define ENC1_POSDH (IMXRT_ENC1.offset008)
#define ENC1_REV (IMXRT_ENC1.offset00A)
#define ENC1_REVH (IMXRT_ENC1.offset00C)
#define ENC1_UPOS (IMXRT_ENC1.offset00E)
#define ENC1_LPOS (IMXRT_ENC1.offset010)
#define ENC1_UPOSH (IMXRT_ENC1.offset012)
#define ENC1_LPOSH (IMXRT_ENC1.offset014)
#define ENC1_UINIT (IMXRT_ENC1.offset016)
#define ENC1_LINIT (IMXRT_ENC1.offset018)
#define ENC1_IMR (IMXRT_ENC1.offset01A)
#define ENC1_TST (IMXRT_ENC1.offset01C)
#define ENC1_CTRL2 (IMXRT_ENC1.offset01E)
#define ENC1_UMOD (IMXRT_ENC1.offset020)
#define ENC1_LMOD (IMXRT_ENC1.offset022)
#define ENC1_UCOMP (IMXRT_ENC1.offset024)
#define ENC1_LCOMP (IMXRT_ENC1.offset026)
#define IMXRT_ENC2 (*(IMXRT_REGISTER16_t *)0x403CC000)
#define ENC2_CTRL (IMXRT_ENC2.offset000)
#define ENC2_FILT (IMXRT_ENC2.offset002)
#define ENC2_WTR (IMXRT_ENC2.offset004)
#define ENC2_POSD (IMXRT_ENC2.offset006)
#define ENC2_POSDH (IMXRT_ENC2.offset008)
#define ENC2_REV (IMXRT_ENC2.offset00A)
#define ENC2_REVH (IMXRT_ENC2.offset00C)
#define ENC2_UPOS (IMXRT_ENC2.offset00E)
#define ENC2_LPOS (IMXRT_ENC2.offset010)
#define ENC2_UPOSH (IMXRT_ENC2.offset012)
#define ENC2_LPOSH (IMXRT_ENC2.offset014)
#define ENC2_UINIT (IMXRT_ENC2.offset016)
#define ENC2_LINIT (IMXRT_ENC2.offset018)
#define ENC2_IMR (IMXRT_ENC2.offset01A)
#define ENC2_TST (IMXRT_ENC2.offset01C)
#define ENC2_CTRL2 (IMXRT_ENC2.offset01E)
#define ENC2_UMOD (IMXRT_ENC2.offset020)
#define ENC2_LMOD (IMXRT_ENC2.offset022)
#define ENC2_UCOMP (IMXRT_ENC2.offset024)
#define ENC2_LCOMP (IMXRT_ENC2.offset026)
#define IMXRT_ENC3 (*(IMXRT_REGISTER16_t *)0x403D0000)
#define ENC3_CTRL (IMXRT_ENC3.offset000)
#define ENC3_FILT (IMXRT_ENC3.offset002)
#define ENC3_WTR (IMXRT_ENC3.offset004)
#define ENC3_POSD (IMXRT_ENC3.offset006)
#define ENC3_POSDH (IMXRT_ENC3.offset008)
#define ENC3_REV (IMXRT_ENC3.offset00A)
#define ENC3_REVH (IMXRT_ENC3.offset00C)
#define ENC3_UPOS (IMXRT_ENC3.offset00E)
#define ENC3_LPOS (IMXRT_ENC3.offset010)
#define ENC3_UPOSH (IMXRT_ENC3.offset012)
#define ENC3_LPOSH (IMXRT_ENC3.offset014)
#define ENC3_UINIT (IMXRT_ENC3.offset016)
#define ENC3_LINIT (IMXRT_ENC3.offset018)
#define ENC3_IMR (IMXRT_ENC3.offset01A)
#define ENC3_TST (IMXRT_ENC3.offset01C)
#define ENC3_CTRL2 (IMXRT_ENC3.offset01E)
#define ENC3_UMOD (IMXRT_ENC3.offset020)
#define ENC3_LMOD (IMXRT_ENC3.offset022)
#define ENC3_UCOMP (IMXRT_ENC3.offset024)
#define ENC3_LCOMP (IMXRT_ENC3.offset026)
#define IMXRT_ENC4 (*(IMXRT_REGISTER16_t *)0x403D4000)
#define ENC4_CTRL (IMXRT_ENC4.offset000)
#define ENC4_FILT (IMXRT_ENC4.offset002)
#define ENC4_WTR (IMXRT_ENC4.offset004)
#define ENC4_POSD (IMXRT_ENC4.offset006)
#define ENC4_POSDH (IMXRT_ENC4.offset008)
#define ENC4_REV (IMXRT_ENC4.offset00A)
#define ENC4_REVH (IMXRT_ENC4.offset00C)
#define ENC4_UPOS (IMXRT_ENC4.offset00E)
#define ENC4_LPOS (IMXRT_ENC4.offset010)
#define ENC4_UPOSH (IMXRT_ENC4.offset012)
#define ENC4_LPOSH (IMXRT_ENC4.offset014)
#define ENC4_UINIT (IMXRT_ENC4.offset016)
#define ENC4_LINIT (IMXRT_ENC4.offset018)
#define ENC4_IMR (IMXRT_ENC4.offset01A)
#define ENC4_TST (IMXRT_ENC4.offset01C)
#define ENC4_CTRL2 (IMXRT_ENC4.offset01E)
#define ENC4_UMOD (IMXRT_ENC4.offset020)
#define ENC4_LMOD (IMXRT_ENC4.offset022)
#define ENC4_UCOMP (IMXRT_ENC4.offset024)
#define ENC4_LCOMP (IMXRT_ENC4.offset026)
typedef struct {
volatile uint16_t CTRL; /**< Control Register, offset: 0x0 */
volatile uint16_t FILT; /**< Input Filter Register, offset: 0x2 */
volatile uint16_t WTR; /**< Watchdog Timeout Register, offset: 0x4 */
volatile uint16_t POSD; /**< Position Difference Counter Register, offset: 0x6 */
volatile uint16_t POSDH; /**< Position Difference Hold Register, offset: 0x8 */
volatile uint16_t REV; /**< Revolution Counter Register, offset: 0xA */
volatile uint16_t REVH; /**< Revolution Hold Register, offset: 0xC */
volatile uint16_t UPOS; /**< Upper Position Counter Register, offset: 0xE */
volatile uint16_t LPOS; /**< Lower Position Counter Register, offset: 0x10 */
volatile uint16_t UPOSH; /**< Upper Position Hold Register, offset: 0x12 */
volatile uint16_t LPOSH; /**< Lower Position Hold Register, offset: 0x14 */
volatile uint16_t UINIT; /**< Upper Initialization Register, offset: 0x16 */
volatile uint16_t LINIT; /**< Lower Initialization Register, offset: 0x18 */
volatile uint16_t IMR; /**< Input Monitor Register, offset: 0x1A */
volatile uint16_t TST; /**< Test Register, offset: 0x1C */
volatile uint16_t CTRL2; /**< Control 2 Register, offset: 0x1E */
volatile uint16_t UMOD; /**< Upper Modulus Register, offset: 0x20 */
volatile uint16_t LMOD; /**< Lower Modulus Register, offset: 0x22 */
volatile uint16_t UCOMP; /**< Upper Position Compare Register, offset: 0x24 */
volatile uint16_t LCOMP; /**< Lower Position Compare Register, offset: 0x26 */
} IMXRT_ENC_t;

#define IMXRT_ENC1 (*(IMXRT_ENC_t *)0x403C8000)
#define IMXRT_ENC2 (*(IMXRT_ENC_t *)0x403CC000)
#define IMXRT_ENC3 (*(IMXRT_ENC_t *)0x403D0000)
#define IMXRT_ENC4 (*(IMXRT_ENC_t *)0x403D4000)

// 24.5: page 1060
#define IMXRT_ENET (*(IMXRT_REGISTER32_t *)0x402D8000)
@@ -8405,4 +8348,4 @@ static inline void arm_dcache_flush_delete(void *addr, uint32_t size)
} while (location < end_addr);
asm("dsb");
asm("isb");
}
}

Завантаження…
Відмінити
Зберегти