Re: pic24F SPI 疑問
|
||||
---|---|---|---|---|
版主
|
其實在寫周邊的程式前,可以到 Microchip 先找一下,我想大部分的 Example code 都可以support。 例如你要找SPI 這裡就有兩個範例程式 :
dsPIC Code example : http://www.microchip.com/stellent/idc ... e=SS_GET_PAGE&nodeId=1408 dsPIC30F Peripheral Module : http://www.microchip.com.tw/modules/mydownloads/
發表於: 2007/7/27 9:50
|
|||
|
Re: pic24F SPI 疑問
|
||||
---|---|---|---|---|
資深會員
|
C:\Program Files\Microchip\MPLAB C30\docs\periph_lib
有c30 的使用說明 PIC24F SPI Library Help File.htm 這裏有祥細的 spi 範例
發表於: 2007/7/26 9:30
|
|||
|
pic24F SPI 疑問
|
||||
---|---|---|---|---|
資深會員
|
搞了超久,終於用出來了
PIC24F的範例超少,再加上本身第一次用C30 害我用的好痛苦阿!最後終於測驗成功了 SPI 主動模式 8BIT資料輸出 #include <p24Fxxxx.h> #include <spi.h> void PPS_Inital(void); void SPI_Inital(void); int main (void) { unsigned int i ; SPI_Inital(); PPS_Inital(); for (i=0;i<=100;i++) { WriteSPI1(0xaaaa); while(SPI1STATbits.SPITBF); } } void SPI_Inital(void) { unsigned int SPI1CON1_Value; unsigned int SPI1STAT_Value; unsigned int SPI1CON2_Value; SPI1CON1_Value= ENABLE_SCK_PIN | ENABLE_SDO_PIN | SPI_MODE8_ON | SPI_SMP_OFF | SPI_CKE_OFF | SLAVE_ENABLE_OFF | CLK_POL_ACTIVE_LOW | MASTER_ENABLE_ON | SEC_PRESCAL_1_1 | PRI_PRESCAL_1_1; SPI1STAT_Value= SPI_ENABLE | SPI_IDLE_CON | SPI_RX_OVFLOW_CLR; SPI1CON2_Value= 0X0000; OpenSPI1(SPI1CON1_Value,SPI1CON2_Value,SPI1STAT_Value); } void PPS_Inital(void) { _TRISB6=0;//SCK Out _TRISB7=0;//SDO Out __builtin_write_OSCCONL(OSCCON & 0xbf); asm volatile ( "push w1 \n" "push w2 \n" "push w3 \n" "mov #OSCCON, w1 \n" "mov #0x46, w2 \n" "mov #0x57, w3 \n" "mov.b w2, [w1] \n" "mov.b w3, [w1] \n" "bclr OSCCON, #6 \n" "pop w3 \n" "pop w2 \n" "pop w1"); _RP6R=7; _RP7R=8; __builtin_write_OSCCONL(OSCCON | 0x40); asm volatile ( "push w1 \n" "push w2 \n" "push w3 \n" "mov #OSCCON, w1 \n" "mov #0x46, w2 \n" "mov #0x57, w3 \n" "mov.b w2, [w1] \n" "mov.b w3, [w1] \n" "bset OSCCON, #6 \n" "pop w3 \n" "pop w2 \n" "pop w1"); } =================================== 雖然我測驗出來了,但還有些疑問 我想請問 "__builtin_write_OSCCONL(OSCCON & 0xbf);" 這行是用來做什麼?看不太懂耶! 還有關於PPS的疑問,當我SPI傳輸完成後,我想把RB6與RB7 變成普通的IO,可以利用PPS功能完成嗎? 如果可以的話,要這樣用阿?該不會又要CALL一次PPS_Inital 並把_RP6R=0;_RP7R=0;
發表於: 2007/7/25 22:33
|
|||
|