咨询热线
电话:0755-33033839 电话:0755-33033839 电话:0755-33033817
Email: sz_webfae#ealpha.com.tw
请把#更改为@

AM4E 常见问题

Q1.EzCode4E是什么工具?

Q2.AM4E系列IC从上电或Reset到IC开始执行,需要多长时间?

Q3.什么是前景特殊路径?

Q4.什么是系统路径?如何使用系统路径?

Q5.什么是特殊Procedure? 如何使用特殊 Procedure?

Q6.Voice Output中的PWM与PWM Channel的PWM有没有关系?

Q7.为什么EzCode4E界面下方指示的Program Rom还很多,但程式编译时却提示ROM超出?

Q8.为什么在程式中间连续加Sdelay命令,程式会复位?那又该如何避免?

Q9.AM4E是否可以使用晶体振荡器?

Q10.EzCode v4.31默认的Debounce时间是多长?


AM4F 常见问题

Q1.在EzCode4F中,客户可以使用哪些寄存器?

Q2.在4F中,不清除看门狗(Watch Dog),多长时间会复位?

Q3.在AM4F中,如何清除看门狗(Watch Dog)?

Q4.EzCode4F v2.x中,随机数的应用要注意什么?

Q5.EzCode4F中使用Volume(vol1, vol2),当DAC1或DAC2等于0时,为什么会有PO声?

Q6.EzCode4F使用cout输出,2个channel模式播放声音时,为什么会听不到声音?

Q7.播放MIDI或语音时,如果使用寄存器索引?

Q8.EzCode4F可以支持多少个通道的Action?

Q9.EzCode4F IR发射接收有何规定?

Q10.EzCode4F条件分支指令如“Switch(R0)=[x,p1,p2],p3”,如果程式跳至x的位置,会如何执行?


AM8EB 常见问题

Q1. AM8EB051复位功能不正常?
1. 用户PCB板的VDD和GND之间接了大电容,导致上电/去电较慢。
2. 使用一颗主控IC同时控制几颗AM8EB051,主控IC复位后,会与AM8EB051通信,并且主控IC复位较快,输出的通信信号打乱了AM8EB051的复位。


Q2. 请问,把I/O脚接上一个NPN的三极管来推动继电器,当I/O设为输出后,上电时发现继电器会跳一下,有什么改善的方法?

Q3. 已经进入SLEEP Mode为何还有耗电?

Q4. 使用T0定时器并给它赋了初值,为何定时时间不正确?

Q5. IC在装机过程出现加热开启或关断中,发现各种各样的死机现象,换一颗单片机就会好, 怀疑是这批单片机抗干扰问题?

Q6. 如何实现查表功能?

Q7. 如何实现间接寻址?

Q8. 如何正确设置PWM功能?

Q9. 如何正确设置IR功能?

Q10. 如何正确设置Buzzer功能?

Q11. 如何设置外部INT中断?

Q12. T0定时器设置步骤。

Q13. T1定时器设置步骤。

Q14. T2定时器设置步骤。

Q15. 低电压Reset(LVR)在SLEEP时,是否会耗电?

Q16. 低电源复位(LPR)和低电压复位(LVR)的区别?

Q17. 低电压复位(LVR)设置步骤?

Q18. 低电压复位(LVR)不准怎么办?

Q19. AM8EB单片机支持几种振荡模式?

Q20. AM8EB单片机与EMC单片机在端口操作上的差异?

Q21. 如何离线烧录客户应用程序?



AM4E 常见问题解答
Q1. EzCode4E是什么工具?

A1. EzCode4E 是针对AM4E系列IC开发的编程工具,集成了播放WAV、MIDI、Action,扫描按键,端口输出、IR通迅等功能,可以极大提高开发的效率。

Back to top

Q2. AM4E系列IC从上电或Reset到IC开始执行,需要多长时间?

A2. 大约为384ms~512ms之间。当AM4E用作被控IC时,打开被控AM4E IC电源后,应延时大于512ms,才能开始对被控IC操作。

Back to top

Q3. 什么是前景特殊路径?

A3. 前景特殊路径是用于在播放MIDI、语音、Action或执行Delay等情况下,插入一些如设置参数、改变IO、启动背景等简单的任务,而执行完这些任务后,仍能等播放MIDI、语音、Action或执行Delay结束后,继续执行其后面的命令。前景特殊路径在路径名称前加“@_”符号,其中不允许有delay、play等需要等待的任务。

