hi-tech + 16f877有沒有可現成使用透過spi的mcp2510函式可用?
|
||||
---|---|---|---|---|
資深會員
|
我知道ccs用在16系列的can2510函式有,
c18有用在18上的內建can2510函式庫 但hi-tech則沒有找到,不知道有人知道嗎?
發表於: 2005/2/23 13:46
|
|||
|
Re: 舊型can controller mcp2510可以配18f的cpu嗎?
|
||||
---|---|---|---|---|
資深會員
|
我用這塊pic的實驗板子
用原16f877+mcp2510和mcp2515皆ok 換成18f458 + mcp2515則mcp2515振盪會不正確 18f458 + mcp2510則看起來振盪正確, 但mcp2510都不正確動作 不知道為什麼? 感覺是18和mcp2510有點不太適應
發表於: 2005/2/23 13:42
|
|||
|
Re: 舊型can controller mcp2510可以配18f的cpu嗎?
|
||||
---|---|---|---|---|
資深會員
|
我需要兩個不同速度的can,所以除了18自己的can之外,需要再一個外接的mcp2510 之前用18f458配+mcp2515用c18去寫是ok的, 用pic evm super201實驗板上的16f877+mcp2510用ccs去寫也可以用 可是把實驗板上的16f877換掉18f458,其餘皆不變仍用mcp2510,再加上c18去寫就無法正常動作 c18的函式庫我改過了,把chip select的腳位換了(量過了,確定cs有換腳) 結果是initialization時是通過的,但之後切換can mode都不成, 因為用函式去讀現在can的mode都是192,測試傳送資料也不成功\r 程式初始化是套用c18的函式庫如下: while (1) { // Initialized CAN2515 and SPI ,related pin will be set by the library including RC5 RC3 RC2 uc_temp = CAN2510Init( CAN2510_RESET & CAN2510_RXB0_STDMSG & CAN2510_RXB1_STDMSG & CAN2510_RXB0_NOROLL & CAN2510_RX1BF_OFF & CAN2510_RX0BF_OFF & CAN2510_TX2_GPIN & CAN2510_TX1_GPIN & CAN2510_TX0_GPIN & CAN2510_REQ_CONFIG & CAN2510_CLKOUT_OFF, CAN2510_BRG_8x & CAN2510_SJW_1TQ & CAN2510_PH2SEG_3TQ & CAN2510_PH1SEG_3TQ & CAN2510_PROPSEG_1TQ & CAN2510_PH2SOURCE_PH2 & CAN2510_SAMPLE_1x & CAN2510_RX_FILTER, CAN2510_NONE_EN, CAN2510_SPI_FOSC4, CAN2510_SPI_MODE00, CAN2510_SPI_SMPMID ); // Initialized Sucessful if ( uc_temp == 0 ) { break; } } CAN2510SetMode( CAN2510_MODE_LISTEN ); // Set 125K CAN controller for operation 不解為什麼不成,那位高手有用18x的pic同樣用在這實驗板上可以的?借我看一下程式 我懷疑是不是18x和mcp2510有什麼不相容的地方. 另外我查了一下文件,發現mcp2510和mcp2515不是完全相同,那c18的can2510函式是否兩者通用? 不相同的地方這個函式是如何處理的?
發表於: 2005/2/21 10:26
|
|||
|
舊型can controller mcp2510可以配18f的cpu嗎?
|
||||
---|---|---|---|---|
資深會員
|
我把一塊pic出的實驗板上的16fxx換成18f458
我比過datasheet,兩個腳位是相同的 主要是想用c18來寫程式測它的can功能,可是一直不成功\r 不知道和mcp2510會有關係嗎? 因為我之前用的是mcp2515(不同板子)測試都正確 我看了一下,mcp2510和mcp2515只有spi速度上有點差別 不知道這會不會影響?
發表於: 2005/2/17 18:45
|
|||
|
Re: 如何重新編譯c18的函式庫?
|
||||
---|---|---|---|---|
資深會員
|
經過我再次查看,我認為c18提供的source有問題
可否請站長再確認 因為在canenabl.h中define了 #define Port C // PORT used PORTC (use A, B, C, D, ...) #define Pin 0 // Pin used RC2 可是這兩個常數在canenabl.c完全沒有用到 我看到的程式碼是這樣 LATname(C) &= ~( 1 << 2 ); // Force selected pin output latch low, others unchanged TRISname(C) &= ~( 1 << 2 ); // Make selected pin an output 己經把port寫死為c,而pin的位移也寫死成2 再怎麼改h檔根本沒有用.... 可是我把程式改成(其中pin是define成0) LATname(C) &= ~( 1 << Pin ); // Force selected pin output latch low, others unchanged TRISname(C) &= ~( 1 << Pin ); // Make selected pin an output 編譯時會有warning message,好像是警告shift沒用 但是最後程式跑起來還是不正確 可否請站長確認,到底怎樣用才會對,我確信直接改h檔一定不行
發表於: 2005/2/17 11:08
|
|||
|
Re: 如何重新編譯c18的函式庫?
|
||||
---|---|---|---|---|
資深會員
|
請問用demo版的c18可以做recompile的動作嗎?
我執行了一下其batch的recompile 發現裏面用了mcc18這個程式 但我的目錄裏面沒有這個程式,所以我猜是c18demo 改BATCH檔之後 可以用batch檔重編,可是編好結果好像都還是使用原來的 PORTC腳位 不知道板主有沒有試過重編之後是否真的跑的正確 還是除了CANENABLE.H之外還有其它地方要修改 因為我看文件上是說要改CAN_ENABLE和CAN_DISABLE 兩個FUNCTION,但這兩個FUNCTION好像沒有什麼要改的地方啊
發表於: 2005/2/15 21:25
|
|||
|
Re: 如何重新編譯c18的函式庫?
|
||||
---|---|---|---|---|
資深會員
|
你好,根據文件上的記載,若是/CS接腳
要從預設的RC2換成其它腳位,要改H檔,再重新編譯 上面沒有寫什麼檔要修改,但根據我看SRC的結論是要改 CANenabl.h, 把原來的程式嗎改換下面兩行,換成portc0 #define Port C #define pin 0 而CAN2510.H我則找不到需要修改的地方 我是把src\pmc\can2510\18cxx的c和h檔都copy到project 而其它的h檔如can2510.h好像沒有動到,所以我還用原來的 雖然編譯是ok的,但是實際跑時它還是用預設的RC2在做CS 不知道我那裏用錯了,請指點一二
發表於: 2005/2/15 15:49
|
|||
|
如何重新編譯c18的函式庫?
|
||||
---|---|---|---|---|
資深會員
|
在使用c18的 can2510的library時有限定其CS腳位
就文件上所寫若要用其它腳位要修改一個點H檔 並重新編譯為新的函式庫 我知道要修改那,但不知道如何重新編譯其內建的LIBRARY 可否請高手指點一二
發表於: 2005/2/14 20:34
|
|||
|
Re: 請問那有多組語檔的使用資料?
|
||||
---|---|---|---|---|
資深會員
|
抱歉,原來有一個relocatable的講義檔
沒有注意到....不過若有更詳細有規則的教材,觀迎指點 不過翻了一下,裏面好像沒有提到a16這個副檔名 不知道那位可以解釋一下,a16和一般的asm有何差別? 是在使用前要先自行定義cblock的位置嗎?
發表於: 2005/2/1 20:22
|
|||
|