會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





PIC32MX 中斷問題
中級會員
註冊日期:
2014/05/28 13:30
所屬群組:
註冊會員
文章: 45
等級: 5; EXP: 51
HP : 0 / 112
MP : 15 / 1170
離線
各位前輩先進大家好!

目前正在使用PIC32MX340F128H這顆Chip

在寫中斷的時候遇到一點小麻煩

以往我在開發32bit系列晶片時都是使用函式庫的方式完成

在這次開發的過程中我希望懂更多底層的系統設定

因此我使用暫存器的方式進行設定

在寫到中斷的時候 發現中斷不會動作

反覆使用函式庫與暫存器的方式實驗後

我發現問題點出在此函式 INTEnableSystemMultiVectoredInt();

只要加了此函式即可正常動作(代表週邊中斷設定並無錯誤)

翻了一下他的注解如下

引用:
* Function: void INTEnableSystemMultiVectoredInt(void)
*
* PreCondition: EBASE and IntCtl.VS set up
*
* Input: None
*
* Output: None
*
* Side Effects: System interrupts are turned on
*
* Overview: Enables system wide multi-vectored interrupts


因為我找不到最底層此函式的code內容因此無法得知到底寫了什麼

只知道此函式應該有對 EBASE與IntCtl進行設定

而不是僅僅透過INTCON的 MVEC設定完就好了

但我以C code的方式並無法去設定EBASE與IntCtl

我猜是因為他是CPU暫存器的關係?

如果像我猜測的話,那我是否只能以函式庫去實現中斷功能呢?

如果不是的話 麻煩各位前輩先進指正我的錯誤

並且能指導我如何以暫存器的方式進行此項設定

先謝謝各位前輩與先進!!

2016/11/08 14:35
轉換PDF檔 列印


Re: PIC32MX 中斷問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14183
等級: 72; EXP: 56
HP : 1073 / 1789
MP : 4727 / 71206
離線
PIC32 玩到暫存器底層的系統設定會是件很辛苦的是。以你所提到的 Multi Vector 的設定就是必須的,可是誰會知道要去設定 INTCON<MVEC> 的位元呢! 但使用函數庫就會明顯得知這是最優先的設定。
(Single Vector 的選項一般是給 RTOS 系統使用的)。

所以使用 PIC32 Peripheral Library 算是最基本的設定,在往下使用暫存器真得很辛苦。往上現可以使用 MHC (Microchip Harmony Configurator ) 來快速規劃周邊。

2016/11/09 13:17
轉換PDF檔 列印


Re: PIC32MX 中斷問題
中級會員
註冊日期:
2014/05/28 13:30
所屬群組:
註冊會員
文章: 45
等級: 5; EXP: 51
HP : 0 / 112
MP : 15 / 1170
離線
引用:

Ryang 寫道:
PIC32 玩到暫存器底層的系統設定會是件很辛苦的是。以你所提到的 Multi Vector 的設定就是必須的,可是誰會知道要去設定 INTCON<MVEC> 的位元呢! 但使用函數庫就會明顯得知這是最優先的設定。
(Single Vector 的選項一般是給 RTOS 系統使用的)。

所以使用 PIC32 Peripheral Library 算是最基本的設定,在往下使用暫存器真得很辛苦。往上現可以使用 MHC (Microchip Harmony Configurator ) 來快速規劃周邊。


感謝Ryang版主的回覆!

的確是會比較辛苦,暫存器的設定真的很多,

只是以往在寫32系列都是使用函數庫總有種不踏實感,

今天有找到INTEnableSystemMultiVectoredInt()最底層的code,

可惜組語我並不熟悉,

您的建議我會多加利用的,

再次感謝您!!

2016/11/09 13:37
轉換PDF檔 列印


Re: PIC32MX 中斷問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14183
等級: 72; EXP: 56
HP : 1073 / 1789
MP : 4727 / 71206
離線
PIC32 的組語....太難懂了且變化太多,絕不建議寫組語,很難看得懂得。你可以看一下反組譯出來的組語,很嚇人的。

2016/11/09 13:53
轉換PDF檔 列印


Re: PIC32MX 中斷問題
中級會員
註冊日期:
2014/05/28 13:30
所屬群組:
註冊會員
文章: 45
等級: 5; EXP: 51
HP : 0 / 112
MP : 15 / 1170
離線
引用:

Ryang 寫道:
PIC32 的組語....太難懂了且變化太多,絕不建議寫組語,很難看得懂得。你可以看一下反組譯出來的組語,很嚇人的。


組語的部分我頂多只有辦法把這種簡單的設定看懂

引用:
void __attribute__ ((nomips16)) INTEnableSystemSingleVectoredInt(void)
{
unsigned int val;

// set the CP0 cause IV bit high
asm volatile("mfc0 %0,$13" : "=r"(val));
val |= 0x00800000;
asm volatile("mtc0 %0,$13" : "+r"(val));

INTCONCLR = _INTCON_MVEC_MASK;

// set the CP0 status IE bit high to turn on interrupts
INTEnableInterrupts();
}


就算真的很簡單,也是需要花我很長時間的閱讀,

畢竟我一點組語的底子都沒有,

因此絕對不會考慮寫組語的.. 哈,

感謝版主的建議!!

2016/11/09 14:13
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2017 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project