• slider image 442
  • slider image 477
  • slider image 479
  • slider image 480
  • slider image 481
  • slider image 482
:::


Browsing this Thread:   1 Anonymous Users




« 1 2 (3) 4 »


Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
#17
初級會員
初級會員


查看用戶資訊
謝謝shpeng及Beee的回覆

昨天下午跑去送貨 這年頭錢真難賺

我的探棒是x10下去量的,會吃掉訊號,我再想想其他方式,因為沒有x100

忘了電容並是提高容值耐壓不變,串聯是提高耐壓容值降低

看了Beee的回覆,發現32768Hz震盪器似乎沒有問題,這樣問題就釐清了一些,
問題1MCU 每次 power off 再 power on ,程式已開始動作,
       但時鐘的顯示都會停在 00
:00 約一分鐘才會開始動作,
       時鐘顯示正常動作後,用 reset 腳 reset MCU ,
       此時時鐘顯示可正常動作,但如power off 再 power on ,
       時鐘的顯示又會停在 00
:00 約一分鐘才會開始動作,
       這跟暫存器設定有關係嗎?
       目前暫存器只用到 OSCCON 
-> B'0111 0000'設內部8mHz鄭蕩器
                        I
/O PORT 暫存器
                        LCDPS 
-> B'0000 0000' TYPE A WAVE 1/3 BAIS 1:1

                        LCDSE0 
-> B'0000 0000'
                        
LCDSE1 -> B'0000 0000'
                        
LCDSE2 -> B'0000 0000'
                        
LCDSE3 -> B'1111 1111'
                        
LCDSE4 -> B'0011 1111'
                        
LCDSE5 -> B'0000 0000'

                        
LCDON -> B'0101 0011'FOSC/8192,1/4COM

                        LCDDATA12 
-> B'0000 0000'
                        
LCDDATA13 -> B'0000 0000'
                        
LCDDATA15 -> B'0000 0000'
                        
LCDDATA16 -> B'0000 0000'
                        
LCDDATA18 -> B'0000 0000'
                        
LCDDATA19 -> B'0000 0000'
                        
LCDDATA21 -> B'0000 0000'
                        
LCDDATA22 -> B'0000 0000'

                        
bsf     LCDCON,LCDEN;enable LCD module

                        OPTION_REG 
-> B'1100 0000'

                        
INTCON -> B'0100 0000'
                        
bsf     INTCON,GIE
                        
                        T1CON 