Back to top

Q4. 什么是系统路径?如何使用系统路径?

A4. 系统路径是EzCode中提供的,有专用的名称,在 [ Path ] 段落中编写。在系统路径中编写的程式段,会自动插入到系统程式中执行。如 Fourms: r1++ ,那么r1++ 这条指令每4ms就会执行一次。 系统路径中只能做标志设定等一些简单的任务,不允许有条件语句或带延时的指令等,详见EzCode4E用户手册。

Back to top

Q5. 什么是特殊Procedure? 如何使用特殊 Procedure?

A5. 特殊Procedure是EzCode中提供的,有专用的名称,在 [ Procedure ] 段落中编写,用作一些特殊的用途,如屏蔽IO、在中断程式中插入程式等。特殊Procedure只需要在 [ Procedure ] 中编写程式,EzCode会自动将此程式加入系统程式中。在 [ Path ] 段落不需要声明。

Back to top

Q6. Voice Output中的PWM与PWM Channel的PWM有没有关系?

A6. 没有关系。Voice Output中的PWM是语音输出的方式,IC上有专门的两个引脚。PWM Channel说的PWM是指使用程式在输出口上输出不同占空比的脉冲。

Back to top

Q7. 为什么EzCode4E界面下方指示的Program Rom还很多,但程式编译时却提示ROM超出?

A7. Data Rom是全部ROM的使用情况,Program Rom未用完时,Voice的数据会自动紧随存放,如果Data Rom提示空间满了,就不可以再写程式。注意,程式和MIDI数据只能存放在Program部分,超出也会发生错误。

Back to top

Q8. 为什么在程式中间连续加Sdelay命令,程式会复位?那又该如何避免?

A8. Sdelay命令是一个实时的等待,在等待期间,不会清除WDT,所以当Sdelay命令连续出现超过4ms,程式就有可能因为WDT计满发生复位。要避免发生复位,可以在Sdelay之间,加入指令:ASM(movaf WDT)。

Back to top

Q9. AM4E是否可以使用晶体振荡器?

A9. AM4E系列IC中,只有大于等于20秒的AM4EE与AM4EG支持晶体振荡器,其它型号IC都只有RM模式。详见AM4E用户手册。

Back to top

Q10. EzCode v4.31默认的Debounce时间是多长?

A10. 40ms。

Back to top


AM4F 常见问题解答
Q1. 在EzCode4F中,客户可以使用哪些寄存器?

A1. 在EzCode4F中,当编译完程式后,EzCode4F右下角有一个提示栏:User RAM,后面跟着R0~Rx(x是数字),在此范围内的RAM,客户都是可以使用的。

Back to top

Q2. 在4F中,不清除看门狗(Watch Dog),多长时间会复位?

A2.如果选择8MHz振荡,是64ms。如果选择16MHz振荡,为32ms。

Back to top

Q3.在AM4F中,如何清除看门狗(Watch Dog)?

A3. 在AM4F中,清除WDT只需要读一次地址为0x10的SFR(特殊功能寄存器)即可, 即 : movra 0x10。在EzCode4F中,SFR 0x10定义有一个标识:INT,因此也可以写成:movra int。

Back to top

Q4. EzCode4F v2.x中,随机数的应用要注意什么?

A4. 首先要在OPTION中选择RANDOM并设定好范围。其次,RandomL和RandomH的值只有在按键触发时和每隔4ms才会被改变。如果这两个条件都没有出现,则RandomL与RandomH的值不会改变。

Back to top

Q5. EzCode4F中使用Volume(vol1, vol2),当DAC1或DAC2等于0时,为什么会有PO声?

A5. Volume()命令是控制DAC1或DAC2的输出音量的,vol1用于控制Dac1的输出音量,Vol2控制DAC2的输出音量。但当Vol1或Vol2等于0时,则会将相应的DAC关闭;如果播放声音后未做Ramp down,而关闭DAC1或DAC2,DAC1或DAC2的输出电压突然降为0,从而引起喇叭有PO声。

Back to top

Q6. EzCode4F使用cout输出,2个channel模式播放声音时,为什么会听不到声音?

