Skip to content

Instantly share code, notes, and snippets.

@shima-529
Created July 14, 2022 13:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shima-529/5f2c2d14cf71996f9e5a1feab5aeed01 to your computer and use it in GitHub Desktop.
Save shima-529/5f2c2d14cf71996f9e5a1feab5aeed01 to your computer and use it in GitHub Desktop.
Register Definitions for EPSON C17 MCU
#define REG(addr) (*(volatile unsigned int *)(addr))
#define REG32(addr) (*(volatile unsigned long int *)(addr))
typedef union {
unsigned int reg;
struct {
unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
unsigned b3:1;
unsigned b4:1;
unsigned b5:1;
unsigned b6:1;
unsigned b7:1;
} bit;
} RegBit;
typedef union {
unsigned int reg;
struct {
unsigned lower:3;
const unsigned margin:5;
unsigned upper:3;
} bits;
} ILV_RegBit;
// MISC
#define MSCPROT REG(0x4000)
#define MSCIRAMSZ REG(0x4002)
#define MSCTTBRL REG(0x4004)
#define MSCTTBRH REG(0x4006)
#define MSTTBR REG32(0x4004)
#define MSCPSR REG(0x4008)
// PWG2
#define PWGCTL REG(0x4020)
#define PWGTIM REG(0x4022)
#define PWGINTF REG(0x4024)
#define PWGINTE REG(0x4026)
// CLG
#define CLGSCLK REG(0x4040)
#define CLGOSC REG(0x4042)
#define CLGIOSC REG(0x4044)
#define CLGOSC1 REG(0x4046)
#define CLGOSC3 REG(0x4048)
#define CLGINTF REG(0x404c)
#define CLGINTE REG(0x404e)
#define CLGFOUT REG(0x4050)
#define CLGTRIM REG(0x4052)
// ITC
#define ITCLV0 REG(0x4080)
#define ITCLV1 REG(0x4082)
#define ITCLV2 REG(0x4084)
#define ITCLV3 REG(0x4086)
#define ITCLV4 REG(0x4088)
#define ITCLV5 REG(0x408a)
#define ITCLV6 REG(0x408c)
#define ITCLV7 REG(0x408e)
#define ITCLV8 REG(0x4090)
#define ITCLV9 REG(0x4082)
#define ITCLV10 REG(0x4084)
#define ITCLV11 REG(0x4086)
#define ILV_SVD (((volatile ILV_RegBit *)&ITCLV0)->bits.lower)
#define ILV_PPORT (((volatile ILV_RegBit *)&ITCLV0)->bits.upper)
#define ILV_PWG2 (((volatile ILV_RegBit *)&ITCLV1)->bits.lower)
#define ILV_CLG (((volatile ILV_RegBit *)&ITCLV1)->bits.upper)
#define ILV_RTCA_0 (((volatile ILV_RegBit *)&ITCLV2)->bits.lower)
#define ILV_T16_0 (((volatile ILV_RegBit *)&ITCLV2)->bits.upper)
#define ILV_UART_0 (((volatile ILV_RegBit *)&ITCLV3)->bits.lower)
#define ILV_T16_1 (((volatile ILV_RegBit *)&ITCLV3)->bits.upper)
#define ILV_SPIA_0 (((volatile ILV_RegBit *)&ITCLV4)->bits.lower)
#define ILV_I2C_0 (((volatile ILV_RegBit *)&ITCLV4)->bits.upper)
#define ILV_T16B_0 (((volatile ILV_RegBit *)&ITCLV5)->bits.lower)
#define ILV_T16B_1 (((volatile ILV_RegBit *)&ITCLV5)->bits.upper)
#define ILV_UART_1 (((volatile ILV_RegBit *)&ITCLV6)->bits.lower)
#define ILV_SNDA_0 (((volatile ILV_RegBit *)&ITCLV6)->bits.upper)
#define ILV_REMC2_0 (((volatile ILV_RegBit *)&ITCLV7)->bits.lower)
#define ILV_LCD8B (((volatile ILV_RegBit *)&ITCLV7)->bits.upper)
#define ILV_RFC_0 (((volatile ILV_RegBit *)&ITCLV8)->bits.lower)
#define ILV_RFC_1 (((volatile ILV_RegBit *)&ITCLV8)->bits.upper)
#define ILV_T16_2 (((volatile ILV_RegBit *)&ITCLV9)->bits.lower)
#define ILV_SPIA_1 (((volatile ILV_RegBit *)&ITCLV9)->bits.upper)
#define ILV_T16_3 (((volatile ILV_RegBit *)&ITCLV10)->bits.lower)
#define ILV_ADC12_0 (((volatile ILV_RegBit *)&ITCLV10)->bits.upper)
#define ILV_T16B_2 (((volatile ILV_RegBit *)&ITCLV11)->bits.lower)
// WDT
#define WDTCLK REG(0x40a0)
#define WDTCTL REG(0x40a2)
// RTCA
#define RTCCTL REG(0x40c0)
#define RTCALM1 REG(0x40c2)
#define RTCALM2 REG(0x40c4)
#define RTCSWCTL REG(0x40c6)
#define RTCSEC REG(0x40c8)
#define RTCHUR REG(0x49ca)
#define RTCMON REG(0x40cc)
#define RTCYAR REG(0x40ce)
#define RTCINTF REG(0x40d0)
#define RTCINTE REG(0x40d2)
// SVD
#define SVDCLK REG(0x4100)
#define SVDCTL REG(0x4102)
#define SVDINTF REG(0x4104)
#define SVDINTE REG(0x4016)
// T16_0
#define T16_0CLK REG(0x4160)
#define T16_0MOD REG(0x4162)
#define T16_0CTL REG(0x4164)
#define T16_0TR REG(0x4166)
#define T16_0TC REG(0x4168)
#define T16_0INTF REG(0x416a)
#define T16_0INTE REG(0x416c)
// FLASHC
#define FLASHCWAIT REG(0x41b0)
// PPORT
#define P0DAT REG(0x4200)
#define P0IOEN REG(0x4202)
#define P0RCTL REG(0x4204)
#define P0INTF REG(0x4206)
#define P0INTCTL REG(0x4208)
#define P0CHATEN REG(0x420a)
#define P0MODSEL REG(0x420c)
#define P0FNCSEL REG(0x420e)
#define P1DAT REG(0x4210)
#define P1IOEN REG(0x4212)
#define P1RCTL REG(0x4214)
#define P1INTF REG(0x4216)
#define P1INTCTL REG(0x4218)
#define P1CHATEN REG(0x421a)
#define P1MODSEL REG(0x421c)
#define P1FNCSEL REG(0x421e)
#define P2DAT REG(0x4220)
#define P2IOEN REG(0x4222)
#define P2RCTL REG(0x4224)
#define P2INTF REG(0x4226)
#define P2INTCTL REG(0x4228)
#define P2CHATEN REG(0x422a)
#define P2MODSEL REG(0x422c)
#define P2FNCSEL REG(0x422e)
#define P3DAT REG(0x4230)
#define P3IOEN REG(0x4232)
#define P3RCTL REG(0x4234)
#define P3INTF REG(0x4236)
#define P3INTCTL REG(0x4238)
#define P3CHATEN REG(0x423a)
#define P3MODSEL REG(0x423c)
#define P3FNCSEL REG(0x423e)
#define P4DAT REG(0x4240)
#define P4IOEN REG(0x4242)
#define P4RCTL REG(0x4244)
#define P4INTF REG(0x4246)
#define P4INTCTL REG(0x4248)
#define P4CHATEN REG(0x424a)
#define P4MODSEL REG(0x424c)
#define P4FNCSEL REG(0x424e)
#define P5DAT REG(0x4250)
#define P5IOEN REG(0x4252)
#define P5RCTL REG(0x4254)
#define P5INTF REG(0x4256)
#define P5INTCTL REG(0x4258)
#define P5CHATEN REG(0x425a)
#define P5MODSEL REG(0x425c)
#define P5FNCSEL REG(0x425e)
#define P6DAT REG(0x4260)
#define P6IOEN REG(0x4262)
#define P6RCTL REG(0x4264)
#define P6INTF REG(0x4266)
#define P6INTCTL REG(0x4268)
#define P6CHATEN REG(0x426a)
#define P6MODSEL REG(0x426c)
#define P6FNCSEL REG(0x426e)
#define P7DAT REG(0x4270)
#define P7IOEN REG(0x4272)
#define P7RCTL REG(0x4274)
#define P7INTF REG(0x4276)
#define P7INTCTL REG(0x4278)
#define P7CHATEN REG(0x427a)
#define P7MODSEL REG(0x427c)
#define P7FNCSEL REG(0x427e)
#define P8DAT REG(0x4280)
#define P8IOEN REG(0x4282)
#define P8RCTL REG(0x4284)
#define P8INTF REG(0x4286)
#define P8INTCTL REG(0x4288)
#define P8CHATEN REG(0x428a)
#define P8MODSEL REG(0x428c)
#define P8FNCSEL REG(0x428e)
#define PDDAT REG(0x42d0)
#define PDIOEN REG(0x42d2)
#define PDRCTL REG(0x42d4)
#define PDMODSEL REG(0x42dc)
#define PDFNCSEL REG(0x42de)
#define PCLK REG(0x42e0)
#define PINTFGRP REG(0x42e2)
// UPMUX
#define P0UPMUX0 REG(0x4300)
#define P0UPMUX1 REG(0x4302)
#define P0UPMUX2 REG(0x4304)
#define P0UPMUX3 REG(0x4306)
#define P1UPMUX0 REG(0x4308)
#define P1UPMUX1 REG(0x430a)
#define P1UPMUX2 REG(0x430c)
#define P1UPMUX3 REG(0x430e)
#define P2UPMUX0 REG(0x4310)
#define P2UPMUX1 REG(0x4312)
#define P2UPMUX2 REG(0x4314)
#define P2UPMUX3 REG(0x4316)
#define P3UPMUX0 REG(0x4318)
#define P3UPMUX1 REG(0x431a)
#define P3UPMUX2 REG(0x431c)
#define P3UPMUX3 REG(0x431e)
// UART0
#define UA0CLK REG(0x4380)
#define UA0MOD REG(0x4382)
#define UA0BR REG(0x4384)
#define UA0CTL REG(0x4386)
#define UA0TXD REG(0x4388)
#define UA0RXD REG(0x438a)
#define UA0INTF REG(0x438c)
#define UA0INTE REG(0x438e)
// T16_1
#define T16_1CLK REG(0x43a0)
#define T16_1MOD REG(0x43a2)
#define T16_1CTL REG(0x43a4)
#define T16_1TR REG(0x43a6)
#define T16_1TC REG(0x43a8)
#define T16_1INTF REG(0x43aa)
#define T16_1INTE REG(0x43ac)
// SPIA0
#define SPI0MOD REG(0x43b0)
#define SPI0CTL REG(0x43b2)
#define SPI0TXD REG(0x43b4)
#define SPI0RXD REG(0x43b6)
#define SPI0INTF REG(0x43b8)
#define SPI0INTE REG(0x43ba)
// I2C
#define I2C0CLK REG(0x43c0)
#define I2C0MOD REG(0x43c2)
#define I2C0BR REG(0x43c4)
#define I2C0OADR REG(0x43c8)
#define I2C0CTL REG(0x43ca)
#define I2C0TXD REG(0x43cc)
#define I2C0RXD REG(0x43ce)
#define I2C0INTF REG(0x43d0)
#define I2C0INTE REG(0x43d2)
// T16B0
#define T16B0CLK REG(0x5000)
#define T16B0CTL REG(0x5002)
#define T16B0MC REG(0x5004)
#define T16B0TC REG(0x5006)
#define T16B0CS REG(0x5008)
#define T16B0INTF REG(0x500a)
#define T16B0INTE REG(0x500c)
#define T16B0CCCTL0 REG(0x5010)
#define T16B0CCR0 REG(0x5012)
#define T16B0CCCTL1 REG(0x5018)
#define T16B0CCR1 REG(0x501a)
// T16B1
#define T16B1CLK REG(0x5040)
#define T16B1CTL REG(0x5042)
#define T16B1MC REG(0x5044)
#define T16B1TC REG(0x5046)
#define T16B1CS REG(0x5048)
#define T16B1INTF REG(0x504a)
#define T16B1INTE REG(0x504c)
#define T16B1CCCTL0 REG(0x5050)
#define T16B1CCR0 REG(0x5052)
#define T16B1CCCTL1 REG(0x5058)
#define T16B1CCR1 REG(0x505a)
// T16B2
#define T16B2CLK REG(0x5080)
#define T16B2CTL REG(0x5082)
#define T16B2MC REG(0x5084)
#define T16B2TC REG(0x5086)
#define T16B2CS REG(0x5088)
#define T16B2INTF REG(0x508a)
#define T16B2INTE REG(0x508c)
#define T16B2CCCTL0 REG(0x5090)
#define T16B2CCR0 REG(0x5092)
#define T16B2CCCTL1 REG(0x5098)
#define T16B2CCR1 REG(0x509a)
// UART1
#define UA1CLK REG(0x5200)
#define UA1MOD REG(0x5202)
#define UA1BR REG(0x5204)
#define UA1CTL REG(0x5206)
#define UA1TXD REG(0x5208)
#define UA1RXD REG(0x520a)
#define UA1INTF REG(0x520c)
#define UA1INTE REG(0x520e)
// T16_2
#define T16_2CLK REG(0x5260)
#define T16_2MOD REG(0x5262)
#define T16_2CTL REG(0x5264)
#define T16_2TR REG(0x5266)
#define T16_2TC REG(0x5268)
#define T16_2INTF REG(0x526a)
#define T16_2INTE REG(0x526c)
// SPIA1
#define SPI1MOD REG(0x5270)
#define SPI1CTL REG(0x5272)
#define SPI1TXD REG(0x5274)
#define SPI1RXD REG(0x5276)
#define SPI1INTF REG(0x5278)
#define SPI1INTE REG(0x527a)
// SNDA
#define SNDCLK REG(0x5300)
#define SNDSEL REG(0x5302)
#define SNDCTL REG(0x5304)
#define SNDDAT REG(0x5306)
#define SNDINTF REG(0x5308)
#define SNDINTE REG(0x530a)
// REMC2
#define REMCLK REG(0x5320)
#define REMDBCTL REG(0x5322)
#define REMDBCNT REG(0x5324)
#define REMAPLEN REG(0x5326)
#define REMDBLEN REG(0x5328)
#define REMINTF REG(0x532a)
#define REMINTE REG(0x532c)
#define REMCARR REG(0x5330)
#define REMCCTL REG(0x5332)
// LCD8B
#define LCD8CLK REG(0x5400)
#define LCD8CTL REG(0x5402)
#define LCD8TIM1 REG(0x5404)
#define LCD8TIM2 REG(0x5406)
#define LCD8PWR REG(0x5408)
#define LCD8DSP REG(0x540a)
#define LCD8COMC0 REG(0x540c)
#define LCD8INTF REG(0x5410)
#define LCD8INTE REG(0x5412)
// RFC0
#define RFC0CLK REG(0x5440)
#define RFC0CTL REG(0x5442)
#define RFC0TRG REG(0x5444)
#define RFC0MCL REG(0x5446)
#define RFC0MCH REG(0x5448)
#define RFC0MC REG32(0x5446)
#define RFC0TCL REG(0x544a)
#define RFC0TCH REG(0x544c)
#define RFC0TC REG32(0x544a)
#define RFC0INTF REG(0x544e)
#define RFC0INTE REG(0x5450)
// RFC1
#define RFC1CLK REG(0x5460)
#define RFC1CTL REG(0x5462)
#define RFC1TRG REG(0x5464)
#define RFC1MCL REG(0x5466)
#define RFC1MCH REG(0x5468)
#define RFC1MC REG32(0x5466)
#define RFC1TCL REG(0x546a)
#define RFC1TCH REG(0x546c)
#define RFC1TC REG32(0x546a)
#define RFC1INTF REG(0x546e)
#define RFC1INTE REG(0x5470)
// T16_3
#define T16_3CLK REG(0x5480)
#define T16_3MOD REG(0x5482)
#define T16_3CTL REG(0x5484)
#define T16_3TR REG(0x5486)
#define T16_3TC REG(0x5488)
#define T16_3INTF REG(0x548a)
#define T16_3INTE REG(0x548c)
// ADC12A
#define ADC12_0CTL REG(0x54a2)
#define ADC12_0TRG REG(0x54a4)
#define ADC12_0CFG REG(0x54a6)
#define ADC12_0INTF REG(0x54a8)
#define ADC12_0INTE REG(0x54aa)
#define ADC12_0AD0D REG(0x54ac)
#define ADC12_0AD1D REG(0x54ae)
#define ADC12_0AD2D REG(0x54b0)
#define ADC12_0AD3D REG(0x54b2)
#define ADC12_0AD4D REG(0x54b4)
#define ADC12_0AD5D REG(0x54b6)
#define ADC12_0AD6D REG(0x54b8)
#define ADC12_0AD7D REG(0x54ba)
// TSRVR
#define TSRVR0TCTL REG(0x54c0)
#define TSRVR0VCTL REG(0x54c2)
// DBG
#define DBRAM REG(0xffff90)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment