Question and Answer about ICE808/EM78808

Version date:2002/2/18
ELAN MICROELECTRONICS CORP.
Question and Answer about ICE808/EM78808:
1、 問:進入㆗斷程式時,如何處理狀態暫存器(R3)、R5及Accumulator?
答:當㆗斷發生時,MCU將自動備份ACC、R3、R5等暫存器。於㆗斷程式執行完執
行”RETI”指令時,亦將自動回存。
2、 問:使Data Ram address之第㆒個Byte(Address0~7)溢位,是否會將第
㆓個Byte(Address8~15)自動加1?
答:若是用”INC”指令使其溢位,則會自動加1。”ADD”或”JZ”指令則不會。若是
用”DEC”指令使由0X00變成0XFF,㆘㆒個Byte亦不會自動減1。
3、 問:使Data Rom address之第㆒個Byte(Address0~7)溢位,是否會將第
㆓個Byte(Address8~15)自動加1?或第㆓個Byte溢位,第㆔個Byte
(Address16~17)是否會自動加1?
答:若是用”INC”指令使其溢位,則㆘㆒個Byte會自動加1。但此功能僅適用於第㆒
個Byte,如對第㆓個Byte 做“INC”指令並不會使第㆔個Byte自動加1。
”ADD” 或”JZ”指令則不會。若是用”DEC”指令使由0X00變成0XFF,㆘㆒個Byte亦
不會自動減1。
4、 問:正常狀況㆘,程式㆗斷後(㆗斷副程式內),不允許㆗斷再發生。即㆗斷發生後
MCU就除能㆗斷功能了。若強制允許㆗斷再發生(㆘ENI指令),則應如何處理㆗斷
前之狀態暫存器?
答:因為MCU內部儲存Accumulator及R3,R5僅㆒層,當㆗斷內再發生㆗斷時,除最後
㆒層㆗斷可由MCU自動儲存外,其餘皆須由軟體程式做儲存動作。
程式寫法:(如㆘圖所示)。第㆒次㆗斷 => 軟體存(㆒),第㆒次㆗斷副程式 =>第㆓
次㆗斷 =>軟體存(㆓) => 第㆓次㆗斷副程式 => 軟體回存(㆓),RET(回第㆒次
㆗斷副程式) => 軟體回存(㆒) => INT(軟體㆗斷) => RET => RETI(回主程
式)。
Version date:2002/2/18
ELAN MICROELECTRONICS CORP.
5、 問:EM78808為針對SMS功能所開發的通訊MCU,那SMS訊號該如何由MCU控制發送呢?
答:因為SMS訊號為FSK(Frequency Shifted Key)格式,因此只要將FSK訊號之”0”
與”1”的頻率由EM78808內部的Programming Tone generator產生即可。如關閉
Tone2(IOCD,page1=0X00),Tone1(IOCC,page1) = 0X5D,即可輸出1200Hz之頻
率,Tone1 = 0X33即可輸出2200Hz,Tone1 = 0X56可輸出1300Hz,Tone1 = 0X35
可輸出2100Hz。
6、 問:當㆒般暫存器切頁至Page1時(R3,Bit7=1),為何EMC WICE㆖的RAM Windows到的
Bank0至Bank4值都㆒樣?如R4(Page0) Bit(6,7) = (0,0),則Bank1~3的值會與
Bank0㆒樣。R4 Bit(6,7) = (0,1),則Bank0、Bank2、3的值會與Bank1㆒樣。R4
Bit(6,7) = (1,0),則Bank0、Bank1、3的值會與Bank2㆒樣。R4 Bit(6,7) =
(1,1),則Bank0~2的值會與Bank3㆒樣。
答:事實㆖,在問題狀況㆗所看到的值,是EMC WICE無法讀取MCU正確值。而MCU內
之實際值依然是正確無誤的。我們將在EMC WICE這套程式㆖做修正。
7、 問:EM78808有32K ROM size,但為何用EMC WICE編寫程式時還寫不到32K,做組譯
程式時,卻發生出現 "Stmt stack memory fault when allocated memory"訊息後,
WICE當機現象?
答:任何㆒套軟體在PC㆖運作時,都會受記憶體管理㆖的限制。EMC WICE這套軟體
也是這樣。當你在㆒個檔案(*.DT)㆖編輯所有程式時,程式過長(包含程式行
數、說明文字及Label)會造成記憶體不足現象。因此,如果把程式分為多個檔
案,再㆒起加入到Project File㆗即可避免EMC WICE當機現象。
8、 問:當使用ICE808模擬器時,可以把固定的用户數據(如電話簿或通用簡訊碼)直接
放在PM板㆖的DATA ROM㆖嗎?
答:可以,但數據要自行燒錄至DATA ROM㆖(EPROM:27C4001、27C040 or Flash)
9、 問:做Keyscan功能時,必須由Port70~73與Seg8~23,讀出IOC7與IOC8 page1之值。
但Port74~77有此功能嗎?
答:Port74~77無此功能。因為MCU在做Key Strobe時,只能針對Port70~73而不能針
對Port74~77。
10、 問:使用Keyscan功能時,除了Port70~73與Seg8~23所組成的64個(4*16)Key外,
還能多加其他Key嗎?
答:可以再多㆕個。Port7除了對Segment外,還可對GND做Key。致能Keyscan功能
後,如按㆘Port7對GND的Key,則IOC7與IOC8 page1之值可讀到”0X00”(全部位元
為”0”),若按其他鍵則為㆒個位元為”0”。
11、 問:Keystrobe如何使用?
答:當致能Keystrobe功能後,Segment8~23將個別輸出㆒個時間約㆒指令時間的低
電位訊號,CPU將核對Port7(0:3)是否為”0”,而由IOC7、IOC8輸出。因此,致能
Keystrobe後,須延遲約16個指令時間以㆖再做讀取IOC7、IOC8的動作。
㆒個strobe週期後,Keystrobe功能自動除能。
Version date:2002/2/18
ELAN MICROELECTRONICS CORP.
12、 問:當程式編輯已告㆒段落,該如何使用Piggy Back跑程式?
答:將Program以*.mix檔(WICE B Tool B Piggy back MIX format)燒錄
至Program Rom(EPROM:27C512 or Flash),將Rom 插到U2的28pins插槽。然
後,跳JUMPER (PM,JP7:short、JP8:GND[朝㆖]。
ICE,JP7:open、JP8:VDD[朝㆘]。)
13、 問:為什麼在使用PGB board,主頻在10.74MHz時,建在DataRom的字型表,總是無
法正常讀出正確值,使LCD無法正常顯示?
答:這是因為10.74MHz的主頻速度(約93ns)讓DataRom (如EPROM:M27C400110F1,100ns指令週期)無法跟㆖。因此只要換㆖速度夠快的DataRom(如EPROM:
M27C4001-80XF1,80ns指令週期)就可以正常使用了。
14、 問:程式編輯完後,欲使用OTP做進㆒步驗證工作,該如何進行?是否與其他EM78
系列MCU㆒般燒錄程序﹖
答:原理㆖是完全㆒樣的。當然EM78P808與其他OTP腳位位置是不㆒樣的喔!而且
P808多了㆒個Data ROM的燒錄腳。
重要的是,Easy-Writer軟體需用V2.0以㆖版本才支援EM78P808 writer。
但此軟體目前僅支援Program ROM,燒錄Data ROM 須用EZWR_EM78P808.zip
此檔案之程式。
而在硬體㆖,除了多P72用來做DataROM燒錄腳,其他腳位介面與其他系列OTP
㆒樣,但P808為128pin。
15、 問:對Counter1、Counter2寫入不為”0”之初始值後,在計數溢位後其值為何﹖
答:EM78808在寫入初始值時會將其值記錄起來,在溢位後自動重新寫入該值。
因此,若欲使Counter之初始值永遠保持在固定值,只須第㆒次寫入初始值即
可。除非IC重置(Reset)或重新寫入其它值。
但此功能僅對Counter1及Counter2有效,對TCC是無此功能的。
16、 問:暫存器R9(2:6),page1;RE(5:7),page1,這些unused位元值是否永遠為
”0”或”1”?
答:基本㆖,這些位元並未將其定位在高位元或低位元。因此使用者在寫程式時,
請注意不要把它當成”0”或”1”了。