Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
新會員
|
一切謎底都解開了
感謝 pic5566 的熱情與解答 小弟我感激不盡
發表於: 2005/8/9 19:10
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
高級會員
|
Re: 想請問I2C應用範例
版主~各位大大~ 小弟我想把上述的程式改成C18可以compiler的程式 不過在"解讀"上述ccs的程式時遇到一些問題= =" 問題如下: 問題一 函式input()的作用是做什麼用的? 就是c18 的 if (Port==1 or 0) CCS 比較C化他都幫使用者寫好函數但是他也是笨笨的不管怎樣他都會翻出比較多的CODE 難道作用在於讀取腳位電位?如果是,是不是對應到C18指的PORTXbits.RXX? ans: 對 問題二 函式debug_pin()的作用是做什麼用的? ans: 由於我沒有ICE,PIC12Fxx實在太小顆了,我很窮沒錢買ICE,我只有一台三十幾萬的是波器而已,所以我會利用一隻IO腳輸出信號用示波器量測看輸出幾個脈波就可以知道程式跑到那裡了,這是一種DEBUG技巧,有時你無法停下MCU,所以就必須藉助這一個方法來做。 乾脆我再送你一個我的DEBUG(); 這一個我是用C18寫的希望你好好運用一下窮人DEBUG法說不定你會用到 使用方法: 例如你要輸出一個脈波 debug_p4(1); ----+ +-------- | | +--+ 就會在示波器顯示這樣的波形 void debug_p4(uchar i) { switch(i) { case 10: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 9: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 8: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 7: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 6: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 5: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 4: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 3: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 2: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 1: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; default: break; } } 我再示範一下 ex: switch(step) { case 1: { debug_p4(1); break;} case 2: { debug_p4(2);break} . . } 問題三 delay_us(2)--->延遲2us?? ans--->yes這也是CCS C compiler所提供的函數 delay_ms(100)--->延遲100ms?? ans -->yes這也是CCS C compiler所提供的函數 問題四 BUFFER1 = IIC_RECEIVE_BYTE(); BUFFER2 = IIC_RECEIVE_BYTE(); PORTDATA = IIC_RECEIVE_BYTE(); input(P_INTERRUPT); 問題四 C code 中提到BURRER1、BURRER2、 PORTDATA、P_INTERRUPT分別指的是什麼?? 透過IIC_RECEIVE_BYTE()向裝置讀資料進來然後放在記憶體備用因為我需要讀兩筆資料所以開兩個bytes的記憶體 input(P_INTERRUPT); 將IO port設定為輸入端,因為我這一個程式是用來控制MICROCHIP公司的MCP23016 IO PORTS EXPANDER 所以他有一隻腳是在通知io port有輸入 我是原作者啦~~~~不好意思喔害你讀的這麼辛苦 版主還有其他大大可以幫忙解答嗎?? 小弟我感激不盡!!!
發表於: 2005/8/9 18:21
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
新會員
|
版主~各位大大~
小弟我想把上述的程式改成C18可以compiler的程式 不過在"解讀"上述ccs的程式時遇到一些問題= =" 問題如下: 問題一 函式input()的作用是做什麼用的? 難道作用在於讀取腳位電位?如果是,是不是對應到C18指的PORTXbits.RXX? 問題二 函式debug_pin()的作用是做什麼用的? 問題三 delay_us(2)--->延遲2us?? delay_ms(100)--->延遲100ms?? 問題四 BUFFER1 = IIC_RECEIVE_BYTE(); BUFFER2 = IIC_RECEIVE_BYTE(); PORTDATA = IIC_RECEIVE_BYTE(); input(P_INTERRUPT); 問題四 C code 中提到BURRER1、BURRER2、 PORTDATA、P_INTERRUPT分別指的是什麼?? 版主還有其他大大可以幫忙解答嗎?? 小弟我感激不盡!!!
發表於: 2005/8/9 17:48
|
|||
|
Re: rs232 接收值?
|
||||
---|---|---|---|---|
高級會員
|
謝謝您的回應~~~~
發表於: 2005/8/9 17:47
|
|||
|
Re: 請問一下C18函式庫
|
||||
---|---|---|---|---|
初級會員
|
謝了各位!
發表於: 2005/8/9 17:38
|
|||
|
Re: 請問內部RC四倍頻怎麼弄?
|
||||
---|---|---|---|---|
資深會員
|
我試過了
組態設定改成 HS-PLL也是不行 我要做的是 使用內部RC震盪器並經過4倍頻電路 把4MHz升為16MHz 不是外部輸入震盪訊號並經過內部4倍頻電路喔...
發表於: 2005/8/9 17:32
|
|||
|
Re: 請問內部RC四倍頻怎麼弄?
|
||||
---|---|---|---|---|
新會員
|
Configuration Bits 設定:
PLL 4x
發表於: 2005/8/9 17:24
|
|||
|
dsPIC I2C Slave mode 的問題
|
||||
---|---|---|---|---|
新會員
|
使用dsPIC30F2010 做為 I2C Slave:
Write Data to Slave 時: 一切正常, 但 Read Data from Slave 時: I2CSTAT 之 D_A 一直為 0 (address) ? 好像是 dsPIC30F2010 的硬體問題吧 ?? 還是軟體上有哪些 Register 必須設定 ?
發表於: 2005/8/9 16:59
|
|||
|
Re: rs232 接收值?
|
||||
---|---|---|---|---|
新會員
|
你可以宣告一個共用空間,然後在利用位元欄位即可取出,如下所示
union{ unsigned char ALL; struct{ unsigned b0:1; unsigned b1:1; unsigned b2:1; unsigned b3:1; unsigned b4:1; unsigned b5:1; unsigned b6:1; unsigned b7:1; }; }UrRxbits; 然後將UrRxbits.ALL=Rxdata,接著UrRxbits.b0即為你收到bit0的資料,以此類推即可抓出你要的資料。
發表於: 2005/8/9 16:45
|
|||
|