• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::


Browsing this Thread:   1 Anonymous Users






Re: usart與timer中斷問題
#10
版主
版主


查看用戶資訊
PIC16F 常因BANK 的切換動作導致動作錯誤,所以在對 SFR 動作之前要先確定其所在的 BANK。
PIC16F193x & PIC16F182x 系列屬於Enhanced Mi-Range PIC Microcontroller,其內部架構有所改進 Common Core Register & Common RAM 以減少程式對BANK 的切會換動作。

PIC16F1xxx 新的資料記憶體配置:
保留每個 Bank 的最底下 16 bytes RAM 做為共用 RAM 區域
保留每個 Bank 的最初的 12 bytes RAM 做為共用 CPU registers.
SFRs 及周邊佔用每個 Bank 位址 0x0C 到 0x1F

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


Re: usart與timer中斷問題
#9
資深會員
資深會員


查看用戶資訊
忘了wdszd 有講 "低中斷" (所以是 PIC18 ) , 胡亂抓了 16F887 資料作回覆 , 沒想到誤打誤撞 猜對了

細看樓上文章 , 突發奇想 作了個 搞怪測試 ( 16F1937 IN MPLAB SIM ) :
ISR 第一行 :  BSF     INTCON 7  奇怪 無法 置 1 ?

前面再加個  NOP   ;  原來是 重新進入 ISR 

中間在加個  BCF      PIR1 
TMR2IF  ;  怎麼還是重覆進入 ISR 那我之前講的不就都是放屁 ?

細查之下 原來是忘了把 BANK 切回來 所以 BCF     PIR1 TMR2IF 跟本是毫無作用
前面再加個  BANKSEL  PIR1  OK !  .....  就算 GIE 被設定 也不會重新進入  ISR

Attach file:



jpg  (0.00 KB)


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


Re: usart與timer中斷問題
#8
中級會員
中級會員


查看用戶資訊
照本宣科 果然還是仔細讀讀data sheet才對 謝謝各位


結果我把change color 改掉了 改回紅色好像watch就正常了

我笨了嗎?

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


Re: usart與timer中斷問題
#7
資深會員
資深會員


查看用戶資訊
雖然在中斷的部分,還是沒辦法用的很熟,但是這個文章又讓我學到一點東西,感謝版主解釋

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


Re: usart與timer中斷問題
#6
版主
版主


查看用戶資訊
PIC16 & PIC18 的 UART接收中斷位元 RCIF 是很容易被誤判的位元,就如 Beee 所提示的 "RCIF 無法用軟體直接清除,讀取 RCREG ( UART Reveicer Buffer) 可清除 RCIF 位元。
接下來所延生出的問題是 : 當使用 ICD2 之類的除錯工具在UART 接收中斷下是很難看到 RCIF = 1 的情況,因為 ICD2 有可能在斷點停下來是執行了 watch window 的更新動作也獨到的 RCREG 所以 RCIF 就被清 0 了。

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


Re: usart與timer中斷問題
#5
版主
版主


查看用戶資訊
GIE ( Global Interrupt Enable Bit ) & PEIE (Peripheral Interrupt Enable Bit) 這是在一般的使用上的稱謂;如果 PIC18Fxxxx 有啟用了 Interrupt Priority 功能 ( RCONbits.IPEN=1 ),這時 GIE 變成 GIEH ( Glogal Interrupt Enable High-Priogity Bit),PEIE 成為 GIEL (Low priority) 的控制位元。基本上這兩個位元GIEH & GIEL 是由軟體設定後,一但產生中斷自動清 0 以防止相同等級的中斷進入,等到最後執行 RETFIE 0 或 RETFIE FAST 後再由硬體自動設為 1 後返回並開始接受中斷。這個 GIEH & GIEL 是總管,與周邊各個獨立的 xxIF 位元相輔相成,各有各的功能的。

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


Re: usart與timer中斷問題
#4
資深會員
資深會員


查看用戶資訊
如附圖 :

如有會發生中斷之事件發生 , 不管其中斷向量有無 致能 , 該中斷之旗標皆會被設立
進入中斷程式的條件 :
一中斷向量已被致能 & 相對應的旗標被設立 ( GIE 要先設定 )

所以如果沒清除旗標 , 會發生重覆進入中斷程式

PEIE 不用清 0

清除旗標通常是直接清 0 , 但 TX , RX 例外 ( 不知有否其他類似狀況 , 但請前輩告知 .... )

Attach file:



jpg  (0.00 KB)


發表於: 2009/12/23 3:04

Edited by Beee on 2009年12月23日 04:32:17
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: usart與timer中斷問題
#3
中級會員
中級會員


查看用戶資訊
謝謝,我試試看

另外一個問題

當我清除中斷旗標時 PEIE不是應該清0嗎?

PIR1bits.RC1IF = 0;
INTCONbits.TMR0IF = 0;
變得不能清0了
但我使用直接
INTCONbits.PEIE = 1;
卻可以使用 有人也有類似這種問題過嗎?

我的watch不能像之前一樣更變原有的值時會變紅色,請問該怎麼去調整

發表於: 2009/12/22 16:51

Edited by wdszd on 2009年12月22日 17:45:51
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: usart與timer中斷問題
#2
資深會員
資深會員


查看用戶資訊
你應該可以利用先判斷是哪個中斷旗標被設定的方式來做,
也就是說

if(TMR0IF)
{
TMR0IF=0;
.
.
.
}

if(RCIF)
{
RCIF=0;
.
.
.
}

您試看看!

發表於: 2009/12/22 16:33
不怕苦...苦半輩子;怕苦...苦一輩子
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


usart與timer中斷問題
#1
中級會員
中級會員


查看用戶資訊
當我同時使usart與timer放置於低中斷我該在哪做判斷?

我試過在跳入中向量內的函數之後再做判斷

變成我的PEIE無法置1

usart與timer的中斷旗標我也清除過

請問有使用過的人可以分享一下你們的作法嗎 謝謝

發表於: 2009/12/22 16:04
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... ]

教育訓練中心

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