• slider image 442
  • slider image 497
  • slider image 498
  • slider image 499
  • slider image 500
  • slider image 502
:::


Browsing this Thread:   1 Anonymous Users






Re: 啟動Timer後過一段時間INTOSC被變成31K的頻率
#10
資深會員
資深會員


查看用戶資訊
CLRF PCLATH

後面 再加個 CLRF STATUS

還不行那就在 bcf PIR1,0 後面加入

BTFSS LED
GOTO $+.3
BCF LED
GOTO $+.2
BSF LED

抓一隻腳來點 LED ,確定 TIME1 是活著還是死了

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


Re: 啟動Timer後過一段時間INTOSC被變成31K的頻率
#9
新會員
新會員


查看用戶資訊
大大你好,感謝你的協助


目前已將Timer1裡面的程式改為
InterruptService:
MOVWF W_Temp
SWAPF STATUS,W
MOVWF Status_Temp
MOVFW FSR
MOVWF Fsr_Temp
MOVFW PCLATH
MOVWF Pclath_Temp
CLRF PCLATH
btfss PIR1,0
goto EndIsr
Timer1Interrupt:
bcf PIR1,0
movfw CountDecMode
xorlw START_COUNT_DEC_MODE
btfsc STATUS,2
goto RunModeDecStartTime
goto RunModeDecStopTime
EndIsr:
movfw Pclath_Temp
movwf PCLATH
movfw Fsr_Temp
movwf FSR
swapf Status_Temp,W
movwf STATUS
swapf W_Temp,F
swapf W_Temp,W
retfie

我已經將呼叫部份改為goto了,雖然這個程式只給中斷呼叫
主程式不會呼叫的
然後變慢的問題不見了,但是產生了另依個問題
就是執行一段時間之後Timer會停掉!!!!@@
我其他地方不會停住它阿@@
但是主程式部分還是可以正常運行@@a...太奇怪了

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


Re: 啟動Timer後過一段時間INTOSC被變成31K的頻率
#8
資深會員
資深會員


查看用戶資訊
ISR:
        
MOVWF    W_TEMP
        SWAPF    STATUS
,W
        MOVWF    STATUS_TEMP
        MOVFW    FSR
        MOVWF    FSR_TEMP
        MOVFW    PCLATH
        MOVWF    PCLATH_TEMP
        CLRF    PCLATH
T1_ISR
:
    
BTFSS    PIR1,TMR1IF
    
GOTO    T1_ISR_END

;    BCF    T1CON,TMR1ON
    BCF    PIR1
,TMR1IF
;    MOVLW    0X00
;    MOVWF    TMR1L
;    MOVLW    0X00
;    MOVWF    TMR1H
    MOVFW    COUNTDECMODE
    XORLW    START_COUNT_DEC_MODE    
    BTFSC    STATUS
,
    
GOTO    OILSTARTRUN
    
GOTO    OILSTOPRUN
OILSTARTRUN
:
    
CALL    RUNMODEDECSTARTTIME
;    BSF    T1CON,TMR1ON
    
GOTO    T1_ISR_END
OILSTOPRUN
:
    
CALL    RUNMODEDECSTOPTIME
;    BSF    T1CON,TMR1ON
    
GOTO    T1_ISR_END

T1_ISR_END
:
        
MOVFW    PCLATH_TEMP
        MOVWF    PCLATH
        MOVFW    FSR_TEMP
        MOVWF    FSR
        SWAPF    STATUS_TEMP
,W
        MOVWF    STATUS
        SWAPF    W_TEMP
,F
        SWAPF    W_TEMP
,W
        RETFIE


我將你的程式重整如上:
不過還很有很多問題:

一、你的『中斷備份還原』寫法及用法 都有問題,STATUS 的資料在RETFIE 之後會不一致

二、中斷中不要再用 CALL ,會產生很多奇怪的問題 (中斷使用的SUBROUTINE ,不應該再被主程式使用)

三、不要用 01234567 要用TMR1ON TRM1IF 這些命名,

四、 TIMER1 的用法不好,跟本不用關閉再開啟。

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


Re: 啟動Timer後過一段時間INTOSC被變成31K的頻率
#7
新會員
新會員


查看用戶資訊
感謝您的回覆
InterruptService:
;------備份Register------
   movwf W_Temp
   movfw STATUS
   movwf Status_Temp
   movfw PCLATH
   movwf Pclath_Temp
   btfsc PIR1,0
   goto Timer1Interrupt
;------還原Register------
   movfw Status_Temp
   movwf STATUS
   movfw Pclath_Temp
   movwf PCLATH
   movfw W_Temp
   retfie

Timer1Interrupt:
   BCF T1CON,0
   bcf PIR1,0
   movlw 0x00
   movwf TMR1L
   movlw 0x00
   movwf TMR1H
   movfw CountDecMode
   xorlw START_COUNT_DEC_MODE
   btfsc STATUS,2
   goto OilStartRun
   goto OilStopRun
OilStartRun:
   call RunModeDecStartTime
;-------還原Register--------
   movfw Status_Temp
   movwf STATUS
   movfw Pclath_Temp
   movwf PCLATH
   movfw W_Temp
   BSF T1CON,0
   retfie
OilStopRun:
   call RunModeDecStopTime
;-------還原Register--------
   movfw Status_Temp
   movwf STATUS
   movfw Pclath_Temp
   movwf PCLATH
   movfw W_Temp
   BSF T1CON,0
   retfie

我應該有做備份跟還原了,還是大大您指的是....
可否在清楚解答

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