A6. AM4F系列IC使用2个Channel模式时,只能使用Channe0及channel1,Cout 模式下,声音只能从DAC2输出,选错Channel或使用DAC1都不会有声音输出。

Back to top

Q7. 播放MIDI或语音时,如果使用寄存器索引?

A7. EzCode4F v2.,0编程时,可以用一个或两个寄存器来索引播放MIDI或语音,寄存器的值为0,指第一个MIDI或语音。当Voice File中有音效时,音效与WAVE要合并计算位置。 MIDI或WAVE的位置计算跟别名没有关系,都是从第一个开始往后数。

Back to top

Q8. EzCode4F可以支持多少个通道的Action?

A8. EzCode4F中最多可以支持8个通道的Action。

Back to top

Q9. EzCode4F IR发射接收有何规定?

A9. 1) IR发射接收必须先在OPTION中设定好发送或接收寄存器,若发送还须在发送前设置好寄存器的值。 2) 发送或接收时应设定好bit数。如 TxIR(8)、RxIR(8),表示发送或接收8Bit数据。 3) 接收时一定要使用特殊路径名,并在确认前一直使用特殊路径名。因為只有使用特殊路徑名,當收到不想要的碼,程式才能返回到收碼前的路徑中繼續執行。

Back to top

Q10. EzCode4F条件分支指令如“Switch(R0)=[x,p1,p2],p3”,如果程式跳至x的位置,会如何执行?

A10. 如果程式跳至x的位置,程式会直接执行[](中括号)后面的命令或路径,即问题中的P3。但若中括号后面没有命令或路径,则程式会继续执行底层中的扫键等动作,并判断是否有播放ACTION、MIDI、WAVE或执行背景路径,若都不存在则会进入sleep。

Back to top


AM8EB 常见问题解答

Q1. AM8EB051复位功能不正常?
1. 用户PCB板的VDD和GND之间接了大电容,导致上电/去电较慢。
2. 使用一颗主控IC同时控制几颗AM8EB051,主控IC复位后,会与AM8EB051通信,并且主控IC复位较快,输出的通信信号打乱了AM8EB051的复位。

A1. 为AM8EB051独立供电或减小VDD和GND之间的大电容。

Back to top

Q2. 请问,把I/O脚接上一个NPN的三极管来推动继电器,当I/O设为输出后,上电时发现继电器会跳一下,有什么改善的方法?

A2. 这个现象是因为IC上电时,I/O口的状态为输入,如果I/O口带有上拉电阻的话,一上电的瞬间会因为上拉电阻的作用而产生一个高电平,把上拉电阻关闭即可。

Back to top

Q3. 已经进入SLEEP Mode为何还有耗电?

Back to top

A3. MCU进入SLEEP会将系统OSC关闭,但WDT OSC (如果WDT Enable) 仍在工作,而且全部I/O会保持SLEEP前状态,除了WDT OSC会耗一些电外,最要注意的是Input Port是否浮接或者Output Port是否仍有负载,这些I/O处理要非常小心,否则会产生大电流。

Back to top

Q4. 使用T0定时器并给它赋了初值,为何定时时间不正确?

A4. 由于T0不能自动重装,所以需要用户在中断服务子程序中手工设置,而T1、T2则可以自动重装。

Back to top

Q5. IC在装机过程出现加热开启或关断中,发现各种各样的死机现象,换一颗单片机就会好,怀疑是这批单片机抗干扰问题?

A5. 经过对不良品测试,发现IC电气特性和功能都正常,将控制板打EFT测试,也能通过2000V。但在继电器关闭时会产生大电流和火花,造成芯片复位或当机。解决办法是在继电器端加473电容和510欧电阻,消除干扰。

Back to top

Q6. 如何实现查表功能?

A6. 有两种方法可以实现查表
1. 使用PCL查表
BCD EQU 0x10
PORTB EQU 0x6
CONVERT:
MOVR BCD,0
ADDAR 0x2,1
;==========gfedcba
RETIA B‘00111111’ ; "0"
RETIA B‘00000110’ ; "1"
RETIA B‘01011011’ ; "2"
RETIA B‘01001111’ ; "3"
RETIA B‘01100110’ ; "4"
RETIA B‘01101101’ ; "5"
RETIA B‘01111101’ ; "6"
RETIA B‘00000111’ ; "7"
RETIA B‘01111111’ ; "8"
RETIA B‘01101111’ ; "9"

