Re: IC4011+MCP4921(D/A)
|
||||
---|---|---|---|---|
中級會員
|
你好!
因為你已將 /CS 連接 VSS, 所以應該將 /LDAC 以 I/O 控制. 但是, 建議你將 /LDAC 連接 VSS, 然後以 I/O 控制 CS, 或是, 兩者皆以 I/O 控制, 這樣更符合資料手冊的敘述. 跟據資料手冊的敘述, /CS 轉為 LOW 時開始資料的傳送, 所以若你的 /CS 永遠為 LOW, 可能會因為 /CS 無法再次 HIGH ---> LOW 而導致無法傳入新的資料數據. 最後, MCP 為一個 從裝置, SCK 與 SDI 為 DSP30F4011 控制狀態, 既然你已經說到了 SCK, SDI 無訊號狀態, 那麼表示你的程式很可能是有問題的, 請先再檢查看看吧!
發表於: 2008/7/6 13:17
|
|||
|
Re: 請問這個名詞 psects (program sections or blocks) 的意思是什麼?
|
||||
---|---|---|---|---|
中級會員
|
你好!
引用 HI-TECH 的官網 FAQs 內容, 如下: I get the error: Cant find XXX words/bytes in psect XXX > I get the error: Can't find XXX words/bytes in psect XXX > What does this mean?? This error message simply means that the linker could not find enough space in ROM or RAM to fit your program. If you are using the PICC compiler and the error says that it can't find space in segment CODE, then this can mean one of two things. Either your program is simply too big to fit into the available ROM space of the processor you are compiling for; OR You have a large function which won't fit into a single ROM page. There is a restriction that functions must be able to fit within a ROM page. To overcome this, split the large function into two or more smaller functions. You can determine which function is causing the problem by generating an assembler listing file (-asmlist), and locating the psect that was given in the error message. If the error message says that it was segment BANKx that it couldn't find space, then this means you have run out of RAM in that particular bank. FAQ number 29 has details of this. ---------------------------------------------------------------------- 大致上是說: 很單純的就是 linker 找不出足夠的空間以符合你程式的使用, 這個空間呢! 或許是 ROM 區域 或許是 RAM 區域. 如果, 編譯器所顯示的訊息為 ........ segment CODE. 這表示你的程式目的碼有可能超過了總程式空間, 或是你其中有一個副程式太龐大超過了一個程式頁的空間. 如果, 編譯器所顯示的訊息為 ........ segment BANKx. 那就表示 BANKx 空間已經被使用完了不夠用. 若是程式空間不夠, 可能需要考慮改用程式空間較大的 IC, 刪減程式, 精簡程式等等... 若是 BANKx 不敷使用, 可以使用 bank1, bank2, bank3 指令 指定到尚還有 RAM 空間的 BANK 中, 如果全部空間還不夠, 那就需要考慮改用 RAM 較多的 IC 了.
發表於: 2008/7/6 12:34
|
|||
|
Re: 困惑uart
|
||||
---|---|---|---|---|
中級會員
|
你好!
如果你是使用了 75176 或 MAX485 來當作 rs485 的收發介面時, 分別控制了 DE 與 /RE 接腳時就有可能出現這樣的情況. 例如 /RE 連接至 GND , 只控制 DE 是否對 RS485 BUS 發送數據. 這樣就會出現接收端也將自己發送的數據從 RS485 BUS 上接收回來. ---------------------------------------------------------------------- 可以將 DE 與/RE 共同連接在一起控制, 然後在 D 連接 1K ~ 10K 電阻到 VCC 就可以了. (連接 10K 到 VCC 是為了確保 /RE = 1 時的準位, 因為此時 D 為 Hi-Z)
發表於: 2008/6/7 8:49
|
|||
|
Re: 錯誤的訊息
|
||||
---|---|---|---|---|
中級會員
|
你好!
這個訊息是指你安裝在電腦上的 c30 編譯程式 License 已經到期了. 一直到目前為止, c30 編譯程式即使 License 到期也不會無法使用. 只是除去了最佳化功能, 所以極大部分的情況下是不會導致編譯後無法使用的. 當然, 如果你想使用正式版的 c30, 那麼購買正式版的 c30 軟體安裝使用是最好的了. ---------------------------------------------------------------------- 如果你不 care 麻煩, 在其它沒有安裝過 c30 的電腦上安裝. 或是將目前使用的電腦重新安裝windows作業系統, 再安裝 mplab 與 c30 也能再次有 c30 試用的 60 天 License 期限.
發表於: 2008/6/7 8:28
|
|||
|
Re: PIC16F690 軟體模擬I2C read問題
|
||||
---|---|---|---|---|
中級會員
|
使用 PIC16F690 的 PORTB I/O 來操作啊!
那你要注意一下是否有使用到 RB4 或 RB5, 因為 RB4 / RB5 還具有 AN10 / AN11 的功能在. 需要將 ANSELH 的 Bit2(ANS10) / Bit3 (ANS11) 設為 0 時 digital 功能才會正常. -------------------------------------------------------------------- 另外, 一點點建議如下...
BITIN
Good luck !
發表於: 2008/5/10 23:00
|
|||
|
Re: DsPic30F2010與18F458的RS232通訊 <- 暈倒
|
||||
---|---|---|---|---|
中級會員
|
從程式看來, 可以發現您設定了 uart 的 buff 在 3/4 滿的時候才中斷.
這樣的話你所敘述傳了3個 byte 後才有回應的狀況可能其實是正確的現象. 建議您以下修改後再試一下...
void Init_UART1(unsigned BaudRateValue)
發表於: 2008/5/10 11:30
|
|||
|
Re: PIC16F877 DEBUG問題
|
||||
---|---|---|---|---|
中級會員
|
的確是因為 PCLATH 值不正確所導致的.
當你要使用 ADDWF PCL,F 這樣的查表方式時, PCLATH 的內容值需要自行填入表格位址 高位元組的部分, 不能使用 CALL, GOTO 所搭配的 PAGESEL, 造成的結果會不同的. 依你的程式, 表格索引來源值是 DPTR , 我修改了一下提供你參考: ----------------------------------------------------------------------
ORG 100H
發表於: 2008/5/5 23:21
|
|||
|
Re: 请教BANK页选择
|
||||
---|---|---|---|---|
中級會員
|
程式編譯中會出現2種類型的訊息,
一個是 Error[n], 會使編譯出錯, 無法產生目的碼. 一個是 Message[n], 只是提示, 還是會產生目的碼. (如果都只有 Message 這種, 請注意最後應有 BUILD SUCCEEDED: ....... 表示有產生目的碼) 建議你還是要上下捲動一下檢視所有的訊息, 以避免程式出錯! ------------------------------------------------------------------------------------------------------- 你所提出的 Message[302] D:\DCCJSB\FILE5\NEWFILE_B.ASM 337 : Register in operand not in bank 0. Ensure that bank bits are correct. 它表示-> 你所操作的暫存器不在 bank 0 中, 請確認你已經設好了 bank bit ------------------------------------------------------------------------------------------------------ 如果你已經確定程式的動作結果是正確的了. 而想除去這個提示訊息. 可以在程式開始的地方加入如下的指令來除去它. (程式開始)
errorlevel -302 ; 不出現 Message[302] 這一個提示訊息
發表於: 2008/5/1 21:58
|
|||
|
Re: c18中斷副程式使用除法運算
|
||||
---|---|---|---|---|
中級會員
|
那麼以下供你參考, 取代 uns16_spd=46083/sp_count;
(事實上就是無號16 bit 除法的計算展開, 避免主程式與中斷都有使用除法的一些問題產生) (使用的變數宣告為全域好了...)
union { unsigned long _DIV_long;
----------------------------------------------------------- 最後, 請注意! 不管是使用 c 語言的除法 或 自行構成的除法, 都會蠻有一段執行時間的.(因為 pic18 是 8 bit MCU 的關係) 請注意是否會對你的程式造成影響.
發表於: 2008/4/30 17:04
|
|||
|