Re: 啟動Timer後過一段時間INTOSC被變成31K的頻率
#6
資深會員
資深會員


查看用戶資訊
中斷程式寫錯了

在 RETFIE 之前,要完成暫存器的還原

所以你的程序序應該是

ORG 0X0004
ISR:
備份 REGISTER
T1_ISR:
BTFSS PIR1,TMR1IF
GOTO TI_ISR_END


TI_ISR_END:


T2_ISR:
BTFSS PIR1,TMR2IF
GOTO TI_ISR_END

T2_ISR_END:



ISR_END:
還原REIGSETER
RETFIE

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


Re: 啟動Timer後過一段時間INTOSC被變成31K的頻率
#5
新會員
新會員


查看用戶資訊
上面的程式亂掉了,我從新貼
InterruptService:
   movwf W_Temp
   movfw STATUS
   movwf Status_Temp
   movfw PCLATH
   movwf Pclath_Temp
   btfsc PIR1,0
   goto Timer1Interrupt
   movfw Status_Temp
   movwf STATUS
   movfw Pclath_Temp
   movwf PCLATH
   movfw W_Temp
   retfie

Timer1Interrupt:
   BCF T1CON,0
   bcf PIR1,0
   movlw 0x00
   movwf TMR1L
   movlw 0x00
   movwf TMR1H
   movfw CountDecMode
   xorlw START_COUNT_DEC_MODE
   btfsc STATUS,2
   goto OilStartRun
   goto OilStopRun
OilStartRun:
   call RunModeDecStartTime
   movfw Status_Temp
   movwf STATUS
   movfw Pclath_Temp
   movwf PCLATH
   movfw W_Temp
   BSF T1CON,0
   retfie
OilStopRun:
   call RunModeDecStopTime
   movfw Status_Temp
   movwf STATUS
   movfw Pclath_Temp
   movwf PCLATH
   movfw W_Temp
   BSF T1CON,0
   retfie
;-----中斷服務程式-----Timer1-----

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


Re: 啟動Timer後過一段時間INTOSC被變成31K的頻率
#4
新會員
新會員


查看用戶資訊
不會的,我裡面沒有動到OSCTUNE,我順便把我的Initial程式貼出來

InitTimer1:
   BCF STATUS,RP0 ;Bank 0
   BCF STATUS,RP1 ;

   movlw 0x00
   movwf TMR1L
   movlw 0x00
   movwf TMR1H
   BCF T1CON,7
   BCF T1CON,6
   BCF T1CON,5
   BCF T1CON,4
   BCF T1CON,3
   BSF T1CON,2
   BCF T1CON,1

   movlw 0x00
   movwf INTCON
   BSF INTCON,7
   BSF INTCON,6

   BSF STATUS,RP0 ;Bank 1
   BCF STATUS,RP1 ;
   movlw 0x00
   movwf PIE1
   BSF PIE1,0
   BCF STATUS,RP0 ;Bank 0
   BCF STATUS,RP1 ;
   return
InitOsc:
   BSF STATUS,RP0 ;Bank 1
   BCF STATUS,RP1 ;
   bsf OSCCON,6
   bsf OSCCON,5
   bcf OSCCON,4
   bsf OSCCON,3

   bsf OSCCON,0
   BCF STATUS,RP0 ;Bank 0
   BCF STATUS,RP1 ;

return

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


Re: 啟動Timer後過一段時間INTOSC被變成31K的頻率
#3
資深會員
資深會員


查看用戶資訊
會不會程式某個地方去改到OSCTUNE的內容值?

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


Re: 啟動Timer後過一段時間INTOSC被變成31K的頻率
#2
新會員
新會員


查看用戶資訊
補充一下,我並沒有啟動WDT,在燒錄時的Config就disable了
並且也Disable了BOR

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


啟動Timer後過一段時間INTOSC被變成31K的頻率
#1
新會員
新會員


查看用戶資訊
目前我用16f913 28pin的
但是使用上遇到一個問題,我有用到Timer1中斷
並且使用內部震盪器,調整為8M
而且也外接六組七段顯示器
主程式不斷做掃描工作,Timer1中斷程式會將七段顯示器值減一
但程式Run了大約30秒以後我的整個INTOSC頻率整個大幅降低
可是整個程式的功能都還正常,除了Timer1不會產生中斷以外
只是速度變很慢,掃秒速度便非常慢,感覺好像是用31K的頻率
請問一下,有可能會有哪些原因造成這樣??

;-----中斷服務程式-----Timer1-----
InterruptService:
movwf W_Temp movfw STATUS
movwf Status_Temp
movfw PCLATH
movwf Pclath_Temp
btfsc PIR1,0 goto Timer1Interrupt
movfw Status_Temp movwf STATUS
movfw Pclath_Temp
movwf PCLATH
movfw W_Temp
retfie
Timer1Interrupt:
BCF T1CON,0 bcf PIR1,0 movlw 0x00
movwf TMR1L
movlw 0x00
movwf TMR1H
movfw CountDecMode xorlw START_COUNT_DEC_MODE
btfsc STATUS,2
goto OilStartRun
goto OilStopRun
OilStartRun:
call RunModeDecStartTime movfw Status_Temp movwf STATUS
movfw Pclath_Temp
movwf PCLATH
movfw W_Temp
BSF T1CON,0 retfie
OilStopRun:
call RunModeDecStopTime movfw Status_Temp
movwf STATUS
movfw Pclath_Temp
movwf PCLATH
movfw W_Temp
BSF T1CON,0
retfie

可否指點個方向@@

發表於: 2009/12/11 11:45
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... ]

教育訓練中心

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