prog:mcp560x:adc-structure:index
ADC Data Structure Define
/****************************************************************************/
/* MODULE : ADC */
/****************************************************************************/
struct ADC_tag {
union {
vuint32_t R;
struct {
vuint32_t OWREN:1;
vuint32_t WLSIDE:1;
vuint32_t MODE:1;
vuint32_t EDGLEV:1;
vuint32_t TRGEN:1;
vuint32_t EDGE:1;
vuint32_t XSTRTEN:1;
vuint32_t NSTART:1;
vuint32_t:1;
vuint32_t JTRGEN:1;
vuint32_t JEDGE:1;
vuint32_t JSTART:1;
vuint32_t:2;
vuint32_t CTUEN:1;
vuint32_t:8;
vuint32_t ADCLKSEL:1;
vuint32_t ABORTCHAIN:1;
vuint32_t ABORT:1;
vuint32_t ACK0:1;
vuint32_t OFFREFRESH:1;
vuint32_t OFFCANC:1;
vuint32_t:2;
vuint32_t PWDN:1;
} B;
} MCR; /* MAIN CONFIGURATION REGISTER */
union {
vuint32_t R;
struct {
vuint32_t:7;
vuint32_t NSTART:1;
vuint32_t JABORT:1;
vuint32_t:2;
vuint32_t JSTART:1;
vuint32_t:3;
vuint32_t CTUSTART:1;
vuint32_t CHADDR:7;
vuint32_t:3;
vuint32_t ACK0:1;
vuint32_t OFFREFRESH:1;
vuint32_t OFFCANC:1;
vuint32_t ADCSTATUS:3;
} B;
} MSR; /* MAIN STATUS REGISTER */
int32_t ADC_reserved1[2]; /* (0x008 - 0x00F)/4 = 0x02 */
union {
vuint32_t R;
struct {
vuint32_t:25;
vuint32_t OFFCANCOVR:1;
vuint32_t EOFFSET:1;
vuint32_t EOCTU:1;
vuint32_t JEOC:1;
vuint32_t JECH:1;
vuint32_t EOC:1;
vuint32_t ECH:1;
} B;
} ISR; /* INTERRUPT STATUS REGISTER */
union {
vuint32_t R;
struct {
vuint32_t EOC31:1;
vuint32_t EOC30:1;
vuint32_t EOC29:1;
vuint32_t EOC28:1;
vuint32_t EOC27:1;
vuint32_t EOC26:1;
vuint32_t EOC25:1;
vuint32_t EOC24:1;
vuint32_t EOC23:1;
vuint32_t EOC22:1;
vuint32_t EOC21:1;
vuint32_t EOC20:1;
vuint32_t EOC19:1;
vuint32_t EOC18:1;
vuint32_t EOC17:1;
vuint32_t EOC16:1;
vuint32_t EOC15:1;
vuint32_t EOC14:1;
vuint32_t EOC13:1;
vuint32_t EOC12:1;
vuint32_t EOC11:1;
vuint32_t EOC10:1;
vuint32_t EOC9:1;
vuint32_t EOC8:1;
vuint32_t EOC7:1;
vuint32_t EOC6:1;
vuint32_t EOC5:1;
vuint32_t EOC4:1;
vuint32_t EOC3:1;
vuint32_t EOC2:1;
vuint32_t EOC1:1;
vuint32_t EOC0:1;
} B;
} CEOCFR[3]; /* Channel Pending Register 0 */
union {
vuint32_t R;
struct {
vuint32_t:25; //One bit added
vuint32_t MSKOFFCANCOVR:1; //Moved up
vuint32_t MSKEOFFSET:1; //Moved up
vuint32_t MSKEOCTU:1; //New for cut 2
vuint32_t MSKJEOC:1;
vuint32_t MSKJECH:1;
vuint32_t MSKEOC:1;
vuint32_t MSKECH:1;
} B;
} IMR; /* INTERRUPT MASK REGISTER */
union {
vuint32_t R;
struct {
vuint32_t CIM31:1;
vuint32_t CIM30:1;
vuint32_t CIM29:1;
vuint32_t CIM28:1;
vuint32_t CIM27:1;
vuint32_t CIM26:1;
vuint32_t CIM25:1;
vuint32_t CIM24:1;
vuint32_t CIM23:1;
vuint32_t CIM22:1;
vuint32_t CIM21:1;
vuint32_t CIM20:1;
vuint32_t CIM19:1;
vuint32_t CIM18:1;
vuint32_t CIM17:1;
vuint32_t CIM16:1;
vuint32_t CIM15:1;
vuint32_t CIM14:1;
vuint32_t CIM13:1;
vuint32_t CIM12:1;
vuint32_t CIM11:1;
vuint32_t CIM10:1;
vuint32_t CIM9:1;
vuint32_t CIM8:1;
vuint32_t CIM7:1;
vuint32_t CIM6:1;
vuint32_t CIM5:1;
vuint32_t CIM4:1;
vuint32_t CIM3:1;
vuint32_t CIM2:1;
vuint32_t CIM1:1;
vuint32_t CIM0:1;
} B;
} CIMR[3]; /* Channel Interrupt Mask Register 0 */
union {
vuint32_t R;
struct {
vuint32_t:24;
vuint32_t WDG3H:1;
vuint32_t WDG2H:1;
vuint32_t WDG1H:1;
vuint32_t WDG0H:1;
vuint32_t WDG3L:1;
vuint32_t WDG2L:1;
vuint32_t WDG1L:1;
vuint32_t WDG0L:1;
} B;
} WTISR; /* WATCHDOG INTERRUPT THRESHOLD REGISTER was WDGTHR */
union {
vuint32_t R;
struct {
vuint32_t:24;
vuint32_t MSKWDG3H:1;
vuint32_t MSKWDG2H:1;
vuint32_t MSKWDG1H:1;
vuint32_t MSKWDG0H:1;
vuint32_t MSKWDG3L:1;
vuint32_t MSKWDG2L:1;
vuint32_t MSKWDG1L:1;
vuint32_t MSKWDG0L:1;
} B;
} WTIMR; /* WATCHDOG INTERRUPT MASK REGISTER was IMWDGTHR */
int32_t ADC_reserved2[2]; /* (0x038 - 0x03F)/4 = 0x02 */
union {
vuint32_t R;
struct {
vuint32_t:30; //was 16
vuint32_t DCLR:1; //moved
vuint32_t DMAEN:1; //moved
} B;
} DMAE; /* DMAE REGISTER */
union {
vuint32_t R;
struct {
vuint32_t DMA31:1; //was unused [16]
vuint32_t DMA30:1;
vuint32_t DMA29:1;
vuint32_t DMA28:1;
vuint32_t DMA27:1;
vuint32_t DMA26:1;
vuint32_t DMA25:1;
vuint32_t DMA24:1;
vuint32_t DMA23:1;
vuint32_t DMA22:1;
vuint32_t DMA21:1;
vuint32_t DMA20:1;
vuint32_t DMA19:1;
vuint32_t DMA18:1;
vuint32_t DMA17:1;
vuint32_t DMA16:1;
vuint32_t DMA15:1;
vuint32_t DMA14:1;
vuint32_t DMA13:1;
vuint32_t DMA12:1;
vuint32_t DMA11:1;
vuint32_t DMA10:1;
vuint32_t DMA9:1;
vuint32_t DMA8:1;
vuint32_t DMA7:1;
vuint32_t DMA6:1;
vuint32_t DMA5:1;
vuint32_t DMA4:1;
vuint32_t DMA3:1;
vuint32_t DMA2:1;
vuint32_t DMA1:1;
vuint32_t DMA0:1;
} B;
} DMAR[3]; /* DMA REGISTER was [6] */
union {
vuint32_t R;
struct {
vuint32_t:16;
vuint32_t THREN:1;
vuint32_t THRINV:1;
vuint32_t THROP:1;
vuint32_t:6;
vuint32_t THRCH:7;
} B;
} TRC[4]; /* ADC THRESHOLD REGISTER REGISTER */
union {
vuint32_t R;
struct { //were in TRA & TRB
vuint32_t:4;
vuint32_t THRH:12;
vuint32_t:4;
vuint32_t THRL:12;
} B;
} THRHLR[4]; /* THRESHOLD REGISTER */
union {
vuint32_t R;
struct { //were in TRAALT & TRBALT
vuint32_t:4;
vuint32_t THRH:12;
vuint32_t:4;
vuint32_t THRL:12;
} B;
} THRALT[4]; /* ADC THRESHOLD REGISTER REGISTER */
union {
vuint32_t R;
struct {
vuint32_t:25; //was 26
vuint32_t PREVAL2:2;
vuint32_t PREVAL1:2;
vuint32_t PREVAL0:2;
vuint32_t PREONCE:1;
} B;
} PSCR; /* PRESAMPLING CONTROL REGISTER was PREREG */
union {
vuint32_t R;
struct {
vuint32_t PRES31:1; //was reserved 16
vuint32_t PRES30:1;
vuint32_t PRES29:1;
vuint32_t PRES28:1;
vuint32_t PRES27:1;
vuint32_t PRES26:1;
vuint32_t PRES25:1;
vuint32_t PRES24:1;
vuint32_t PRES23:1;
vuint32_t PRES22:1;
vuint32_t PRES21:1;
vuint32_t PRES20:1;
vuint32_t PRES19:1;
vuint32_t PRES18:1;
vuint32_t PRES17:1;
vuint32_t PRES16:1;
vuint32_t PRES15:1;
vuint32_t PRES14:1;
vuint32_t PRES13:1;
vuint32_t PRES12:1;
vuint32_t PRES11:1;
vuint32_t PRES10:1;
vuint32_t PRES9:1;
vuint32_t PRES8:1;
vuint32_t PRES7:1;
vuint32_t PRES6:1;
vuint32_t PRES5:1;
vuint32_t PRES4:1;
vuint32_t PRES3:1;
vuint32_t PRES2:1;
vuint32_t PRES1:1;
vuint32_t PRES0:1;
} B;
} PSR[3]; /* PRESAMPLING REGISTER was PRER[6]*/
int32_t ADC_reserved3[1]; /* (0x090 - 0x093)/4 = 0x01 */
union {
vuint32_t R;
struct {
vuint32_t:16;
vuint32_t INPLATCH:1;
vuint32_t:1;
vuint32_t OFFSHIFT:2; //!!! This field only in CTR[0]
vuint32_t:1;
vuint32_t INPCMP:2;
vuint32_t:1;
vuint32_t INPSAMP:8;
} B;
} CTR[3]; /* CONVERSION TIMING REGISTER was CT[3] */
int32_t ADC_reserved4[1]; /* (0x0A0 - 0x0A3)/4 = 0x01 */
union {
vuint32_t R;
struct {
vuint32_t CH31:1; //was reserved 16
vuint32_t CH30:1;
vuint32_t CH29:1;
vuint32_t CH28:1;
vuint32_t CH27:1;
vuint32_t CH26:1;
vuint32_t CH25:1;
vuint32_t CH24:1;
vuint32_t CH23:1;
vuint32_t CH22:1;
vuint32_t CH21:1;
vuint32_t CH20:1;
vuint32_t CH19:1;
vuint32_t CH18:1;
vuint32_t CH17:1;
vuint32_t CH16:1;
vuint32_t CH15:1;
vuint32_t CH14:1;
vuint32_t CH13:1;
vuint32_t CH12:1;
vuint32_t CH11:1;
vuint32_t CH10:1;
vuint32_t CH9:1;
vuint32_t CH8:1;
vuint32_t CH7:1;
vuint32_t CH6:1;
vuint32_t CH5:1;
vuint32_t CH4:1;
vuint32_t CH3:1;
vuint32_t CH2:1;
vuint32_t CH1:1;
vuint32_t CH0:1;
} B;
} NCMR[3]; /* NORMAL CONVERSION MASK REGISTER was [6] */
int32_t ADC_reserved5[1]; /* (0x0B0 - 0x0B3)/4 = 0x01 */
union {
vuint32_t R;
struct {
vuint32_t CH31:1; //was reserved 16
vuint32_t CH30:1;
vuint32_t CH29:1;
vuint32_t CH28:1;
vuint32_t CH27:1;
vuint32_t CH26:1;
vuint32_t CH25:1;
vuint32_t CH24:1;
vuint32_t CH23:1;
vuint32_t CH22:1;
vuint32_t CH21:1;
vuint32_t CH20:1;
vuint32_t CH19:1;
vuint32_t CH18:1;
vuint32_t CH17:1;
vuint32_t CH16:1;
vuint32_t CH15:1;
vuint32_t CH14:1;
vuint32_t CH13:1;
vuint32_t CH12:1;
vuint32_t CH11:1;
vuint32_t CH10:1;
vuint32_t CH9:1;
vuint32_t CH8:1;
vuint32_t CH7:1;
vuint32_t CH6:1;
vuint32_t CH5:1;
vuint32_t CH4:1;
vuint32_t CH3:1;
vuint32_t CH2:1;
vuint32_t CH1:1;
vuint32_t CH0:1;
} B;
} JCMR[3]; /* Injected CONVERSION MASK REGISTER was ICMR[6] */
union {
vuint32_t R;
struct {
vuint32_t:15;
vuint32_t OFFSETLOAD:1; //new
vuint32_t:8;
vuint32_t OFFSETWORD:8;
} B;
} OFFWR; /* OFFSET WORD REGISTER was OFFREG*/
union {
vuint32_t R;
struct {
vuint32_t:24;
vuint32_t DSD:8;
} B;
} DSDR; /* DECODE SIGNALS DELAY REGISTER was DSD */
union {
vuint32_t R;
struct {
vuint32_t:24;
vuint32_t PDED:8; //was PDD
} B;
} PDEDR; /* POWER DOWN DELAY REGISTER was PDD */
int32_t ADC_reserved6[9]; /* (0x0CC - 0x0EF)/4 = 0x09 */
union {
vuint32_t R;
struct {
vuint32_t TEST_CTL:32;
} B;
} TCTLR; /* Test control REGISTER */
int32_t ADC_reserved7[3]; /* (0x0F4 - 0x0FF)/4 = 0x03 */
union {
vuint32_t R;
struct {
vuint32_t:12;
vuint32_t VALID:1;
vuint32_t OVERW:1;
vuint32_t RESULT:2;
vuint32_t:4;
vuint32_t CDATA:12;
} B;
} CDR[96]; /* Channel 0-95 Data REGISTER */
}; /* end of ADC_tag */
Permalink prog/mcp560x/adc-structure/index.txt · Last modified: 2023/11/08 11:08 by
jethro