-> B'0000 1110' bit 4~5(T1CKPS1 T1CKPS0set 00 is 1:1
                                              bit 3
(T1OSCENset 1 is Enable 32.768KHz crystal for Timer1 clock
                                              bit 2
(T1SYNCset 1 is 非同步於外部時脈 ,
                                              
bit 1(TMR1CSset 1 is Timer1 clock use external clock
                                              bit 0
(TMR1ONset 0 is Disable Timer1
                        TMR1H 
->  H'C0';TMR1H=0xC0 -> 1次中斷0.5sec ;C0(Hbit,TMR1H00(Lbit,TMR1L) -> 49152 ;65536-49152=16384 in 32.768KHz
                        TMR1L 
->  00h;TMR1L=0x00
                        bsf     PIE1
,TMR1IE;enable TMR1IE=
                        bcf     PIR1
,TMR1IF;clear TMR1IF(TMR1IF=0
                        
bsf     T1CON,TMR1ON;Enable Timer1 ;bit 0(TMR1ONset 1 is Enable Timer1  

       以上是我目前用到的暫存器的設定及設定的順序,不曉得還有沒有其他沒設到的地方?



問題2
就是EEPROM的問題,我的程式目前設定程式一開始執行時,會從EEPROM讀出資料顯示在 LCD 上,
       如果是 power off 等一小段時間再 power on ,此時 LCD 上顯示的是程式預設要顯示的資料,而非從EEPROM讀出的資料?
       如果是用 MCLR reset 腳 reset ,此時 LCD 顯示的是從EEPROM讀出的資料
       試了好幾次都這樣不知道是哪裡出問題?


以上再請大家指點一下,謝謝

發表於: 2009/11/27 10:05
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
#16
資深會員
資深會員


查看用戶資訊
(10p串10p) ---> 5P
(10p並10p) ---> 20P

最近經驗 : 16F1936 TIMER 1 , VDD = 3.6V , C = 22P , 32.768Khz 峰對峰值 : 540 mV
振盪很穩 , (水晶振盪部份用地包圍起來)

發表於: 2009/11/26 15:25
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
#15
資深會員
資深會員


查看用戶資訊
問題2
將探棒 切換 X10 或 X100 增加探棒輸入阻抗.

發表於: 2009/11/26 14:58
少年不知愁滋味,老來方知路難行。
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
#14
初級會員
初級會員


查看用戶資訊
謝謝shpeng及Ryang板主的回覆
也謝謝shpeng的加油打氣

目前發現2個問題點:
1. EEPROM的問題,我的程式目前設定程式一開始執行時,會從EEPROM讀出資料顯示在 LCD 上,
   如果是 power off 等一小段時間再 power on ,此時 LCD 上顯示的是程式預設要顯示的資料,而非從EEPROM讀出的資料?
   如果是用 MCLR reset 腳 reset ,此時 LCD 顯示的是從EEPROM讀出的資料
   試了好幾次都這樣不知道是哪裡出問題?

2. Timer1 外接 32768Hz 震盪器的問題,我原本以為震盪器有問題,因為量測到的震盪波形只在 1V 內震盪,
   今天我又從好的PCB板上拆一顆震盪器下來用,並將我麵包板上用的震盪器接回去PCB板上,PCB板送電動作一切正常,
   量測震盪波形有在 5V 內震盪,可是量測在我麵包板上的 32768Hz 震盪器,震盪波形只在 350mV 內震盪???
   而且示波器探棒一勾上震盪器接腳,時間顯示就停止不動,探棒一拿開時間顯示又恢復動作,感覺震盪時脈被示波器吃掉了,
   不知道是哪裡出問題?
   我的 32768Hz 震盪器是接 20p
(10p串10p)電容到地,可是PCB板上的 32768Hz 震盪器沒接電容也是跑的很正常,真是...

以上兩點還請大家指點一下,謝謝

趕快來去惡補一下MPASM的講義

發表於: 2009/11/26 14:46
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
#13
版主
版主


查看用戶資訊
To : r620

看起來你對 Page & Bank 的切換觀念還不是很清楚。建議你把 MPASM 教育訓練裡的一些虛指令的用法看一下。
http://www.microchip.com.tw/modules/w ... nglefile.php?cid=4&lid=32

建議你看一下 PCLATH 是如何控制著Program Page 的。以及 RP0 & RP1 (STATUS 裡) 在使用直接定址時要怎樣切換到正確的Bank 去。

發表於: 2009/11/26 9:42
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
#12
資深會員
資深會員


查看用戶資訊
跨頁呼叫 使用下列程序

lcall xxxx
PageSel $ ;<----RETURN 不會改 PCLATH ,自己改回來


全組語的朋友,給你加油,加油

發表於: 2009/11/26 9:11
少年不知愁滋味,老來方知路難行。
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
#11
初級會員
初級會員


查看用戶資訊
用 ICD2 去 debugger 時發現

1. 將程式縮到page0
(0005h~07ffh)以內,可以正常執行,LCD 顯示也正常(00:00~23:59)
   中斷點設於 Timer1 中斷副程式,每次程式都有停在中斷點這

2. 將 LCD顯示副程式移到page1
(0800h~0fffh),主程式可正常執行,但 LCD 顯示停在 00:00 不動,
   中斷點設於 Timer1 中斷副程式,只有程式剛開始執行那一下有停在中斷點這,再來都沒停過 ?????


系統主時脈是用內部8MHz震盪器
Timer1 外接 32768Hz 震盪器當時鐘計時用

是 32768Hz 震盪器有問題的關係嗎?
還是有其他問題

再請大家指點一下,謝謝

發表於: 2009/11/25 17:25
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
#10
初級會員
初級會員


查看用戶資訊
謝謝Ryang板主的回覆

目前測試有發現在 pagesel 副程式,call 副程式返回後,
如果接下來是變數,在變數之前沒加 banksel 就會不正常,
變數前有加 banksel 就正常,
感覺跟shpehg所提到的一樣跟bank有關係
banksel  var0
    movlw    D
'1'
    
movwf    var0
    pagesel  xxx
    call     xxx
    banksel  var1 
<- 有加此行就正常,沒加此行 var1 就顯示不出來
    movlw    D
'2'
    
movwf    var1
    pagesel  xxx
    call     xxx

目前我程式架構如下
主程式 -> 在page0(0005h~07ffh)
          
call  初始化副程式
          call  LCD初始化副程式
主程式迴圈
          banksel LED 
-> 在bank0
          bsf     LED
          pagesel delay 
-> delay 在page1(0800h~0fffh)
          
call    delay
          pagesel 時間計算顯示副程式
          call    時間計算顯示副程式 
-> 時間計算顯示副程式在page0(0005h~07ffh)
          
banksel LED -> 在bank0
          bcf     LED
          pagesel delay 
-> delay 在page1(0800h~0fffh)
          
call    delay
          pagesel 主程式迴圈
          
goto    主程式迴圈


主程式在            page0
(0005h~07ffh)
初始化副程式在      page0(0005h~07ffh)
LCD初始化副程式在   page0(0005h~07ffh)
時間計算顯示副程式在page0(0005h~07ffh)

LCD顯示副程式在     page1(0800h~0fffh)
delay               page1(0800h~0fffh)


LCD初始化副程式
          banksel 
var -> 在bank0
          movlw   D
'1'
          
movwf   var
          
pagesel LCD顯示副程式 -> LCD顯示副程式在page1(0800h~0fffh)
          
call    LCD顯示副程式
          banksel 
var -> 在bank0
          movlw   D
'2'
          
movwf   var
          
pagesel LCD顯示副程式 -> LCD顯示副程式在page1(0800h~0fffh)
          
call    LCD顯示副程式
          banksel 
var -> 在bank0
          movlw   D
'3'
          
movwf   var
          
pagesel LCD顯示副程式 -> LCD顯示副程式在page1(0800h~0fffh)
          
call    LCD顯示副程式
          banksel 
var -> 在bank0
          movlw   D
'4'
          
movwf   var
          
pagesel LCD顯示副程式 -> LCD顯示副程式在page1(0800h~0fffh)
          
call    LCD顯示副程式

          banksel vvv 
-> bank0
          其它 ICON 顯示
          
return


如上所示LCD顯示副程式,在程式執行時 LCD 會顯示 00:00
如果第3個 banksel 
var 刪掉的話      LCD 會顯示 000
這是目前找到的狀況

我有ICD2 不過都只拿來燒程式用,debugger還不太會用,我等一下去網路學園看一下,上次有看到影音檔裏有講到,
SIM有些功能也還不會用,不知道有沒有SIM的中文教材?

以前程式還沒寫超過page0(0005h~07ffh),
這是第一次遇到程式寫超過2K,所以有點混亂
目前變數已使用 bank0 21h~64h ,預計程式寫好會用到 bank1 去,趕快在來去改程式

有結果再PO上來跟大家分享一下

發表於: 2009/11/25 14:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
#9
版主
版主


查看用戶資訊
有用除錯工具嗎? 如果沒有工具可以用 MPLAB SIM 模擬一下軟提執行個功能。

發表於: 2009/11/25 11:50
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 使用PIC16F946遇到pagesel問題跟timer1外接32768Hz震盪器問題
#8
初級會員
初級會員


查看用戶資訊
謝謝shpehg及Ryang板主的回覆

目前正在把程式精簡到可以放在程式記憶體page0(0005h~07ffh)中,
並且讓程式可以正常執行,
然後再將時間顯示程式段放入記憶體page1(0800h~0fffh)中,再測看看結果如何!

初步結果:
在程式記憶體page0(0005h~07ffh)中,程式可以正常執行
但將時間顯示程式段放入記憶體page1(0800h~0fffh)中,主程式還活著,時間顯示就停在00:08不動,
而且 00:08 的 8 還是從 1 就直接變 8 了,不是1,2,3...才到 8

努力找問題中...有結果再PO上來跟大家分享一下

發表於: 2009/11/24 17:56
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------