Application Notes ation Notes ation Notes

EM78P153A/EM78P131A
Application
Application Notes
EM78P153A/131A
EM78P153A/131A 应用设计注意事项
Original Date:2012/5/8
EM78P153A/131A 应用时有几项建议与要求汇整说明需特别注意,请参阅下表及接
续的各项详细说明内容。
。
1
2
3
应用注意事项
P63(/RST)當 IO 用時,反应不正常现象
对 策
P63(/RST) Pin 仅可当外部复位(/RST)
用
上电 IRC 频率不正常或 Code Option 反应 在电源端加大电容来改善 Power On
错误应注意
Reset 电路动作不正常的现象
使用 WDT Time Out 复位及 RESETB Pin 复 透过一 Stack 初始化程序达成 Stack 归
位应注意
零,使得往后使用 Stack 可以工作正常
【※1】
※1 请参照附件之初始化程序
1. EM78P153A P63(
P63(/RST)
/RST)當 IO 用時反应不正常現象之注意事项
现象:
现象:当 P63(/RST) Pin 在當作成 IO 使用时,会有程序跑飞的现象。
原因:
原因:由于 P63(/RST) Pin 当作 IO 使用时,抗 Noise 能力较差,可能导致 IC 内部
运作之讯号被外部 Noise 干扰,而有致使程序跑飞之风险。
应用需求:
应用需求
:P63(/RST) Pin 仅可当外部复位(/RST)用,勿做一般 IO pin 使用
2. EM78P153A 上电 IRC 频率不正常或 Code Option 反应错误之注意事项
现象:
现象:当系统上电时,所反应的系统频率并非 Code Option 所设定的,其值为 Code
Option 未烧录时的初始设定
原因:
原因
:系统在上电时,Power On Reset 电路并未正常动作,以致系统读取 Code Option
的参数时,读取错误。
解决办法:
解决办法
:在电源端加大电容来改善 Power On Reset 电路动作不正常的现象。
Power On Reset 电路会根据 VDD Pin 上电源的变化来来判断是否发送复位信号,
过快的电源变化会被 Power On Reset 电路视为噪声而忽略;进而未适时发出复位
信号,欲改善此一现象,可于 VDD 端对地并联一电容,并联电容会造成 VDD 上电速
度减缓,进而让 Power On Reset 电路正常工作。于是,Code Option 就可以顺利的
被读取,以完成系统正常初始化的工作。
Doc# AP-EM78P153A/131A-001C-V1
http://www.emc.com.tw
Application Notes(v1.0)05.08.2012 • 1
EM78P153A/ EM78P131A
Fig. POR 建议电路
3. EM78P153A 使用 WDT Time Out 复位及 RESETB Pin 复位应注意事项
现象:在
Stack 未妥善初始化的情形下,发生 WDT Time Out 复位及 RESETB Pin 复
现象
位时,程序会发生跑飞现象。
原因:
原因
:由于 Stack 需要做初始化的动作,而当发生 WDT Time Out 复位及 RESETB Pin
复位时,Stack 无法主动初始化,在未初始化的情形下使用 Stack(使用 CALL
及中断功能),会造成返回异常,进而使得程序失控。
解决办法:
解决办法
:透过一 Stack 初始化程序达成 Stack 归零,使得往后使用 Stack 可以工
作正常。
原厂提供一 Stack 初始化程序建议有需要的使用者放上,哪些是有需要的使用者:
1. 使用 WDT Time Out 复位者
2. 使用 RESETB Pin 复位者
Stack 初始化程序详细描述如下,由于使用 WDT Time Out 复位和 RESETB Pin
复位会干扰 CALL 和中断发生时 Stack 的运作,故需将 Stack 初始化程序放在系统
初始化程序中,并且是在使用及设定上述两种功能及开始使用 CALL 及中断功能之
前,如此才能产生作用。使用 Stack 初始化程序时,需要注意下列几项:
1. Stack 初始程序必須放置在位址 0x00D~0x0FF 之間,超過這個範圍會有運算錯
誤之虞,且勿修改 Stack 初始化程序本体。
2. Stack 初始化程序会改变两个寄存器的值,故需规划两个寄存器给 Stack 初始
化程序使用,但使用完毕即释放,不会持续占用。
程序共计需要 40 Words,所耗时间由使用者依当时所使用振荡器计算;原厂建
议将这个程序放在最先初始化的位置中。
2 • Application Notes(v1.0)05.08.2012
Doc# AP-EM78P153A/131A-001C-V1
http://www.emc.com.tw
EM78P153A/EM78P131A
※ EM78P153A 推栈(Stack)
推栈(Stack) 仅有 5 层,中断功能发生时会占用掉 1 层。因此,
因此,若
程序中有使能中断功能,
程序中有使能中断功能,则程序中最大可用堆栈(Stack)
则程序中最大可用堆栈(Stack)为
(Stack)为 4 层,请特别关注。
请特别关注。
Stack initial 程序使用方式参考:
程序使用方式参考:
0x0000
JMP Stack_initial
;--------Interrup vector---------------0x0008
INT_SVR:
.
.
RETI
;--------Stack initial------------------Stack_initial:
.
.
Call main
;---------User code----------------Main:
.
.
程序流程图:
程序流程图:
C=1
C=0
Doc# AP-EM78P153A/131A-001C-V1
http://www.emc.com.tw
Application Notes(v1.0)05.08.2012 • 3
EM78P153A/ EM78P131A
程序及说明:
程序及说明:
L_SADR
== 0x21
SADR == 0x2F
/* save last stack address
/* save current stack address */
*/
ORG
0X0
/* -------------- calibration stack pointer ---------------- */
JMP
CAL_SP
CAL_SP:
CLR
L_SADR
; CLEAR L_SADR
CLR
SADR
; CLEAR SADR
CALL l1
MOV
A, 0x2
; Store Program Counter
JMP
CK_SP
l1:
CALL l2
MOV
A, 0x2
; Store Program Counter
JMP
CK_SP
l2:
CALL l3
MOV
A, 0x2
; Store Program Counter
JMP
CK_SP
l3:
CALL l4
MOV
A, 0x2
; Store Program Counter
JMP
CK_SP
l4:
CALL l5
MOV
A, 0x2
; Store Program Counter
JMP
CK_SP
l5:
CALL l6
MOV
A, 0x2
; Store Program Counter
JMP
CK_SP
l6:
CALL l7
MOV
A, 0x2
; Store Program Counter
JMP
CK_SP
l7:
CALL l8
MOV
A, 0x2
; Store Program Counter
JMP
CK_SP
l8:
RET
CK_SP:
MOV
SUB
JBC
JMP
Compliment:
SADR, A
A, L_SADR
0x3, 0
DIFF_LOOP
4 • Application Notes(v1.0)05.08.2012
;
; A = (diff_value) = L_SADR – SADR
;
; C = 1, JMP DIFF_LOOP
; C = 0, A (diff_value) 做 2’s compliment
Doc# AP-EM78P153A/131A-001C-V1
http://www.emc.com.tw
EM78P153A/EM78P131A
/*********************************************************/
/*
2's compliment
*/
/*********************************************************/
XOR
A, @0XFF
ADD
A, @0X01
DIFF_LOOP:
XOR
A, @0x0C
;
diff_value == 0xc
JBC
0x3, 2
;
CALL MAIN
;
Z = 1, CALL MAIN
/*label of customer's 1st code*/ ;
Z = 0, L_SADR <= SADR, RET STACK LEVEL
MOV
A, SADR
MOV
L_SADR, A
RET
Doc# AP-EM78P153A/131A-001C-V1
http://www.emc.com.tw
Application Notes(v1.0)05.08.2012 • 5