MOVIA 0x1 ;显示‘1’
MOVAR BCD
CALL CONVERT
MOVAR PORTB

2. 使用TABLEA查表
MOVIA MID(DIS_TAB)
SFUN TBHP
MOVIA LOW(DIS_TAB)
ADDAR BCD,0
TABLEA
MOVAR PORTB

DIS_TAB:
;===============gfedcba
DW B‘00000000111111’ ; "0"
DW B‘00000000000110’ ; "1"
DW B‘00000001011011’ ; "2"
DW B‘00000001001111’ ; "3"
DW B‘00000001100110’ ; "4"
DW B‘00000001101101’ ; "5"
DW B‘00000001111101’ ; "6"
DW B‘00000000000111’ ; "7"
DW B‘00000001111111’ ; "8"
DW B‘00000001101111’ ; "9"


Back to top

Q7. 如何实现间接寻址?

A7. 间接寻找主要通过间址寄存器R0以及间址指针R4配合使用完成。例如要清除所有RAM的内容:
IAR EQU 0x0
FSR EQU 0x4
MOVIA 0x10
MOVAR FSR
Clr_All_RAM_Lp:
CLRR IAR
INCR FSR,1
MOVR FSR,0
ANDIA 0x3F
BTRSS 0x3,2
LGOTO Clr_All_RAM_Lp


Back to top

Q8. 如何正确设置PWM功能?

A8. 设置PWM功能请遵循以下5个步骤
1. 设置预分频器及时钟源。
2. 设置T1模式寄存器。
3. 设置T1计数初值。
4. 设置PWM Duty值。
5. 使能PWM。
例:产生脉冲宽度500us,占空比为50%的PWM信号(指令周期1us)
MOVIA 0x01 ;预分频系数1:4,时钟源为内部时钟
SFUN S2
MOVIA 0x02 ;T1自动重装,高电平有效
SFUN S1
MOVIA 125D ;500=125*4
SFUN S0
MOVIA 63D ;50%占空比
SFUN S3
SFUNR S1
IORIA 0x81 ;使能PWM,开始计数
SFUN S1
当用户在PWM输出口输出高电平时,硬件就会在PWM口上自动加载PWM脉冲信号。


Back to top

Q9. 如何正确设置IR功能?

A9. 当用户使用到IR功能时,需要确定以下几点:
1. 时钟源(455K或者3.58M)
2. IR载波频率(38K/57K可选)
3. 有效电平选择(高电平有效还是低电平有效)
4. IR使能位
例:使能455K下38K载波输出,低电平加载波
MOVIA 0x05
SFUN S6
如果用户需要使能大电流输出,还需要将FE寄存器的Bit2置1(这时灌入电流最大为40mA)。
IOSTR 0xE
IORIA 0x4
IOST 0xE


Back to top

Q10. 如何正确设置Buzzer功能?

A10. 当用户需要使用Buzzer功能时,可以按如下步骤设置
1. 设置预分频器和时钟源
2. 设置Buzzer控制寄存器
3. 开启计数
例:设置2K Buzzer信号(假定指令周期1us)
MOVIA 0x03 ;预分频系数1:16,时钟源为内部时钟
SFUN S2
MOVIA 0x8C ;分频系数1:32
SFUN S5 ;输出频率=1M/(16*32)
MOVIA 0x1
SFUN S1 ;开始计数


Back to top

Q11. 如何设置外部INT中断?

A11. 用户需要外部中断功能时,可以按以下步骤操作
1) 设置外部INT Pin为输入口
2) 设置中断触发沿
3) 设置系统控制寄存器SCR的EIS Bit为1
4) 使能外部中断(EXIE置1)
5) 使能全局中断
MOVIA 0x01
IOST 0x6 ;设置为输入口
MOVIA 0xFE
IOST 0xD ;输入上拉
MOVIA 0x3
T0MODE ;下降沿中断
MOVIA 0x40
IOST 0xE ;INT Pin选择为外部中断(EIS=1为外部中断口,否则为通用IO)
MOVIA 0x4
IOST 0xF ;使能外部INT中断
ENI


Back to top

Q12. T0定时器设置步骤

