Download HY16F18X HYCON IP User`s Manual

Transcript
HY16F18X
HYCON IP User’s Manual
.
© 2013 HYCON Technology Corp.
www.hycontek.com
APD-HY16F003-V03_EN
HY16F18X
HYCON IP User’s Manual
Table of Contents
1. Document Description ..................................................................................................3
2. IC Description ................................................................................................................3
3. Digital IP (Timer A) .........................................................................................................6
4. Digital IP (Timer B).........................................................................................................8
5. Digital IP(Timer C)........................................................................................................10
6. Digital IP(WDT) .............................................................................................................12
7. Digital IP (PWM) ...........................................................................................................14
8. Analog IP(DAC) ............................................................................................................17
9. Analog IP (OPAMP) ......................................................................................................20
10. Analog IP (ADC) .........................................................................................................23
11. Analog IP (CMP) .........................................................................................................27
12. Communication IP (SPI) ............................................................................................30
13. Communication IP (UART) ........................................................................................34
14. Communication IP (I2C) .............................................................................................38
15. Peripheral IP(GPIO) ...................................................................................................42
16. Peripheral IP (Power).................................................................................................45
17. Digital IP(RTC)............................................................................................................49
.
18. Appendix Program.....................................................................................................52
19. Revision History ........................................................................................................52
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 2
HY16F18X
HYCON IP User’s Manual
1. Document Description
HYCON IP(Intellectual Property) represents all internal IP of HYCON 32-bit MCU. This
document aims at describing SOC IC internal digital, analog, communication and peripheral
IP of HY16F18X Series, of which can be grouped into four categories:
(1) Digial IPĈTimerA/TimerB/TimerC/WDT/PWM/Hardware RTC
(2) Analog IPĈDAC/ADC/OPAMP/Analog CMP
(3) Communication IPĈHardware 32-bit SPI/ Hardware UART/ Hardware I2C
(4) Peripheral IPĈGPIO/Sleep/Idle
2. IC Description
VPP
R S T /N M I/P T 4 .0
PT2.4/XOUT
PT2.5/XIN
PT2.6/LXIN
PT2.7/LXOUT
VDD
NC
VDD3V
CH
CL
VSS
CP_I
Basic description of each HY16F188 IP.
UART
3 2 -b it S P I
I2 C
P T 2 .3
H a rd w a re
RTC
C lo c k S y s te m
1 6 -b it P W M
T im e rA /B /C
P T 2 .3
.
P T 2 .1
P T 1 .0
D ebug
M o d u le
8KB
SRAM
P T 1 .1
P T 2 .0
N8
3 2 -b it M C U
64K B
F la s h
P T 1 .2
Pow er
M anagem ent
P T 3 .0
P T 3 .1
P T 1 .3
W a tc h D o g
R e s e t C o n tro l
R a il-to -R a il
OPAMP
P T 1 .4
P T 3 .2
LN PG A
B andgap
2 4 -b it A D C
A n a lo g
C o m p a ra to r
C h a rg e P u m p
8 -b it D A C
Touch K ey
P T 1 .5
P T 3 .3
P T 1 .6
P T 3 .4
© 2013 HYCON Technology Corp
www.hycontek.com
PT3.6/OPO2
AIO3
AIO2
AIO1
AIO0
VDDA
PT3.7/OPO1
EDIO
P T 3 .5
ECK
P T 1 .7
APD-HY16F003-V03_EN
Page 3
HY16F18X
HYCON IP User’s Manual
(01) Adopting Andes Technology newest 32-bit CPU core, N801 processor.
(02) Voltage operation range: 2.0~3.6V; temperature operation range: -40℃~85℃.
(03) Support external 20MHz crystal oscillator or internal 20MHz RC oscillator, having
multiple switch options of CPU operation clock source to enable the best
power-efficient plan.
(3.1) operation mode: 350uAƧ2MHz/2
(3.2) standby mode: 10uA@35KHz/2
(3.3) sleep mode: 2.5uA
(04) Program memory: 64K-Byte Flash ROM
(05) Data memory: 08K-Byte SRAM
(06) BOR and WDT function to prevent CPU from crashing
(07) 24-bit high resolution Σ∆ADC
(7.1) Built-in PGA (Programmable Gain Amplifier), 128 times max.
(7.2) Built-in temperature sensor, TPS
(08) Built-in 1 OPA and 1 analog comparator (16 steps programmable resistor)
(09) Built-in hardware 8-bit DAC
(10) 16-bit Timer A
(11) 16-bit Timer B module has PWM waveform generating function
(12) 16-bit Timer C module has digital Capture/Compare function
(13) Hardware serial communication 32-bit SPI/I2C/UART module
(14) Hardware RTC clock function module
(15) Hardware Touch KEY function module
.
※ Interrupt Vice Program Declaration
No.
Interrupt Vice
Description
Program Declaration
HW0
void HW0_ISR(void) Communication IP
HW1
void HW1_ISR(void) Digital IP
HW2
void HW2_ISR(void) ADC IP
HW3
void HW3_ISR(void) CMP IP
HW4
void HW4_ISR(void) PT1 IP
HW5
void HW5_ISR(void) PT2 IP
01
02
03
04
05
06
Digital IP
TimerA
TimerB
TimerC
WDT
PWM
Hardware RTC
© 2013 HYCON Technology Corp
www.hycontek.com
Analog IP
8-bit DAC
R2R OPAMP
24-bit SD ADC
Analog CMP
ů
ů
Remark
UART/I2C/32-bit SPI
Timer A/B/C & WDT/RTC
SD 24-bit ADC
Analog CMP/OPAMP
PT1.0~PT1.7
PT2.0~PT2.7
Communication IP
Hardware 32-bit SPI
Hardware UART
Hardware I2C
ů
ů
ů
Peripheral IP
GPIO
Sleep Mode
Idle Mode
ů
ů
ů
APD-HY16F003-V03_EN
Page 4
HY16F18X
HYCON IP User’s Manual
Timer C
0
TCI1_1
TCI2_1
TCI1_2
TCI2_2
TCI1_3
TCI2_3
TCI1_4
TCI2_4
TCI1_5
TCI2_5
TCI1_6
TCI2_6
TCI1_7
TCI2_7
TCI1_8
TCI2_8
SPI
1
CS_1
CK_1
MISO_1
MOSI_1
CS_2
CK_2
MISO_2
MOSI_2
CS_3
CK_3
MISO_3
MOSI_3
CS_4
CK_4
MISO_4
MOSI_4
IIC
2
SCL_1
SDA_1
SCL_2
SDA_2
SCL_3
SDA_3
SCL_4
SDA_4
SCL_5
SDA_5
SCL_6
SDA_6
SCL_7
SDA_7
SCL_8
SDA_8
UART
3
TX_1
RX_1
TX_2
RX_2
TX_3
RX_3
TX_4
RX_4
TX_5
RX_5
TX_6
RX_6
TX_7
RX_7
TX_8
RX_8
CMP
4
CH1
CH2
CH3
CL1
CL2
CL3
CL4
CMPO1
OPO1
OPO2
.
PT3.3
PT3.4
PT3.5
NC
PT3.2
PT3.0
PT3.1
PT2.0
PT2.1
25
37
26
PT2.4
NC
24
38
27
PT2.5
REFO/PT3.6
23
39
28
PT2.6
AIO3
22
40
PT2.2
30 29
PT2.7
AIO2
21
41
31
VDD
AIO1
20
42
32
NC
AIO0
19
43
PT2.3
34 33
VDD3
VDDA
18
44
35
CP_O
NC
17
CH
NC
16
CL
PT3.7
15
CP_I
EDIO
14
VSS
ECK
13
© 2013 HYCON Technology Corp
www.hycontek.com
PWM
6
PWM0_1
PWM1_1
PWM0_2
PWM1_2
PWM0_3
PWM1_3
PWM0_4
PWM1_4
PWM0_5
PWM1_5
PWM0_6
PWM1_6
PWM0_7
PWM1_7
PWM0_8
PWM1_8
DAO
AIO4
AIO5
AIO6
AIO7
REFO
OPO
9
10
11
NC
8
PT1.7
PT1.6
7
PT1.5
6
PT1.4
5
PT1.3
4
PT1.2
PT1.1
3
PT1.0
2
PT4.0/RST
VPP
NC
HY16F188
LQFP48
1
Analog
5
AIO0
AIO1
AIO2
AIO3
45
36
NC
RST/NMI
46
LSXT1
LSXT2
HSXT1
HSXT2
Interrupt
0
INT1.0
INT1.1
INT1.2
INT1.3
INT1.4
INT1.5
INT1.6
INT1.7
INT2.0
INT2.1
INT2.2
INT2.3
INT2.4
INT2.5
INT2.6
INT2.7
47
OSC
0
48
GPIO Port
Priority
PT1.0
PT1.1
PT1.2
PT1.3
PT1.4
PT1.5
PT1.6
PT1.7
PT2.0
PT2.1
PT2.2
PT2.3
PT2.4
PT2.5
PT2.6
PT2.7
PT3.0
PT3.1
PT3.2
PT3.3
PT3.4
PT3.5
PT3.6
PT3.7
PT4.0
AIO0
AIO1
AIO2
AIO3
12
APD-HY16F003-V03_EN
Page 5
HY16F18X
HYCON IP User’s Manual
3. Digital IP (Timer A)
3.1 Example Name
Timer A usage and description
3.2 Example Description
(1) Using TimerA to interrupt
(2) Every time TimerA interrupted, IO toggled.
Ex: Before interrupt: 0X5, after interrupt: 0XA
3.3 System Setup
TMACLKS
ENTMACLK
ENHOSC_EXT
Ext
OSC_HS
4~20MHz
XIN(PT2.6)
XOUT(PT2.7)
HAO=2MHz
HAO=4MHz
HAO=10MHz
HAO=20MHz
00
01
10
11
HOSC_S
OSC_HSXT
1
HS_S
0
1
ENTMA
.
CLR_TMA
TMACLK
LPO
32KHz
PT2.0
PT2.1
PT2.2
PT2.3
OSC_LSXT
1
0
LS_S
TMA stop
Timer A
Timer A
Sleep( )
LOSC_S
Ext OSC_LS
32.768KHz
TMACLK
÷32
OSC_HSRC
ENLOSC_EXT
LXOUT(PT2.5)
0
LS_CK
HS_CK
ENHAO
HAOTR[7:0]
HAO_SEL[1:0]
LXIN(PT2.4)
HS_CK
LS_CK
OSC_LSRC
TMAS[3:0]
TMAR[15:0]
0000
TMACLK÷2
0001
TMACLK÷4
0010
TMACLK÷8
0011
TMACLK÷16
0100
TMACLK÷32
0101
TMACLK÷64
0110
TMACLK÷128
0111
TMACLK÷256
1000
TMACLK÷512
1001
TMACLK÷1024
1010
TMACLK÷2048
1011
TMACLK÷4096
1100
TMACLK÷8192
1101
TMACLK÷16384
1110
TMACLK÷32768
1111
TMACLK÷65536
TMAIF
interrupt
(1) Default operation frequency of clock source is 2MHz (high speed internal oscillator), up
to [email protected] max..
(2) Adopting HYCON C library, DrvTMA_Open(X,Y) can start TimerA IP and Timer A Clock.
X represents TMAR frequency divider, select 15 is divided by 65536.
Y represents selecting high speed or low speed CPU Clock to enter Timer A IP
(3) HYCON C library DrvTIMER_EnableInt(E_TMA), meaning to enable Timer A interrupt.
(4) HYCON C library DrvTIMER_ClearIntFlag(E_TMA), meaning to clear Timer A interrupt
flag.
(5) Timer A/B/C and WDT is classified as HW1 interrupt, using form is void HW1_ISR(void).
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 6
HY16F18X
HYCON IP User’s Manual
3.4 Software Flow
Program
Start
Interrupt
Vice Program
Initializing
Setup
Clear
Interrupt Flag
TimerA
Setup
IO Toggle
Waiting
Interrupt
Back to
Main Program
3.5 Program Description
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
20
21
22
23
24
25
26
27
28
29
30
#include "HY16F18X.h"
unsigned int i;
.
int main(void)
{
i=0X05;
DrvGPIO_Open(E_PT2,0X0F,E_IO_OUTPUT);
DrvGPIO_SetPortBits(E_PT2,i);
//PT2_0~3 Set Output
//PT2 Output i=0X05
DrvTMA_Open(15,0);
//Timer A Overflow
//15 : taclk/65536/32;TMRDV=÷32
// 0 : HS_CK
DrvTIMER_ClearIntFlag(E_TMA);
DrvTIMER_EnableInt(E_TMA);
//Clear Timer A interrupt flag
//Timer A interrupt enable
SYS_EnableGIE(7);
//Enable GIE
while(1);
//Wait for Interrupt
}
void HW1_ISR(void)
{
DrvTIMER_ClearIntFlag(E_TMA);
i=i^0XF;
DrvGPIO_SetPortBits(E_PT2,i);
}
© 2013 HYCON Technology Corp
www.hycontek.com
//Clear TMA interrupt flag
//i XOR 0XF
//PT2 Output i=0X0A~0X05
APD-HY16F003-V03_EN
Page 7
HY16F18X
HYCON IP User’s Manual
4. Digital IP (Timer B)
4.1 Example Name
Timer B usage and description
4.2 Example Description
(1) Using TimerB interrupt
(2) Every time TimerB interrupted, IO toggled.
Ex. Before interrupt: 0X5, after interrupt: 0XA
4.3 System Setup
TMB_MODE[1:0]
PT2.0
00
01
10
11
If TMBR[15:0]=TMBC0[15:0] Then TMBIF=1
PT2.1
IF TMBR[15:0]=TMBC0[15:0] and TMBR[15:0]=0 Then TMBIF=1
If TMBR[15:8] and TMBR[7:0]=TMBC0[7:0] Then TMBIF=1
PT2.2
If TMBR[7:0]=TMBC0[7:0] Then TMBIF=1, TMBR[15:8]+1
Timer B
ENTMB
CLR_TMB
PT2.3
TMBR[15:8] TMBR[7:0]
TMBCLK
ENLOSC_EXT
LOSC_S
LXIN(PT2.4)
Ext OSC_LS
32.768KHz
LXOUT(PT2.5)
OSC_LSXT
1
0
LPO
32KHz
LS_S
LS_CK
.
Logic High
CMPO
OPODIG
CPI1
Comparator
00
01
10
11
TMB
Interrupt
TMBIF
TMBC0[15:0]
TMBC1_PWM[15:0]
TMB_TRG[1:0]
OSC_LSRC
TMBC2_PWM[15:0]
ENHOSC_EXT
Ext
OSC_HS
4~20MHz
XIN(PT2.6)
XOUT(PT2.7)
HAO=2MHz
HAO=4MHz
HAO=10MHz
HAO=20MHz
00
01
10
11
ENHAO
HAOTR[7:0]
HAO_SEL[1:0]
HOSC_S
OSC_HSXT
1
HS_S
0
HS_CK
HS_CK
LS_CK
00(÷1)
01(÷2)
10(÷4)
11(÷8)
0
1
TMBCLK
Timer B
Timer C
OSC_HSRC
TMBCLKS
ENTMBCLK
TMBCLK_PRE[1:0]
(1) Adopting HYCON C library, DrvTMBC_Clk_Source(X,Y) can select Timer B clock
source. X is to select high/low speed. X=0 is HS_CK, Y is to select frequency divider. If
Y=3, it means Timer B IP clock source frequency divides 8.
(2) Library DrvTMB_Open(E_TMB_MODE0,E_TMB_NORMAL,0XFFFF): TimerB IP setup
including Mode select, enabling Timer B and Timer B counter setup.
(3) HYCON C library DrvTIMER_EnableInt(E_TMB): to enableTimer B interrupt.
(4) HYCON C library DrvTIMER_ClearIntFlag(E_TMB): to clear TimerB interrupt flag.
(5) Timer A/B/C and WDT is classified as HW1interrupt, using form is void HW1_ISR(void).
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 8
HY16F18X
HYCON IP User’s Manual
4.4 Software Flow
Program
Start
Interrupt
Vice Program
Initializing
Setup
Clear
Interrupt Flag
TimerB
Setup
IO Toggle
Waiting
Interrupt
Back to
Main Program
4.5 Program Description
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "HY16F18X.h"
unsigned int i;
int main(void)
.
{
i=0X05;
DrvGPIO_Open(E_PT2,0X0F,E_IO_OUTPUT);
DrvGPIO_SetPortBits(E_PT2,i);
DrvTMBC_Clk_Source(0,3);
//PT2_0~3 Set Output
//PT2 Output i=0X05
//Timer B Prescaler 1
//0: HS_CK,clock source.
//3: clock divider.÷8
DrvTMB_Open(E_TMB_MODE0,E_TMB_NORMAL,0XFFFF); //Timer B overflow 0XFFFF
DrvTIMER_ClearIntFlag(E_TMB);
//Clear TMB interrupt flag
DrvTIMER_EnableInt(E_TMB);
//Timer B interrupt enable
SYS_EnableGIE(7);
//Enable GIE
while(1);
//Wait for Interrupt
}
void HW1_ISR(void)
{
DrvTIMER_ClearIntFlag(E_TMB);
i=i^0XF;
DrvGPIO_SetPortBits(E_PT2,i);
}
© 2013 HYCON Technology Corp
www.hycontek.com
//Clear TMB interrupt flag
//i XOR 0XF
//PT2 Output i=0X0A~0X05
APD-HY16F003-V03_EN
Page 9
HY16F18X
HYCON IP User’s Manual
5. Digital IP(Timer C)
5.1Example Name
Timer C usage and description
5.2 Example Description
(1) Using TimerC to interrupt
(2) Every time TimerC interrupted, IO toggled.
Ex. Before interrupt: 0X5, after interrupt: 0XA.
5.3 System Setup
ENTMBCLK
TMBCLK_PRE[1:0]
ENLOSC_EXT
TMBCLKS
LOSC_S
LXIN(PT2.4)
Ext OSC_LS
32.768KHz
LXOUT(PT2.5)
LPO
32KHz
OSC_LSXT
1
0
LS_CK
HS_CK
LS_CK
LS_S
Ext
OSC_HS
4~20MHz
XOUT(PT2.7)
HAO=2MHz
HAO=4MHz
HAO=10MHz
HAO=20MHz
00
01
10
11
HOSC_S
OSC_HSXT
1
TMBCLK
Timer B
Timer C
OSC_LSRC
ENHOSC_EXT
XIN(PT2.6)
00(÷1)
01(÷2)
10(÷4)
11(÷8)
0
.
HS_CK
1
HS_S
0
OSC_HSRC
CPI1_PRE[3:0]
ENHAO
HAOTR[7:0]
HAO_SEL[1:0]
Timer C
0000(/1)
0001(/2)
0010(/4)
CPI1_SEL[1:0]
0011(/8)
0100(/16)
CPI1_TRG
0101(/32)
CMPO
OPODIG
LS_CK
TMCI1
00
01
10
11
0110(/64)
0111(/128)
1
1000(/256)
0
TMC1IF
ENTMC
1001(/512)
1010(/1024)
TMCR1[15:0]
1011(/2048)
1100(/4096)
PT2.0
PT2.1
1101(/8192)
TMBR[15:0]
1110(/16384)
1111(/32768)
PT2.2
CPI2_SEL
PT2.3
TMCI2
1
0
TMCR2[15:0]
CPI2_TRG
1
0
TMC2IF
(1) DrvTMB_Open( ) will enable Timer B.
(2) DrvCapture1_Open( ); configuring Timer C 0.
(3) DrvCapture2_Open( ); condiguring Timer C1.
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 10
HY16F18X
HYCON IP User’s Manual
5.4 Software Flow
Program
Start
Interrupt
Vice Program
Initializing
Setup
Clear
Interrupt Flag
TimerC
Setup
IO Toggle
Waiting
Interrupt
Back to
Main Program
5.5 Program Description
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "HY16F18X.h"
unsigned int i;
int main(void)
{
.
i=0X05;
DrvGPIO_Open(E_PT2,0X0F,E_IO_OUTPUT);
DrvGPIO_SetPortBits(E_PT2,i);
DrvTMBC_Clk_Source(0,0);
//PT2_0~3 Set Output
//PT2 Output i=0X05
//Timer B Prescaler 1
//0: HS_CK,clock source.
//0: clock divider.÷1
DrvTMB_Open(E_TMB_MODE0,E_TMB_NORMAL,0XFFFF); //Timer B overflow 0XFFFF
DrvCapture1_Open(2,14,1);
//TimerC0 use as Capture 1
//input source selection
//2:LS_CK
//14:÷16384 1:Positive-edge trigger
DrvCapture2_Open(1,1);
//TimerC1 use as Capture 2
// input source selection
DrvTIMER_ClearIntFlag(E_TMC0);
DrvTIMER_ClearIntFlag(E_TMC1);
//Clear TMC0 interrupt flag
//Clear TMC1 interrupt flag
DrvTIMER_EnableInt(E_TMC0);
DrvTIMER_EnableInt(E_TMC1);
//TimerC0 interrupt enable
//TimerC1 interrupt enable
SYS_EnableGIE(7);
//Enable GIE
while(1);
//Wait for Interrupt
}
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 11
HY16F18X
HYCON IP User’s Manual
37
38 void HW1_ISR(void)
39 {
40
DrvTIMER_ClearIntFlag(E_TMC0);
41
DrvTIMER_ClearIntFlag(E_TMC1);
42
i=i^0XF;
43
DrvGPIO_SetPortBits(E_PT2,i);
44 }
45
//Clear TMC0 interrupt flag
//Clear TMC1 interrupt flag
//i XOR 0XF
//PT2 Output i=0X0A~0X05
6. Digital IP(WDT)
6.1 Example Name
WDT usage and description
6.2 Example Description
(1) Using WDT interrupt
(2) Every time WDT interrupted, IO toggled.
Ex. Before interrupt: 0X5, after interrupt: 0XA
.
6.3 System Setup
LPO
32KHz
CLR_WDT
Reset signal
ENWDT
LPO
PT2.0
÷256
WDTCLK
FWT
WDTCLK
WDT
ENWCLK
PT2.1
PT2.2
PT2.3
WDT_SEL[2:0]
WDTR[14:0]
FWT÷2
000
FWT÷8
001
FWT÷32
010
FWT÷128
011
FWT÷512
100
FWT÷2048
101
FWT÷8192
110
FWT÷32768
111
Main code Reset
WDT Interrupt
(WDTIF)
IDLE( )
(1) DrvWDT_Open( ) will enable WDT
(2) DrvTIMER_EnableInt(E_WDT): enable WDT interrupt
(3) DrvTIMER_ClearIntFlag(E_WDT): clear WDT interrupt flag
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 12
HY16F18X
HYCON IP User’s Manual
6.4 Software Flow
Program
Start
Interrupt
Vice Program
Initializing
Setup
Clear
Interrupt Flag
WDT Setup
IO Toggle
Waiting
Interrupt
Back to
Main Program
6.5 Program Description
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
20
21
22
23
24
25
26
27
28
#include "HY16F18X.h"
unsigned int i;
int main(void)
.
{
i=0X05;
DrvGPIO_Open(E_PT2,0X0F,E_IO_OUTPUT);
DrvGPIO_SetPortBits(E_PT2,i);
//PT2_0~3 Set Output
//PT2 Output i=0X05
DrvWDT_Open(E_IRQ,E_PRE_SCALER_D32); //WDT IRQ open prescaler 32
DrvWDT_ClearWDT();
DrvTIMER_EnableInt(E_WDT);
//Clear WDT interrupt flag
//WDT interrupt enable
SYS_EnableGIE(7);
//Enable GIE
while(1);
//Wait for Interrupt
}
void HW1_ISR(void)
{
DrvTIMER_ClearIntFlag(E_WDT);
i=i^0XF;
DrvGPIO_SetPortBits(E_PT2,i);
}
© 2013 HYCON Technology Corp
www.hycontek.com
//Clear WDT interrupt flag
//i XOR 0XF
//PT2 Output i=0X0A~0X05
APD-HY16F003-V03_EN
Page 13
HY16F18X
HYCON IP User’s Manual
7. Digital IP (PWM)
7.1Example Name
PWM output
7.2 Example Description
PT3.0
PT3.1
PT3.2
PT3.3
PT3.4
PT3.5
NC
PT2.1
PT2.3
PT2.0
AIO0
VDDA
NC
NC
PT3.7
EDIO
ECK
NC
PT1.7
PT1.6
PT1.5
PT1.4
PT1.3
PT1.2
37
38
39
40
41
NC
2
42
PT2.2
PT4.0/RST
3
VPP
PT1.0
4
NC
PT1.1
5
43
HY16F188
6
44
PWM
7
45
AIO3
.
8
46
REFO/PT3.6
AIO1
9
47
NC
AIO2
11 01
1
© 2013 HYCON Technology Corp
www.hycontek.com
PWM
PWM0_1
PWM1_1
PWM0_2
PWM1_2
PWM0_3
PWM1_3
PWM0_4
PWM1_4
PWM0_5
PWM1_5
PWM0_6
PWM1_6
PWM0_7
PWM1_7
PWM0_8
PWM1_8
21
VSS
25
13
CP_I
26
14
CL
27
15
CH
28
16
CP_O
29
17
VDD3
30
18
NC
31
19
VDD
IO
PT1.0
PT1.1
PT1.2
PT1.3
PT1.4
PT1.5
PT1.6
PT1.7
PT2.0
PT2.1
PT2.2
PT2.3
PT2.4
PT2.5
PT2.6
PT2.7
32
21 20
PT2.7
34 33
22
PT2.6
35
23
PT2.5
36
24
PT2.4
48
(1) PWM register setup and IO select.
(2) PWM waveform can be observed at PT2.0 and PT2.1.
APD-HY16F003-V03_EN
Page 14
HY16F18X
HYCON IP User’s Manual
7.3 System Setup
TMB_MODE[1:0]
ENTMB
00
01
10
11
If TMBR[15:0]=TMBC0[15:0] Then TMBIF=1
If TMBR[15:0]=TMBC0[15:0] and TMBR[15:0]=0 Then TMBIF=1
If TMBR[15:8] and TMBR[7:0]=TMBC0[7:0] Then TMBIF=1
If TMBR[7:0]=TMBC0[7:0] Then TMBIF=1, TMBR[15:8]+1
TMBCLKS
HS_CK
LS_CK
TMBR[15:8] TMBR[7:0]
TMBCLK_PRE[1:0]
00(÷1)
01(÷2)
10(÷4)
11(÷8)
0
1
CLR_TMB
TMB
Interrupt
TMBCLK
TMBCLK Timer B
Timer C
Logic High
CMPO
OPODIG
CPI1
Comparator
00
01
10
11
TMBC0[15:0]
TMBC1_PWM[15:0]
TMB_TRG[1:0]
ENTMBCLK
TMBIF
TMBC2_PWM[15:0]
PT1.0
PT1.1
PWM0_MODE[2:0]
Ext
OSC_HS
4~20MHz
XIN(PT2.6)
HAO=2MHz
HAO=4MHz
HAO=10MHz
HAO=20MHz
00
01
10
11
PT1.3
ENOUTn.x
ENHOSC_EXT
XOUT(PT2.7)
PT1.2
PWM_PORT[2:0]
HOSC_S
OSC_HSXT
1
HS_S
0
HS_CK
OSC_HSRC
PWMA
PWMB
PWMC
PWMD
PWME
PWMF
PWMG
PWMG
000
001
010
011
100
101
110
111
PWM0
PWM0_INV
1
0
ENPWM0_PT
000
001
010
011
100
101
110
111
PT1.0
PT1.2
PT1.4
PT1.6
PT2.0
PT2.2
PT2.4
PT2.6
ENHAO
HAOTR[7:0]
HAO_SEL[1:0]
PT1.4
PT1.5
PT1.6
PT1.7
PT2.0
PT2.1
PWM1_MODE[2:0]
ENLOSC_EXT
LXIN(PT2.4)
LXOUT(PT2.5)
PWM_PORT[2:0]
LOSC_S
Ext OSC_LS
32.768KHz
LPO
32KHz
OSC_LSXT
1
0
OSC_LSRC
LS_S
PT2.2
ENOUTn.x
LS_CK
PWMA
PWMB
PWMC
PWMD
PWME
PWMF
PWMG
PWMG
000
001
010
011
100
101
110
111
PWM1
.
PWM1_INV
1
0
ENPWM1_PT
000
001
010
011
100
101
110
111
PT2.3
PT1.1
PT1.3
PT1.5
PT1.7
PT2.1
PT2.3
PT2.5
PT2.7
PT2.4
PT2.5
PT2.6
PT2.7
7.4 Software Flow
Program
Start
Initializing
Setup
PWM
Setup
PWM
Waveform Output
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 15
HY16F18X
HYCON IP User’s Manual
7.5 Program Description
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "HY16F18X.h"
int main(void)
{
SYS_DisableGIE();
DrvGPIO_Open(E_PT2,0X03,E_IO_OUTPUT);
//PT2_0~1 Set Output
DrvCLOCK_EnableHighOSC(E_EXTERNAL);
//Select HSXT 4MHz
DrvTMBC_Clk_Source(0,0);
//TimerB Clock enable prescaler 1
DrvTMB_Open(E_TMB_MODE0,E_TMB_NORMAL,0XFFFF);
//TimerB overflow 0XFFFF
//PWM period 0XFFFF
DrvPWM0_Open(0,1,4);
//0:PWM mode
//1:Normal 0:inverse
//4:Select PT2.0 PT2.1 as PWM
DrvPWM1_Open(1,1,4);
//1:PWM mode
//1:Normal 0:inverse
//4:Select PT2.0 PT2.1 as PWM
.
DrvPWM_CountCondition(0X7FFF,0X3FFF);
//pwm0 duty 0X7FFF
//pwm1 duty 0X3FFF
while(1);
//While Loop
}
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 16
HY16F18X
HYCON IP User’s Manual
8. Analog IP(DAC)
8.1 Example Name
DAC usage and description
8.2 Example Description
(1) Setup analog voltage nad digital voltage
(2) Connecting REFO to DAC positive end.
(3) DAC negative end selects VSS, it will pass through AIO4 of OP (Selecting both AIO4
and DAC)
(4) It is through proper DAC network setup can AIO4 output end measures 256-tier DAC
output.
(5) Or adopting DAC specialized analog votlage output pin, PT3.1.
DMM
PT3.3
PT3.4
PT3.5
NC
PT3.2
PT3.0
PT3.1
PT2.0
PT2.1
PT2.3
PT2.2
NC
PT3.7
EDIO
ECK
1
© 2013 HYCON Technology Corp
www.hycontek.com
NC
PT1.7
PT1.6
PT1.5
PT1.4
PT1.3
PT1.2
PT1.1
PT1.0
PT4.0/RST
VPP
NC
HY16F188
2
37
NC
8-bit DAC
3
38
NC
4
39
VDDA
5
40
255/256
6
41
0XFF
7
42
AIO0
8
43
254/256
9
44
AIO1
0XFE
01
45
AIO2
OPPS
11
46
AIO3
21
47
REFO/PT3.6
13
VSS
2/256
NC
14
CP_I
0X01
25
15
CL
1/256
26
16
CH
0X00
27
17
CP_O
DAO
.
28
18
VDD3
DABIT [7:0]
30 29
19
NC
31
20
VDD
32
21
PT2.7
34 33
22
PT2.6
35
23
PT2.5
36
24
PT2.4
48
2.012V
APD-HY16F003-V03_EN
Page 17
HY16F18X
HYCON IP User’s Manual
8.3 System Setup
DAPS[1:0]
VDD3
000
VDDA
001
REFO
010
OPO
011
AIO6
ENDA
DA_Vrefp
DABIT[7:0]
DAOE
100
DABIT[7:0]
DABIT
0X00
1/256
0X01
2/256
0XFE
254/256
0XFF
255/256
256
DAO
Mux
PT3.1
VSS
00
REFO
01
OPO
10
AIO7
11
DA_Vrefn
DANS[1:0]
.
8.4 Software Flow
Program
Start
Initializing
Setup
DAC
Setup
DAC
Voltage Output
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 18
HY16F18X
HYCON IP User’s Manual
8.5 Program Description
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
#include "HY16F18X.h"
int main(void)
{
DrvPMU_VDDA_LDO_Ctrl(E_LDO);
DrvPMU_VDDA_Voltage(E_VDDA3_0);
//LDO ON
//VDDA=3.0
//DrvOP_PInput(0X06);
//DAO output with AIO4(PIN29)
DrvDAC_Enable();
DrvDAC_EnableOutput();
DrvDAC_Open(E_DAC_VDDA,E_DAC_VSSA,0X80);
dac_04=0XFF00+0X80;
pio_28=0X02020000;
//DAC IP enable
//DAC output enable
//DA_Vrefp= VDDA
//DA_Vrefn= VSS
//DAC BIT 0X80
//DAO output with PT3.1
while(1);
//while loop
}
.
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 19
HY16F18X
HYCON IP User’s Manual
9. Analog IP (OPAMP)
9.1 Example Name
OPAMP usage and configuration
9.2 Example Description
PT3.1
PT3.2
PT3.3
PT3.4
NC
PT3.0
PT3.5
PT2.0
AIO0
VDDA
NC
NC
PT3.7
EDIO
ECK
DMM
1.19V
NC
PT1.7
PT1.6
PT1.5
PT1.4
PT1.3
PT1.2
PT1.1
37
38
PT2.1
PT1.0
VPP
2
NC
PT4.0/RST
3
39
PT2.2
4
40
PT2.3
5
41
NC
6
1
© 2013 HYCON Technology Corp
www.hycontek.com
7
42
AIO1
-
HY16F188
8
43
AIO2
R2ROP
9
44
AIO3
+
01
45
REFO/PT3.6
.
11
46
NC
21
47
25
13
VSS
26
14
CP_I
27
15
CL
28
16
CH
29
17
CP_O
30
18
VDD3
31
19
NC
32
20
VDD
33
21
PT2.7
34
22
PT2.6
35
23
PT2.5
36
24
PT2.4
48
(1) Open analog voltage, REFO=1.2V
(2) Connect REFO to OPAMP positive end, V+
(3) Select negative end of OPAMP, OPOI, it will be connected to OPA Unit Gain Buffer at
this time.
(4) Through proper OPAMP network setup, OPO outout end can measure REFO=1.2V.
APD-HY16F003-V03_EN
Page 20
HY16F18X
HYCON IP User’s Manual
9.3 System Setup
AIO2
AIO4
DAO
REFO
OPPS[0]
OPOE
OPPS[1]
OPO
OPDFR
OPPS[3]
OPOR
OPOS
ENOP
+
R2ROP
-
AIO3
OPDEN
OPPS[2]
0
2ms
Delay
OPOI
OPOIF
1
0
1
OPOD
0 OPO1/OPO2
1
OPNS[0]
AIO5
OPNS[1]
DAO
OPNS[2]
OPO
OPNS[3]
OPOI
OPNS[4]
OPOC
OPNS[5]
CHPCK
OPCS
OPOC
1
0
OPOI
VSSA
10pF
9.4 Software Flow
.
Program
Start
Initializing
Setup
OPA
Setup
OPA
Voltage Output
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 21
HY16F18X
HYCON IP User’s Manual
9.5 Program Description
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
#include "HY16F18X.h"
int main(void)
{
DrvPMU_VDDA_LDO_Ctrl(E_LDO);
DrvPMU_VDDA_Voltage(E_VDDA3_0);
DrvPMU_REFO_Enable();
//LDO ON
//VDDA=3.0
//REFO ON
DrvOP_Open();
DrvOP_PInput(0X08);
DrvOP_NInput(0X10);
//OPA positive reference input selection REFO
//OPA negative reference input selection OPOI
DrvOP_OPOoutEnable();
//OP OoutEnable
while(1);
//while loop
}
.
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 22
HY16F18X
HYCON IP User’s Manual
10. Analog IP (ADC)
10.1 Example Name
ADC interrupt usage
10.2 Example Description
NC
PT3.4
PT3.5
PT3.3
PT3.2
PT3.1
PT3.0
PT2.1
PT2.2
PT2.0
AIO0
VDDA
NC
NC
PT3.7
EDIO
ECK
NC
PT1.7
PT1.6
PT1.5
PT1.4
PT1.3
PT1.2
PT1.1
37
38
39
40
PT2.3
2
41
NC
VPP
PT4.0/RST
3
NC
PT1.0
4
42
HY16F188
5
43
AIO1
REFO
6
44
AIO1
7
45
VSS
AIO2
.
8
46
ADC
9
47
AIO3
AIO0
11 01
1
© 2013 HYCON Technology Corp
www.hycontek.com
REFO/PT3.6
21
VSS
NC
13
CP_I
25
14
CL
26
15
CH
27
16
CP_O
28
17
VDD3
30 29
18
NC
31
19
VDD
32
21 20
PT2.7
34 33
22
PT2.6
35
23
PT2.5
36
24
PT2.4
48
(1) It is through ADC related setup, can ADC realize interrupt function.
(2) Set up ADC power, VDDA and REFO.
(3) Set up ADC clock source, ADCCLK.
(2) ADC Vin is AIO0-AIO1.
(3) ADC Vref is REFO to VSS.
APD-HY16F003-V03_EN
Page 23
HY16F18X
HYCON IP User’s Manual
10.3 System Setup
VDD33V
ENHOSC_EXT
VDDA_MODE[1:0]
01
VDD33V
10
11
Weak Pull Down
VDDAX[1:0]
00
2.4V
01
2.7V
10
3.0V
11
3.3V
Coarse
Band gap
Reference
Bias & BGR
Ext
OSC_HS
4~20MHz
XOUT(PT2.7)
HAO=2MHz
HAO=4MHz
HAO=10MHz
HAO=20MHz
ENBGR
ACM_S
0
INH[3:0]
ΣΔAD
+ VR:x1,x? -
SIINL
© 2013 HYCON Technology Corp
www.hycontek.com
1bit
SI:x1,x2,xR,x4
ADC
ADCCLKO
ENCOMB
OSR[3:0]
VR+
ADO[31:0]
VRGIE_HW2
00
01
10
11
VSSA
AIO3
NA
VRL
00
01
10
11
VRH
.
32bit
ADCIF
Interrupt
VR_SHORT
VRH[1:0]
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
ADCCLK
SI+
VDDA
AIO2
NA
REFO
AIO1
AIO2
AIO3
AIO4
REFO
OPO
DAO
VSSA
TPSP2
TPSN2
R
R
R
R
R
R
APB
3
AIO3
CPU
0 ÷1
1 ÷2
ENADCCLK,ADCCLK_PH
DCSET[3:0]
VRGN
ADGN[1:0]
*ENCHP
PGAGN[2:0]
PGA
AIO2
ADC
off,x8,x16,x32
INL[3:0]
Pre-Scale
÷6,÷12,÷30,
÷60
VDDA
ENADC
ADCCLK
INH
CPUCLK_PRE
CPUCLK
0
1
ADCCLK_PRE[1:0]
HS_CK
VI_SHORT
AIO1
HS_CK
LS_CK
OSC_HSRC
ENREFO
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
CPUCLKS
HS_CK
APBCLK
Comb Filter
AIO0
AIO1
AIO2
AIO3
AIO4
REFO
OPO
DAO
VDDA
TPSP1
TPSN1
R
R
R
R
R
R
1
HS_S
0
ENHAO
HAOTR[7:0]
HAO_SEL[1:0]
1
REFO
PT3.6
00
01
10
11
HOSC_S
OSC_HSXT
ADCIF
ENADC_INT
Interrupt
Signal
HW2 Interrupt Vector
VRL[1:0]
High Z
XIN(PT2.6)
REFO
VDDA
00
VDDAX[1:0]
APD-HY16F003-V03_EN
Page 24
HY16F18X
HYCON IP User’s Manual
10.4 Software Flow
Program
Start
Interrupt Vice
Program
Initializing
Setup
Clear
Interrupt Flag
ADC
Setup
Read ADC
Waiting for
Interrupt
Back to Main
Program
10.5 Program Description
00
01
02
03
04
05
06
07
08
09
#include "HY16F18X.h"
.
unsigned int ADCData;
#define Disable 0
#define Enable 1
int main(void)
{
10 //Set ADC input pin
11
12
DrvADC_SetADCInputChannel(ADC_Input_AIO0,ADC_Input_AIO1);
13
14
DrvADC_InputSwitch(OPEN);
15
DrvADC_RefInputShort(OPEN);
16
17
DrvADC_Gain(ADC_PGA_Disable,ADC_PGA_Disable);
18
19
DrvADC_DCoffset(0);
20
DrvADC_RefVoltage(REF_BUFFER_OUT,VSSA);
21
22
DrvADC_FullRefRange(0);
23
24
© 2013 HYCON Technology Corp
www.hycontek.com
//Set ADC positive input AIO0
//Set ADC negative input AIO1
//ADC input short control
//ADC reference short control
//Input signal gain
//DC offset
//ADC reference voltage.
//ADC full reference range select
//0: Full reference range input
//1: 1/2 reference range input
APD-HY16F003-V03_EN
Page 25
HY16F18X
HYCON IP User’s Manual
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//ADC Speed
DrvADC_OSR(1);
DrvADC_CombFilter(Enable);
//1 : OSR=16384
//Enable OSR
DrvADC_ClkEnable(0,1);
//Setting ADC CLOCK
//ADCK=HS_CK/6
// Rising edge is high
//Set VDDA voltage
DrvPMU_VDDA_Voltage(E_VDDA2_4);
DrvPMU_VDDA_LDO_Ctrl(E_LDO);
DrvPMU_BandgapEnable();
DrvPMU_REFO_Enable();
//VDDA=2.4
//LDO ON
DrvPMU_AnalogGround(Enable);
//ADC analog ground source set
//1 : Enable buffer
//and use internal source
//need to work with ADC
//Set ADC interrupt
DrvADC_EnableInt();
DrvADC_ClearIntFlag();
DrvADC_Enable();
.
SYS_EnableGIE(7);
//Enable GIE
while(1);
//Wait for Interrupt
}
void HW2_ISR(void)
{
DrvADC_ClearIntFlag();
ADCData=DrvADC_GetConversionData();
}
© 2013 HYCON Technology Corp
www.hycontek.com
//ADC interrupt
//Clear ADC interrupt flag
//Get ADC data
APD-HY16F003-V03_EN
Page 26
HY16F18X
HYCON IP User’s Manual
11. Analog IP (CMP)
11.1 Example Name
CMP usage
11.2 Example Description
32
31
30
29
28
27
26
25
NC
PT2.3
PT2.2
PT2.1
PT2.0
PT3.0
PT3.1
PT3.2
PT3.3
PT3.4
PT3.5
NC
REFO/PT3.6
AIO3
AIO2
AIO1
AIO0
19
VDDA
18
NC
17
NC
16
PT3.7
15
EDIO
14
ECK
13
.
NC
20
37
33
21
38
34
22
PT2.6
35
23
PT2.5
36
24
PT2.4
39
(1) Set up CMP register and IO.
(2) CH3(PT1.2) connects to CMP positive end.
(3) CH2(PT1.1) connects to CMPnegative end.
(4) If CH3 positive voltage larger than CH2 negative voltage, then CMPO digital output
High.
(5) If CH3 positive voltage smaller than CH2 negative voltage, then CMPO digital output
Low.
40
PT2.7
41
VDD
42
NC
43
VDD3
44
CP_O
45
CH
46
CL
47
CP_I
48
(PT1.2) CH3
VSS
CMPO
PT1.7
CMP
(PT1.1) CH2
© 2013 HYCON Technology Corp
www.hycontek.com
9
10
NC
8
PT1.7
PT1.6
7
PT1.5
6
PT1.4
5
PT1.3
4
PT1.2
PT4.0/RST
3
PT1.1
2
PT1.0
1
VPP
NC
HY16F188
11
12
APD-HY16F003-V03_EN
Page 27
HY16F18X
HYCON IP User’s Manual
11.3 System Setup
ENHOSC_EXT
CPUMPI
VDD33V
VDD18V
001
010
100
CMPRH[2:0]
CMP_DM[2]
22.5R
0
1
CMP_DA[2]
CMPO
CMP_DM[1]
CPRLH
R_SHORT
XOUT(PT2.7)
0
1
CMP_DA[3]
CMPO
RLO CMP_DA[1]
CMPO
16R
CPRLL
20R
0
1
CMP_DM[0]
CMP_DA[0]
CMPO
0
1
0000(x0/16)
0001(x1/16)
0010(x2/16)
0011(x3/16)
0100(x4/16)
0101(x5/16)
0110(x6/16)
0111(x7/16)
1000(x8/16)
1001(x9/16)
1010(x10/16)
1011(x11/16)
1100(x12/16)
1101(x13/16)
1110(x14/16)
1111(x15/16)
HAO=2MHz
HAO=4MHz
HAO=10MHz
HAO=20MHz
00
01
10
11
CMPPI[1:0]
(PT1.2) CH3
00
01
10
11
OSC_HSRC
CPUCLKS
HS_CK
LS_CK
CMPIF
ENCMP_INT
OPAIF
ENOPA_INT
CMPNI[1:0]
(PT1.1) CH2
00
01
10
11
CPUCLK_PRE
CPUCLK
0
CPU
0 ÷1
1 ÷2
1
APBCLK
Interrupt
Signal
APB
HW3 Interrupt
Vector
INT3
CMP_LPOWER
ENCMP
CMPVI_SHORT
PT1.3
HS_CK
1
HS_S
0
ENHAO
HAOTR[7:0]
HAO_SEL[1:0]
RLO
GIE_HW3
PT1.2
OSC_HSXT
16R
PT1.0
PT1.1
HOSC_S
Ext
OSC_HS
4~20MHz
XIN(PT2.6)
CMP_DM[3]
CMPDLY
CMP
2uS
delay
1
0
CMPDO_PTS
CMPINV
ENOUTn.x
0 CMPO
1
ENCMPDO_PT
0
1
PT1.7
.
11.4 Software Flow
Program
Start
Interrupt Vice
Program
Initializing
Setup
Clear
Interrupt Flag
CMP
Setup
Back to Main
Program
Waiting for
Interrupt
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 28
HY16F18X
HYCON IP User’s Manual
11.5 Program Description
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "HY16F18X.h"
int main(void)
{
DrvGPIO_Open(E_PT1,0X80,E_IO_OUTPUT);
DrvCMP_PInput(2);
DrvCMP_NInput(1);
//PT1.7 set Output
//CMP positive input CH3
//CMP negative input CH2
DrvCMP_Enable();
DrvCMP_OutputPinEnable(0);
//CMP enable
//Enable CMP digital output to port
//0:PT1.7
DrvCMP_ClearIntFlag();
DrvCMP_EnableInt();
//Clear CMP interrupt flag
//Enable CMP Interrupt
SYS_EnableGIE(7);
while(1);
//Enable GIE (Global Interrupt Enable)
//while loop
}
void HW3_ISR(void)
{
DrvCMP_ClearIntFlag();
}
© 2013 HYCON Technology Corp
www.hycontek.com
.
//Clear CMP interrupt flag
APD-HY16F003-V03_EN
Page 29
HY16F18X
HYCON IP User’s Manual
12. Communication IP (SPI)
12.1 Example Name
Communication SPI interrupt setup.
12.2 Example Description
2
PT3.3
PT3.4
NC
PT3.2
PT3.5
PT3.1
AIO0
VDDA
NC
NC
PT3.7
EDIO
ECK
NC
PT1.7
PT1.6
PT1.5
PT1.4
PT1.3
37
38
39
40
PT2.1
PT1.0
PT4.0/RST
3
41
PT2.2
4
VPP
PT1.1
5
NC
PT1.2
6
42
PT3.0
7
43
PT2.0
8
45
AIO1
HY16F188
9
46
AIO2
SPI
01
47
AIO3
.
11
48
REFO/PT3.6
21
1
© 2013 HYCON Technology Corp
www.hycontek.com
NC
13
VSS
25
14
CP_I
SPI
CS_1
CK_1
DI_1
DO_1
CS_2
CK_2
DI_2
DO_2
CS_3
CK_3
DI_3
DO_3
CS_4
CK_4
DI_4
DO_4
26
15
CL
27
16
CH
28
17
CP_O
29
18
VDD3
30
19
NC
31
20
VDD
IO
PT1.0
PT1.1
PT1.2
PT1.3
PT1.4
PT1.5
PT1.6
PT1.7
PT2.0
PT2.1
PT2.2
PT2.3
PT2.4
PT2.5
PT2.6
PT2.7
32
21
PT2.7
33
22
PT2.6
34
23
PT2.5
35
24
PT2.4
44
NC
36
PT2.3
(1) SPI pin and SPI register setup
(2) Test hardware SPI to AT93C46 write-in function
APD-HY16F003-V03_EN
Page 30
HY16F18X
HYCON IP User’s Manual
12.3 System Setup
HY16F188
32-bit Flash MCU
Embdded 24-bit SD ADC
AT93C46
CS
CLK
DO
DI
ORG
CS_3 = PT2.0
CK_3 = PT2.1
MISO_3 = PT2.2
MOSI_3 = PT2.3
12.4 Software Flow
Program
Start
B
C
IO
Setup
PT2.0=CS=1
PT2.0=CS=1
Hardware SPI
Initializing Setup
EWEN=0X20
WRITE=0X20
A
EWEN=0X60
Address=0X01
CMD=0X81
PT2.0=CS=0
Data=0X55
C
PT2.0=CS=0
Detect
PT1.7
.
N=1
Y=0
A
B
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 31
HY16F18X
HYCON IP User’s Manual
12.5 Program Description
(Main Program)
00
01
02
03
04
05
06
07
08
09
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "HY16F18X.h"
volatile unsigned int i,a;
void InitalSPI32(void);
void Delay(unsigned int num);
int main(void)
{
SPI32_INI();
while(1)
{
i=DrvGPIO_GetBit(E_PT1,7);
while(i==0)
{
DrvGPIO_SetBit(E_PT2,0);
DrvSPI32_Write(0X02000000);
Delay(0X20);
DrvSPI32_Write(0X60000000);
Delay(0X50);
DrvGPIO_ClrBit(E_PT2,0);
//Write enable
//PT2.0 CS=1
//AT93C56=0X09
//AT93C56=0X80
.
//PT2.0 CS=0
Delay(0X20);
DrvGPIO_SetBit(E_PT2,0);
DrvSPI32_Write(0X02000000);
Delay(0X20);
DrvSPI32_Write(0X81000000);
Delay(0X20);
DrvSPI32_Write(0X55000000);
Delay(0X50);
DrvGPIO_ClrBit(E_PT2,0);
//Write CMD
//PT2.0 CS=1
//AT93C56=0X0A
//AT93C56 Address 0X01
//AT93C56 Data 0X55
//PT2.0 CS=0
Delay(0X20);
i=DrvGPIO_GetBit(E_PT1,7);
}
Delay(0X200);
}
return 0;
}
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 32
HY16F18X
HYCON IP User’s Manual
(Vice Program)
00
01
02
03
04
05
06
07
08
09
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void HW0_ISR(void)
{
int_00=0XFF00FF00;
}
void InitalSPI32(void)
{
//Set SPI input pin
DrvGPIO_Open(E_PT2,0X0B,E_IO_OUTPUT);
DrvGPIO_Open(E_PT2,0X04,E_IO_INPUT);
DrvGPIO_SetPortBits(E_PT2,0X01);
//CS=PT2.0 output
pio_44=0XFF50;
spi_00=0XFF00FF03;
spi_04=0XFF010007;
clk_0c=0XFF00FF0C;
}
void Delay(unsigned int num)
{
volatile unsigned int d;
for(d=0;d<=num;d++);asm("NOP");
}
© 2013 HYCON Technology Corp
www.hycontek.com
//Software Delay Subroutines
.
APD-HY16F003-V03_EN
Page 33
HY16F18X
HYCON IP User’s Manual
13. Communication IP (UART)
13.1 Example Name
Communication UART interrupt setup
13.2 Example Description
2
PT2.0
PT3.0
PT3.1
PT3.2
PT3.3
PT3.4
PT3.5
VDDA
NC
NC
PT3.7
EDIO
ECK
NC
NC
PT1.7
PT1.6
PT1.5
PT1.4
PT1.3
PT1.2
37
38
PT2.1
PT1.0
VPP
PT4.0/RST
3
39
PT2.2
4
NC
PT1.1
5
40
HY16F188
1
© 2013 HYCON Technology Corp
www.hycontek.com
AIO0
UART
6
41
.
7
42
AIO1
8
43
AIO2
9
44
AIO3
01
45
REFO/PT3.6
11
46
UART
TX_1
RX_1
TX_2
RX_2
TX_3
RX_3
TX_4
RX_4
TX_5
RX_5
TX_6
RX_6
TX_7
RX_7
TX_8
RX_8
21
47
NC
IO
PT1.0
PT1.1
PT1.2
PT1.3
PT1.4
PT1.5
PT1.6
PT1.7
PT2.0
PT2.1
PT2.2
PT2.3
PT2.4
PT2.5
PT2.6
PT2.7
13
VSS
25
14
CP_I
26
15
CL
27
16
CH
28
17
CP_O
29
18
VDD3
30
19
NC
31
20
VDD
32
21
PT2.7
33
22
PT2.6
34
23
PT2.5
35
24
PT2.4
48
NC
36
PT2.3
(1) Connecting TX and RX PIN to RS232 related circuit
APD-HY16F003-V03_EN
Page 34
HY16F18X
HYCON IP User’s Manual
13.3 System Setup
EUART TRANSMIT BLOCK DIAGRAM
ENSP [0]
Data Bus
Enable EUART
8
Exclusive OR
PARITY [0]
XOR
8
TXREG Register
TX9D
TX9D[0]
TX9[0]
ENADD[0]
1
0
Interrupt
TXIE[0]
ENTX[0]
(8) (7)
MSB
…………
TSR Register
0
LSB
TXIF
Buffer
and
Control
TX pin
TRMT[0]
BRGRH
BRGRL
Baud Rate Generator
13.4 Software Flow
Program
Start
.
Interrupt Vice
Program
Initializing
Setup
Clear
Interrupt Flag
UART
Setup
Back to Main
Program
UART
Sending Data
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 35
HY16F18X
HYCON IP User’s Manual
13.5 Program Description
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
39
#include "HY16F18X.h"
#include "DrvREG32.h"
void Delay (unsigned int num);
void All_in_One_Initial(void);
unsigned int temp,Buffer_Start,PT_1D7,i;
//
int main(void)
{
All_in_One_Initial();
PT_1D7=DrvGPIO_GetBit(E_PT1,7);
SYS_EnableGIE(7);
Buffer_Start=0x00;
Initial UART and others
//
while(1)
{
i=DrvGPIO_GetBit(E_PT1,7);
if(i==0)
{
int_00=0x08080c00;
DrvUART_Write(Buffer_Start++);
Delay(0x8000);
}
Delay(0x8000);
}
//read PT1.7 pin
//high or low
//If PT1.7=0
//UART INT set 0X08080C00
.
return 0;
}
void HW0_ISR(void)
{
int_00=0x0e000c00;
temp=DrvUART_Read();
int_00=0x08000c00;
}
© 2013 HYCON Technology Corp
www.hycontek.com
//UART Interrupt
//Clear UART interrupt flag
//Clear UART interrupt flag
APD-HY16F003-V03_EN
Page 36
HY16F18X
HYCON IP User’s Manual
40
41 void Delay(unsigned int num)
42 {
43
volatile unsigned int d;
44
for(d=0;d<=num;d++);asm("NOP");
45 }
46
47 void All_in_One_Initial(void)
48 {
49 DrvGPIO_Open(E_PT1,0x80,E_IO_INPUT);
50 DrvGPIO_Open(E_PT1,0x80,E_IO_PullHigh);
51
52 DrvGPIO_Open(E_PT2,0x04,E_IO_OUTPUT);
53 DrvGPIO_Open(E_PT2,0x08,E_IO_INPUT);
54
55 DrvCLOCK_EnableHighOSC(E_EXTERNAL);
56 DrvUART_Open(4,B9600,DRVUART_PARITY_NONE,DRVUART_DATABITS_8,5);
57
58 DrvUART_DisableAutoBaudrate();
59 clk_08=0xff10ff00;
60
61 asm volatile("sethi $r0, 0xc0000");
62 asm volatile("ori
$r0, $r0, 0x003f");
63 asm volatile("mtsr $r0, $INT_MASK");
64 asm volatile("movi $r0, 0x70009");
65 asm volatile("mtsr $r0, $PSW");
.
66 }
67
© 2013 HYCON Technology Corp
www.hycontek.com
//set PT1_7 INPUT
//enable PT1_7
//pull high R
//PT2.2 output TX.5
//PT2.3 input RX.5
//select HSXT 4MHz
//N801 GIE setting1
//N801 GIE setting2
APD-HY16F003-V03_EN
Page 37
HY16F18X
HYCON IP User’s Manual
14. Communication IP (I2C)
14.1 Example Name
Test hardware, I2C
14.2 Example Description
(1) Set up I2C register through I2C pin.
(2) Test hardware I2C write function to AT24C02
14.3 System Setup
VDD3
R=10K
HY16F188
32-bit Flash MCU
Embdded 24-bit SD ADC
AT24C02
SCL
SDA
© 2013 HYCON Technology Corp
www.hycontek.com
.
PT2.0=SCL_5
PT2.1=SDA_5
APD-HY16F003-V03_EN
Page 38
HY16F18X
HYCON IP User’s Manual
14.4 Software Flow
Program
Start
B
IO
Setup
I2C Start
Hardware I2C
Initializing Setup
I2C
Device ID
A
I2C
Address
Detect
PT1.7
Y=0
B
© 2013 HYCON Technology Corp
www.hycontek.com
I2C
Data
N=1
.
I2C
Stop
A
APD-HY16F003-V03_EN
Page 39
HY16F18X
HYCON IP User’s Manual
14.5 Program Description
(Main Program)
00
01
02
03
04
05
06
07
08
09
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "HY16F18X.h"
volatile unsigned int i,a;
int main(void)
{
I2C_INI();
while(1)
{
i=(pio_08 & 0x80)>>7;a=i;
while(a==0)
{
I2C_Start();
//HY16F188 Hardware I2C Start
DrvI2C_WriteData(0XA0);
I2C_NACK();
//AT24C02 Device ID
DrvI2C_WriteData(0X00);
I2C_NACK();
//AT24C02 Address=0X00
.
DrvI2C_WriteData(0X55);
I2C_NACK();
//Data1=0X55 @ Address=0X00
DrvI2C_WriteData(0XAA);
I2C_NACK();
//Data2=0XAA @ Address=0X01
I2C_Stop();
//HY16F188 Hardware I2C Stop
i=(pio_08 & 0x80)>>7;a=i;
}
Delay(0x50);
}
return 0;
}
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 40
HY16F18X
HYCON IP User’s Manual
(Vice Program)
00
01
02
03
04
05
06
07
08
09
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void I2C_INI(void)
{
pio_00=0XFF800000;
pio_04=0XFF800000;
pio_10=0XFF00FF03;
pio_14=0XFF00FF03;
//Hardware I2C Initial
//PT1.7 input
pio_44=0X0909FF00;
i2c_00=0XFF00FF00;
i2c_14=0X0000FFFF;
//0X41000//I2C OFF
//0X44014
}
void I2C_Start(void)
{
DrvI2C_Ctrl(1,0,0,0);
I2C_NOP();
}
//Hardware I2C Start
void I2C_Stop(void)
{
DrvI2C_Ctrl(0,1,0,0);
I2C_NOP();
}
//Hardware I2C Stop
void I2C_Write(unsigned int I2C_Data)
{
DrvI2C_WriteData(I2C_Data);
i2c_04=0XFF01;
I2C_NOP();
}
//SPIA(1000)
//SPIA(0100)
.
//Hardware I2C Write
//0X41004
void I2C_NACK(void)
{
DrvI2C_ClearIRQ();
DrvI2C_ClearEIRQ();
while(!(i2c_04 & 0X00000002));
}
//Hardware I2C NACK
void I2C_NOP(void)
{
volatile unsigned int n;
for(n=0;n<=0x10;n++);asm("NOP");//0x10
}
//Software I2C NOP
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 41
HY16F18X
HYCON IP User’s Manual
15. Peripheral IP(GPIO)
15.1 Example Name
GPIO configurations
15.2 Example Description
(1) Everytime when PT1.4 is pressed, LED display adds 1.
(2) If LED increased to 0XF, then cleared 0. LED display adds 1 when PT1.4 pressed.
37
38
39
40
41
42
43
44
45
46
47
25
NC
PT2.3
PT2.2
PT2.1
PT2.0
PT3.0
PT3.1
PT3.2
PT3.3
PT3.4
PT3.5
NC
NC
REFO/PT3.6
AIO3
AIO2
AIO1
AIO0
VDDA
NC
NC
PT3.7
EDIO
ECK
13
VSS
26
14
CP_I
27
15
CL
28
16
CH
29
17
CP_O
30
18
VDD3
31
19
NC
32
20
VDD
33
21
PT2.7
34
22
PT2.6
35
23
PT2.5
36
24
PT2.4
48
LED X 4
.
GPIO
NC
PT1.2
PT1.3
7
6
PT1.1
PT1.4
8
5
PT1.0
PT1.5
9
4
PT4.0/RST
PT1.6
01
3
VPP
PT1.7
11
2
1
© 2013 HYCON Technology Corp
www.hycontek.com
21
NC
HY16F188
APD-HY16F003-V03_EN
Page 42
HY16F18X
HYCON IP User’s Manual
15.3 System Setup
VDD3 3V
RPU=75K
PUn.x
PTn.x
ENINn. x
Digital Input
250
AIO
ENOUTn.x
Digital Output
PT1.0
PT1.1
PT1.2
PT1.3
PT1.4
PT1.5
PT1.6
PT1.7
PT2.0
PT2.1
PT2.2
PT2.3
PT2.4
PT2.5
PT2.6
PT2.7
PT3.0
PT3.1
PT3.2
PT3.3
PT3.4
PT3.5
PT3.6
PT3.7
PT4.0
15.4 Software Flow
Program
Start
B
Initializing
Setup
.
Y
Value > 0XF ?
A
LED=0
N
A
Detect
PT1.4
N=1
Y=0
LED+1
B
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 43
HY16F18X
HYCON IP User’s Manual
15.5 Program Description
00
01
02
03
04
05
06
07
08
09
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "HY16F188.h"
void Delay (unsigned int num);
int main(void)
{
unsigned int i=0,j=0;
DrvGPIO_Open(E_PT1,0X10,E_IO_INPUT);
DrvGPIO_Open(E_PT1,0X10,E_IO_PullHigh);
DrvGPIO_Open(E_PT2,0X0F,E_IO_OUTPUT);
while(1)
{
i=DrvGPIO_GetBit(E_PT1,4);
if(i==0)
{
DrvGPIO_SetPortBits(E_PT2, j++);
if(j>0X0F)j=0X00;
}
//Set PT1_4 INPUT
//Enable PT1 4 pull hi R
//Set PT2_0~3 OUTPUT
//Read PT1.4 high or low
//IF PT1.4 is low
//J++
//IF J>0XF J=0
Delay(0X8000);
}
void Delay(unsigned int num)
{
int a;for(a=0;a<=num;a++);
}
© 2013 HYCON Technology Corp
www.hycontek.com
.
//Delay loop
APD-HY16F003-V03_EN
Page 44
HY16F18X
HYCON IP User’s Manual
16. Peripheral IP (Power)
16.1 Example Name
Test Sleep and Idle current
16.2 Example Description
PT2.3
PT2.2
PT2.1
PT2.0
PT3.0
PT3.1
PT3.2
PT3.3
PT3.4
PT3.5
NC
37
25
PT2.4
NC
24
38
26
PT2.5
REFO/PT3.6
23
39
27
PT2.6
AIO3
22
40
28
PT2.7
AIO2
21
41
29
VDD
AIO1
20
42
30
NC
AIO0
19
43
31
VDD3
VDDA
18
44
32
CP_O
NC
17
45
33
CH
NC
16
46
34
CL
PT3.7
15
47
35
CP_I
EDIO
14
48
36
NC
(1) Do not float every pin. Ex. If grounding 2PIN (the 13rd and 14th pin) of EDM, Sleep
current can be lowered than 2.5 (uA).
(2) IC will enter into Sleep mode when PT1.4 is pressed.
VSS
ECK
13
.
HY16F188
VDD3
NC
PT1.2
PT1.3
7
6
PT1.1
PT1.4
8
5
PT1.0
PT1.5
9
4
PT4.0/RST
PT1.6
01
3
VPP
PT1.7
11
2
1
© 2013 HYCON Technology Corp
www.hycontek.com
21
NC
Sleep current 2.5uA
APD-HY16F003-V03_EN
Page 45
HY16F18X
HYCON IP User’s Manual
16.3 System Setup
16.4 Software Flow
Program
Start
.
Initializing
Setup
IO
Setup
Peripheral
Setup
Detect
PT1.4
N=1
Y=0
Sleep
Setup
After this program entered into Sleep, current measured can be lowered than 2.5 (uA) min..
To awaken the IC, only Power ON Reset can be used.
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 46
HY16F18X
HYCON IP User’s Manual
16.5 Program Description
00
01
02
03
04
05
06
07
08
09
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "HY16F18X.h"
void Delay (unsigned int num);
int main(void)
{
DrvGPIO_ClearIntFlag(E_PT2,0 XFF);
//clear PT2.0~7 interrupt flag
DrvGPIO_Open(E_PT1,0X3F,E_IO_OUTPUT);
DrvGPIO_Open(E_PT3,0XFF,E_IO_OUTPUT);
//SET PT1.0~6 AS OUTPUT PT1.6~7 INPUT
//SET PT3 AS OUTPUT
DrvGPIO_Open(E_PT1,0XC0,E_IO_INPUT);
DrvGPIO_Open(E_PT1,0XC0,E_IO_PullHigh );
//PT1_6~7 set input
//PT1_6~7 pull internal high R enable
DrvGPIO_Open(E_PT2,0XFF,E_IO_INPUT);
DrvGPIO_Open(E_PT2,0XFF,E_IO_PullHigh );
//PT2_0~7 set input
//PT2_0~7 pull internal high R enable
DrvPMU_LDO_LowPower(1);
i=DrvGPIO_GetBit(E_PT1,7);
//SET low power mode
//read PT1.7 pin high or low
DrvCLOCK_EnableHighOSC(E_INTERNAL);
DrvGPIO_ClkGenerator(E_HS_CK,1);
DrvGPIO_IntTrigger(E_PT2,0XFFE_N_Edge);.
//select HSRC 2MHz
//GPIO CLK enable
// trigger method is negative edge
//PT2.0~7 interrupt
DrvGPIO_Open(E_PT2,0XFF,E_IO_IntEnable);
//PT2.0~7 interrupt enable
SYS_EnableGIE(7);
asm("sethi $r0,0xc0000");
asm("ori $r0,$r0,0x003f");
asm("mtsr $r0,$ir14");
//Enable GIE (Global Interrupt Enable)
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 47
HY16F18X
HYCON IP User’s Manual
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
while(1)
{
i=DrvGPIO_GetBit(E_PT1,7);
if(i==0)
{
clk_08=0XFF80FF03;
clk_00=0XFF00FF04;
asm("NOP");
sys_04=0X1000;
//sys_04=0X1010;
asm("standby 1");
asm("NOP");
}
Delay(0X8000);
}
//read PT1.7 pin high or low
//if PT1.7 low
//[CPU/2][RTC Clock On]
//[Internal OSC OFF][32768]
//sleep mode
//idle mode
}
void HW5_ISR(void)
{
DrvGPIO_ClearIntFlag(E_PT2,0XFF);
asm("sethi $r0,0xc0000");
asm("ori
$r0,$r0,0x003f");
asm("mtsr $r0,$ir14");
}
void Delay(unsigned int num)
{
int a;for(a=0;a<=num;a++);
}
//Clear PT2 interrupt flag
.
SYS Base Address + 0X04 (0X40104)
Symbol
SYS0 (SYS Control Register 0)
Bit [31] [30] [29] [28] [27] [26] [25] [24] [23]
[22]
[21]
[20]
Name
RSV
RW
R-0
Bit [15] [14] [13] [12] [11] [10] [9] [8]
[7]
[6]
[5]
[4]
FCRst
IDLE
Name
MASK
RW
R0W-0
Bit
Name
Bit[4]
IDLE
[19]
[18]
[17]
[16]
[3]
[2]
[1]
[0]
FSLP/IDLE
FWDog
FRST
FBOR
RW0-0
RW0-1
Descriptions
IDLE Mode Control Register
0
Sleep Mode
1
IDLE Mode
(1) Sleep Mode
asm("standby 1");
sys_04=0X1000;
(2) Idle Mode
asm("standby 1");
sys_04=0X1010;
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 48
HY16F18X
HYCON IP User’s Manual
17. Digital IP(RTC)
17.1 Example Name
Test hardware RTC
17.2 Example Description
Test hardware RTC calendar function
17.3 System Setup
RTKEY<3:0>
RTCO<6:0>
Digital Compensation
Controller
RTCEN
RTPT<2:0>
RTINS
LSRC
1
LSXT
Secondary Scalar
/128
Pre-Scalar
Input/256
0
RTPTF
MUX
Periodic Timer
Interrupt Mux
RTLPYF
.Time Format (BCD)
Time Format (BCD)
Year/Month/Day/WDay
Hour/Min/Sec
RTPTF
RTWUF
RTTAF
RCAFEN
RTTAF
Alarm
RTWUEN
17.4 Software Flow
Program
Start
Initializing
Setup
RTC Setup
Time
RTC
Time Output
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 49
HY16F18X
HYCON IP User’s Manual
17.5 Program Description
(Main Program)
00
01
02
03
04
05
06
07
08
09
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "HY16F18X.h"
unsigned int sec,min,hour,week,day,month,year;
void Delay(unsigned int num);
void RTC_Initial(void);
int main(void)
{
RTC_Initial();
//RTC initializing(time setup included)
while(1)
{
asm("NOP");
S_DRVRTC_TIME_DATA_T sCurTime;
DrvRTC_Read(DRVRTC_CURRENT_TIME,&sCurTime);
sec=sCurTime.u32cSecond;
min=sCurTime.u32cMinute;
hour=sCurTime.u32cHour;
week=sCurTime.u32cDayOfWeek;
day=sCurTime.u32cDay;
month=sCurTime.u32cMonth;
year=sCurTime.u32Year;
asm("NOP");
.
//RTC read time setup
//RTC read time data
//read_second
//read_minute
//read_hour
//read_week
//read_date
//read_month
//read_year
}
return 0;
}
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 50
HY16F18X
HYCON IP User’s Manual
(Vice Program)
00
01 void RTC_Initial(void)
02 {
03
//RTC CLK;
04
clk_08=0x8080ff00;
05
//RTC KEY;
06
rtc_00=0xff60ff00;
07
asm("NOP");
08
09
DrvRTC_WriteEnable();
11
//DrvRTC_ClockSource(E_INTERNAL_CLOCK);//35KHz
12
DrvRTC_ClockSource(E_EXTERNAL_CLOCK);//32768Hz
13
14
DrvRTC_PeriodicTimeEnable(0);//set 1/128
15
DrvRTC_Enable();
16
DrvRTC_HourFormat(0);
17
18
asm("NOP");
19
S_DRVRTC_TIME_DATA_T sCurTime;//setting start
20
DrvRTC_Read(DRVRTC_CURRENT_TIME,&sCurTime);
21
sCurTime.u8cClockDisplay=1;
22
sCurTime.u8cAmPm=0;
23
sCurTime.u32cSecond=19;
24
sCurTime.u32cMinute=50;
25
sCurTime.u32cHour=10;
26
sCurTime.u32cDayOfWeek=5;
.
27
sCurTime.u32cDay=9;
28
sCurTime.u32cMonth=8;
29
sCurTime.u32Year=2013;
30
sCurTime.u8IsEnableWakeUp=0;
31
DrvRTC_Write(DRVRTC_CURRENT_TIME,&sCurTime);
32
asm("NOP");
33 }
34
© 2013 HYCON Technology Corp
www.hycontek.com
//Setup_second
//Setup _minute
//Setup _hour
//Setup_week
//Setup_date
//Setup_month
//Setup_year
APD-HY16F003-V03_EN
Page 51
HY16F18X
HYCON IP User’s Manual
18. Appendix Program
01
02
03
04
05
06
Digital IP
TimerA
TimerB
TimerC
WDT
PWM
Hardware RTC
Analog IP
8-bit DAC
R2R OPAMP
24-bit SD ADC
Analog CMP
ů
ů
Communication IP
Hardware 32-bit SPI
Hardware UART
Hardware I2C
ů
ů
ů
Peripheral IP
GPIO
Sleep Mode
Idle Mode
ů
ů
ů
HY16F18X_2013091
0.rar
19. Revision History
Major amendment is stated thereinafter:
Version Page
Revision Summary
V03
ALL First Edition
Date
2013/12/1
.
© 2013 HYCON Technology Corp
www.hycontek.com
APD-HY16F003-V03_EN
Page 52