• 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: PIC18的SPI進不了中斷的問題
#10
版主
版主


查看用戶資訊
曾老師的書沒有錯,書上是使用 External 32768Hz Crystal 當作輸入源,所以選用 T1_SOURCE_EXT 來當作計時器的來源,且每 0.5 秒中斷一次的。

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


Re: PIC18的SPI進不了中斷的問題
#9
初級會員
初級會員


查看用戶資訊
感謝版主熱心幫我看程式

沒有想到是書上OpenTimer1的地方參數給錯了

我再去測看看SPI是否能正常收到資料進入中斷

有問題再來請教

謝謝

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


Re: PIC18的SPI進不了中斷的問題
#8
版主
版主


查看用戶資訊
"T1_SOURCE_EXT & // 並開啟TIMER1中斷功能(PIE1bits.TMR1IE=1)"

錯了,System Clock 沒進到 Timer1,Timer1 怎會動作?
改成 T1_SOURCE_INT &

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


Re: PIC18的SPI進不了中斷的問題
#7
初級會員
初級會員


查看用戶資訊
開啟中斷的地方
我是寫在Init_TMR1()裡
用內建的OpenTimer1()函示去做設定的
我也是過直接對暫存器給值做設定的方式
但還是一樣.....
連用MPLAB SIM模擬都進不了中斷
實在是怪了..........

void Init_TMR1 (void){

OpenTimer1( TIMER_INT_ON & // 使用C18編譯器timer函式庫
T1_16BIT_RW & // 初始化設定Timer1
T1_SOURCE_EXT & // 並開啟TIMER1中斷功能(PIE1bits.TMR1IE=1)
T1_PS_1_1 &
T1_OSC1EN_ON &
T1_SYNC_EXT_ON );
WriteTimer1(TMR1_VAL); // 寫入預設值
PIR1bits.TMR1IF = 0; // 清除中斷旗標

}

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


Re: PIC18的SPI進不了中斷的問題
#6
版主
版主


查看用戶資訊
程式裡缺了些東西如下紅字所示,建議參考一下 W401 裡的練習5-2

RCONbits.IPEN = 1;
PIR1bits.TMR1IF=0 ; //清掉Timer 1 中斷旗號
PIE1bits.TMR1IE=1; // 打開 Timer1 中斷

IPR1bits.TMR1IP = 1;
//INTCONbits.PEIE = 1; // 開啟周邊中斷功能
//INTCONbits.GIE = 1; // 開啟全域中斷控制
INTCONbits.GIEH = 1;

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


Re: PIC18的SPI進不了中斷的問題
#5
初級會員
初級會員


查看用戶資訊
多謝版主的熱心回覆
我改過以後一樣是進不了中斷
昨天晚上我剛好也去找了版主說的教育訓練來看
希望對C18的撰寫上有幫助
仔細研究了中斷的部分
結果問題還是一樣
我後來把他改成開啟中斷優先序的功能
希望中斷程式進入點比較不會有問題
但還是進不了中斷
==================================
//宣告並安排中斷執行程式記憶體位置
#pragma code high_vector=0x08
void high_interrupt (void)
{
_asm GOTO timer1_isr _endasm
}
#pragma code

#pragma interrupt timer1_isr
==================================
RCONbits.IPEN = 1;
IPR1bits.TMR1IP = 1;
//INTCONbits.PEIE = 1; // 開啟周邊中斷功能
//INTCONbits.GIE = 1; // 開啟全域中斷控制
INTCONbits.GIEH = 1;

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


Re: PIC18的SPI進不了中斷的問題
#4
版主
版主


查看用戶資訊
有關 PIC18 的中斷,建議看一下 W401 教育訓練的第五章,那裏說的很清楚。

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


Re: PIC18的SPI進不了中斷的問題
#3
版主
版主


查看用戶資訊
你把 PIC18 的中斷功能當成PIC16F 來用,所以中斷的進入向量點就不對了。
ROCN<IPEN> 為 0 ; 中斷進入點為 0x0008
RCON<IPEN> = 1; 分高低優先權中斷 0x0008 & 0x0018

所以請將程式中斷改為:
#pragma code low_vector=0x0008
void low_interrupt (void)
{
_asm GOTO timer1_isr _endasm
}
#pragma code

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


Re: PIC18的SPI進不了中斷的問題
#2
初級會員
初級會員


查看用戶資訊
我拿了書上Timer中斷的程式做測試
結果連Timer的中斷都無法正常進入
中斷的Flag bit 也都沒有反應
可以請各位板友幫幫忙嗎?
以下是測試的程式
================================
#include     <p18f4520.h>     //納入微控制器定義檔
#include     <timers.h>         //納入計時器函式庫定義檔

// 結構位元定義
#pragma config    OSC=HS, BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF 

#define TMR1_VAL     65536-16384        // Timer1 設定為 500ms 中斷一次 

//宣告函式原型
void Init_TMR1(void);
void timer1_isr (void);

//宣告並安排中斷執行程式記憶體位置
#pragma code low_vector=0x18
void low_interrupt (void)
{
_asm GOTO timer1_isr _endasm
}
#pragma code

#pragma interruptlow timer1_isr

void timer1_isr (void)
{
    
PIR1bits.TMR1IF 0;    // 清除中斷旗標
    
WriteTimer1(TMR1_VAL);    // 當將計數器觸發次數歸零寫入預設值
    
PORTD++;                // 遞加PORTD
}

void main (void) {
    
    
PORTD 0x00;            // 將PORTD清除關閉LED
    
TRISD 0;                 // 將TRISD設為0,PORTD設定為輸出

    
Init_TMR1();            // 初始化設定Timer1函式

    
INTCONbits.PEIE 1;    // 開啟周邊中斷功能
    
INTCONbits.GIE 1;        // 開啟全域中斷控制

    
while (1);                 // 無窮迴圈
}

void Init_TMR1 (void){
    
    
OpenTimer1TIMER_INT_ON &        // 使用C18編譯器timer函式庫
                
T1_16BIT_RW &        // 初始化設定Timer1
                
T1_SOURCE_EXT &        // 並開啟TIMER1中斷功能(PIE1bits.TMR1IE=1)
                
T1_PS_1_1 &
                
T1_OSC1EN_ON &
                
T1_SYNC_EXT_ON );
    
WriteTimer1(TMR1_VAL);            // 寫入預設值    
    
PIR1bits.TMR1IF 0;            // 清除中斷旗標

}

發表於: 2009/9/16 22:36

Edited by Ryang on 2009年09月17日 10:40:35
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


PIC18的SPI進不了中斷的問題
#1
初級會員
初級會員


查看用戶資訊
最近在學習利用SPI做dsPIC33F 與PIC18之間做資料傳輸

我參考了下載中心中有一份用兩塊dsPIC30F

一塊當MASER 一塊當SLAVE把自己模擬成EEPROM

中間利用SPI做資料的儲存與存取的範例程式

我把MASTER的程式改成dsPIC33F可用的

再把SLAVE的程式改成PIC18可用的

但在測試過程中

MASTER感覺是正常運作的

但SLAVE端都沒有收到任何資料

也不會進SPI的中斷

可否請幫忙看看程式中的中斷設定是否正確

謝謝

Attach file:


Link only for registered users

發表於: 2009/9/16 17: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... ]

教育訓練中心

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