A12. 共分为四个步骤
1)设置预分频器及时钟源
2)设置定时器初值
3)使能T0中断
4)使能全局中断
实现1ms定时(假定指令周期为1us)
TCC EQU 0x1
IntReq EQU 0xF
MOVIA 0x3 ;预分频系数1:16,时钟源为内部时钟
T0MODE
MOVIA 193D ;设置T0初值为193
MOVAR TCC ;定时时间为(256-193)*16=1008us
MOVIA 0x1 ;使能T0中断
IOST IntReq
ENI ;使能全局中断


Back to top

Q13. T1定时器设置步骤

A13. 共分为五个步骤
1)设置预分频器及时钟源
2)设置定时器初值
3)使能T1中断
4)使能全局中断
5)开始计数
实现1ms定时(假定指令周期为1us)
S0 EQU 0
S1 EQU 1
S2 EQU 2
MOVIA 0x3
SFUN S2 ;预分频系数1:16,时钟源为内部时钟
MOVIA 0x2
SFUN S1 ;设置自动重装模式
MOVIA 63D ;设置T1初值为63
SFUN S0 ;定时时间为63*16=1008us
MOVIA 0x80 ;使能T1中断
IOST IntReq
ENI ;使能全局中断
SFUNR S1
IORIA 0x1 ;开始计数
SFUN S1


Back to top

Q14. T2定时器设置步骤

A14. 共分为五个步骤
1)设置预分频器及时钟源
2)设置定时器初值
3)使能T2中断
4)使能全局中断
5)开始计数
实现1ms定时(假定指令周期为1us)
S9 EQU 9
SA EQU 0xA
SB EQU 0xB
MOVIA 0x3
SFUN SB ;预分频系数1:16,时钟源为内部时钟
MOVIA 0x2
SFUN SA ;设置自动重装模式
MOVIA 63D ;设置T2初值为63
SFUN S9 ;定时时间为63*16=1008us
MOVIA 0x20 ;使能T2中断
IOST IntReq
ENI ;使能全局中断
SFUNR SA
IORIA 0x1 ;开始计数
SFUN SA


Back to top

Q15. 低电压Reset (LVR) 在SLEEP时,是否会耗电?

A15. LVR在SLEEP时会自动关闭,所以不存在耗电问题。

Back to top

Q16. 低电源复位(LPR)和低电压复位(LVR)的区别?

A16. 低电源复位(LPR)的主要目的是提供确保IC能够正常工作的最低工作电压,一般大约为1.8V左右;低电压复位(LVR)主要目的是提供系统可工作的最低电压保护,在Configuration Word中共有6组(2.0V、2.6V、2.8V、3.2V、3.6V、4.3V)低电压复位选项供选择。用户可以根据实际情况选择其中的一种电压保护方式。

Back to top

Q17. 低电压复位(LVR)设置步骤?

A17. 共分为两步:
第一步:在程序中将LVR Bit置1
第二步:在Configuration Word选择合适的LVR值


Back to top

Q18. 低电压复位(LVR)不准怎么办?

A18. 由于制程漂移的原因,不同批次的IC低电压复位电压会有所差异,当客户发现LVR值不准时可以 通过AM8EB_Writer v1.40提供的Trim Bit来微调LVR值,以期达到较为准确的电压值。

Back to top

Q19. AM8EB单片机支持几种振荡模式?

A19. AMEB支持6种振荡模式
IRC:内部RC振荡
EXT-R:外部R内部C振荡
LF:低频晶体振荡
XT:标准晶体振荡
HF:高频晶体振荡
ERC:外部RC振荡


Q20. AM8EB单片机与EMC单片机在端口操作上的差异?

Back to top

A20. 当使用位操作指令对端口进行写操作,AM8EB遵循先读后写的原则(无论是输出口还是输入口,都先读IO端口上的状态,然后执行位逻辑运算,最后写端口);而EMC单片机输出口是从端口锁存器中读取数据,输入口是读取IO端口上的状态,然后执行位逻辑运算,最后写端口。

Back to top

Q21. 如何离线烧录客户应用程序?

A21. 当使用IntRc时需要做如下几个步骤
1) 将客户Bin档下载到烧录器的Memory1或Memory2
2) 将Trim Bit值下载到烧录器的Memory1或Memory2
3) 离线烧录
注意:请尽量避免从IC读出程式到烧录器的Memory1或Memory2,然后直接烧录。


Back to top