Re: PIC18F27Q43 client mode SDO 輸出訊號異常問題
|
||||
---|---|---|---|---|
版主
|
剛看了 PIC18F27Q43 的 Data Sheet 裡的 Page 16 有關對 SDO1 腳位的使用說明。
SCK1 --> RC3 (設定成輸入腳功能) SDI1 --> RC4 (設定成輸入腳功能) SDO1 --> RC0 ?? SDO1 的輸出腳須經由 PPS 選定腳位並設定成輸出功能,這點在程式裡沒有看到。請檢查一下 SPI1 的腳位設定及輸出入功能。 Data Sheet 的註記: 2. All output signals shown in this row are PPS remappable. These signals may be mapped to output onto one of several PORTx pin options as described in the peripheral output selection table.
發表於: 2021/4/6 11:17
|
|||
|
Re: PIC18F27Q43 client mode SDO 輸出訊號異常問題
|
||||
---|---|---|---|---|
新會員
|
Hi Ryang
RC0 & RC2設定漏掉沒有貼過來,設定為: RC0PPS = 0x32; //RC0->SPI1:SDO1; SPI1SSPPS = 0x12; //RC2->SPI1:SS1; 在main底下的INTERRUPT_GlobalInterruptEnable();有打開 void SPI1_Initialize(void) { SPI1CON0 = 0x00; SPI1CON1 = 0x04; SPI1CON2 = 0x07; SPI1CLK = 0x01; SPI1BAUD = 0x00; TRISCbits.TRISC3 = 1; PIE3bits.SPI1RXIE = 1; SPI1_SetRxInterruptHandler(SPI1_DefaultRxHandler); } 有檢查到沒有資料回傳原因是沒有進入SPI1_DefaultRxHandler(),在SPI1_DefaultRxHandler()內放IO Toggle,發現並沒有動作。想請問目前這樣的設定值是否仍有錯誤造成不會進入SPI1_DefaultRxHandler()。謝謝。
發表於: 2021/4/6 13:52
|
|||
|
Re: PIC18F27Q43 client mode SDO 輸出訊號異常問題
|
||||
---|---|---|---|---|
版主
|
PIC18F 有兩種中斷模式: "開啟中斷優先權的設定: RCONbits.IPEN=1;"
1. PIC18F 標準中斷方式,有分高優先權及低優先權中斷。除了開啟相對應的中斷外,還需要設定該中斷的 IP 位元為高優先權 (=1) 或低優先權(=0)。其說明如下: // If using interrupts in PIC18 High/Low Priority Mode you need to enable the Global High and Low Interrupts // Use the following macros to: // Enable high priority global interrupts //INTERRUPT_GlobalInterruptHighEnable(); // Enable low priority global interrupts. //INTERRUPT_GlobalInterruptLowEnable(); 2. 如果是要相容於 PIC16F 的中斷模式則須設定 "RCONbits.IPEN=0" 這時中斷會有一個 Global Interrupt Enable bit (GIE=1) 及周邊中斷控制位元 (PEIE=1) ,所以有兩個位元要設定,參考底下方塊圖: // Enable the Global Interrupts INTERRUPT_GlobalInterruptEnable(); 移除註解 // Enable the Peripheral Interrupts INTERRUPT_PeripheralInterruptEnable(); 移除註解 請將程式裡的 PEIE 註解移除就可以產生中斷了。
發表於: 2021/4/6 14:43
|
|||
|