Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
|
||||
---|---|---|---|---|
初級會員
![]() ![]() ![]() |
謝謝shpehg及Beee的回覆
![]() 我再從硬體方面來改看看,不過現在是用麵包板再做測試,接到 MCU 的線都很長,不知道是不是這樣造成的影響, 我再來測測看有結果在PO上來 ![]() 原來 Beee 想抓板主的小辮辮 ![]() ![]() ![]() ![]()
發表於: 2009/12/1 9:02
|
|||
|
Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
|
||||
---|---|---|---|---|
資深會員
![]() ![]() ![]() |
參照:
-1 ; MOVF STATUS,W ; move status register into W 執行後確實會影響 新STATUS 但不影響 執行前STATUS -> W Ryang和Beee的程式 都沒有問題. 建議 FSR 順便存起來.
發表於: 2009/11/27 20:09
|
|||
少年不知愁滋味,老來方知路難行。
|
||||
|
Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
|
||||
---|---|---|---|---|
初級會員
![]() ![]() ![]() |
謝謝shpehg及Ryang板主及Beee的回覆
![]() 偷偷不用心一下被發現 ![]() ![]() 還好shpehg及Ryang板主再次提醒,讓我注意到 0x04h≠goto ISR ![]() 目前程式改成這樣:
STARTUP CODE
因為在 0x04h 加入好幾個指令,用 org 不知道要怎麼寫, 所以直接套用C:\Program Files\Microchip\MPASM Suite\LKR\16f946.lkr 這個檔案來修改 紅色部分是我修改的部份,中斷一發生,程式就跳到 0x04h,開始執行放在這裡的指令,banksel 和 pagesel 各佔 2 個記憶體位址, 所以從 0x04h 的 banksel tempW 指令到 goto ISR 指令,共用了 10 個記憶體位址,所以紅色部分我修改為 0x0D, 由於從 0x04h~0x0Dh 用掉了 page0(0005h~07ffh) 共 9 個記憶體位址,所以紅色部分我修改為 0x0E,程式段由 0x0E 開始, 以上如有說錯還請指正,謝謝 ![]() ![]() ![]()
// Sample linker command file for 16F946
以上提供給大家參考一下,pagesel 的問題解決了 ![]() 不過還有2個問題 ![]()
問題1. MCU 每次 power off 再 power on ,程式已開始動作,
以上再請大家指點一下,謝謝 ![]()
發表於: 2009/11/27 18:57
|
|||
|
Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
|
||||
---|---|---|---|---|
資深會員
![]() ![]() ![]() |
參照:
發表於: 2009/11/27 18:08
|
|||
|
Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
|
||||
---|---|---|---|---|
版主
![]() ![]() ![]() |
參照:
修改了一下,在call & goto 之前都加了pagesel 還有 ORG 定址與 CODE 怎會混著用呢! 都改成 ORG 吧。
發表於: 2009/11/27 15:33
|
|||
|
Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
|
||||
---|---|---|---|---|
版主
![]() ![]() ![]() |
參照:
是的,沒有做 PAGE 的設定就跳到 ISR 去,ISR 的Page 跟你所目前所跑的程式萬一要是不同的 Page 呢! 那程式不就掛了。 為避免錯誤所以要先存中斷背景後再呼叫中斷處理...
ORG 0x0004
發表於: 2009/11/27 15:26
|
|||
|
Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
|
||||
---|---|---|---|---|
資深會員
![]() ![]() ![]() |
org 00h
發表於: 2009/11/27 14:11
|
|||
少年不知愁滋味,老來方知路難行。
|
||||
|
Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
|
||||
---|---|---|---|---|
初級會員
![]() ![]() ![]() |
謝謝Ryang板主的回覆
![]()
org 00h
我的程式流程是一開始從 00h 進入就跳到 Start 開始變數給定初始值,暫存器設定,完成後才開始作其他的動作, Ryang板主說的 Cold Start or Warm Start 指的是這個嗎? 剛用 ICD2 debugger 在看 PCLATH 的值,結果有看到 1F ?我只用到page1(0800h~0fffh),應該不會跑到page3(1800h~1fffh)才對 ![]() 我再來看一下,有結果再PO上來跟大家討論一下 ![]() 以上再請大家指點一下,謝謝 ![]()
發表於: 2009/11/27 13:55
|
|||
|
Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
|
||||
---|---|---|---|---|
版主
![]() ![]() ![]() |
參照:
問題2. 就是EEPROM的問題,我的程式目前設定程式一開始執行時,會從EEPROM讀出資料顯示在 LCD 上, Power-On Reset 與 MCLR Reset 兩者之間的差異在於 RAM 的改變,基本上 Power-On Reset 時的 RAM 是隨機的,而MCLR切不會改變RAM的值只會將周邊重設成初始狀態。所以朝著 RAM 開機的 RAM Initilaize 來看。有做 Cold Start or Warm Start 的動作嗎?
發表於: 2009/11/27 11:16
|
|||
|