C18 compiler超慢
|
||||
---|---|---|---|---|
高級會員
|
我的程式只有64KBYTES COMPILER 超過3分鐘以前大概是30SEC以內現在變超慢
我有下列問題 1.我的C18 是2.4版 P4CPU RAM 256MB HD 40GB這樣的配備應該可以吧 2. 我在COMPILER時要如何停止COMPILER的動作? 3. 我無法上網DOWNLOAD C18 UPDATE版本? High security alert!!! You are not permitted to download the file "MPLAB-C18-Beta-v3_00b2.exe". URL = http://ww1.microchip.com/downloads/en ... PLAB-C18-Beta-v3_00b2.exe
發表於: 2005/9/23 12:37
|
|||
|
Re: 請問有關ICD 2的使用方法..
|
||||
---|---|---|---|---|
高級會員
|
你也可以想一下其他即時偵錯的方法
例如: 1. 設DEBUG PIN方式 2. 透過UART將資料丟到電腦 剛好我這裡有這一些方法 我是用CCS C寫的 你要參考一下嗎? 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; } } 這是你要有較好的示波緝獲邏輯分析儀比較適用 這是埋地雷法我常常用 要是你比較窮示波器很爛 那就用UART方法 void tx_command_buffer(void) { int16 ii; for (ii=0;ii<2048;ii++) { ptr=ii+&CXD3068_COMMAND_BUFFER[0]; command = *ptr; printf("\n\r BYTE: %4X COMMAND: %2X",ii,command); } index = 0; } CCS printf()很好用 你可以透過終端機看出你的狀態 但是他丟一筆資料要耗費一點時間如果不允許你可以選一適當時機再丟出來 我一般都釋放在記憶體中需要是按一下按鍵就丟出來了。
發表於: 2005/9/2 10:39
|
|||
|
Re: 請問省電模式要如何設定與控制??
|
||||
---|---|---|---|---|
高級會員
|
我喜歡做好人所以住你一把
我是用CCS 寫的 耗電大概是32UA //#include <12C508A.h> #include <12f675.h> #fuses LP,WDT,NOPROTECT, NOMCLR,NOBROWNOUT //#byte gpio = 06 //#bit P_SYNC = gpio.0 //#bit P_OUT = gpio.1 //#BIT P_DEBUG = gpio.2 //#BIT P_HZ = gpio.4 #byte gpio = 05 #bit P_OUT = gpio.0 struct { short bit0; short bit1; short bit2; short bit3; short bit4; short bit5; short bit6; }flg0; //#define GP0 PIN_A0 //#define GP1 PIN_A1 //#define GP2 PIN_A2 //#define GP3 PIN_A3 //#define GP4 PIN_A4 //#define GP5 PIN_A5 //#define P_OUT GP0 #define f_tmain flg0.bit0 #define F_HZ flg0.bit1 #DEFINE F_TIMEOUT flg0.bit2 INT8 TB_1SEC,TB_SEC,TB_MIN,TB_HOUR,T_OUT; //int16 COUNTER; #use delay(clock=32768) // 4000000) // SET DELAY CLOCK 4MHZ void POWERON_INIT() { set_tris_a(0x00); output_a(0x01); setup_counters (RTCC_INTERNAL,WDT_2304MS); // set_tris_b(0xfe); setup_wdt(WDT_2304MS); } void main() { POWERON_INIT(); // SLEEP(); while(1) { int8 i; for (i=0;i<250;i++) { // output_low(P_OUT); // OUTPUT PWM P_OUT = 0; delay_us(500); P_OUT=1; // output_high(P_OUT); delay_us(500); } // output_high(P_OUT); P_OUT = 1; restart_wdt(); sleep(); } } 當LED ON時我是用掃瞄方式還可以省很多電流消耗量 我裝一顆鈕釦電池放在我的愛車面版上假裝防盜系統至今已經過了好久還在WORK 算是蠻省電了 希望你會喜歡
發表於: 2005/8/24 10:47
|
|||
|
Re: pic16f877問題請教~棘手~
|
||||
---|---|---|---|---|
高級會員
|
你應該規劃出硬體電路
假設你的系統電壓是5V 你可以在ADC 輸入端設計一個分壓電路把5V分壓成2.5V 這軟體簡單但是你沒有說明硬體如何設計這。。。。。叫人很難幫你 請在明述你的需求或者你的狀況例如code 貼上來或許可以比較快可以幫你 例如:你是用組合語言或者C 如果是C是哪一家compiler 是hitech CCS或IAR或。。。。。。
發表於: 2005/8/24 10:39
|
|||
|
Re: 有人用c18 的c compler 開發程式嗎/
|
||||
---|---|---|---|---|
高級會員
|
我都是用C18寫的啊,應該沒問題吧
我寫的程式也蠻大的,已經量產很久了應該可以放心使用 每一家的C COMPILER如果程式架構弄不好也都很難DEBUG啊 所以。。。用了才知道啊 不然就用組合語言寫展現一下自己的技術能力。
發表於: 2005/8/15 13:31
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
高級會員
|
嗯
解開就好,有問題再問好了。
發表於: 2005/8/9 19:14
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
高級會員
|
這是針對pic12f675所寫的
所以運用在pic18fxx你要讀一下data sheet .................... ack = input(P_SDA); 005F: BSF 03.5 0060: BSF 05.5 0061: BCF 03.5 0062: CLRF 2D 0063: BTFSC 05.5 0064: INCF 2D,F 回應一下INPUT()所產生的CODE 很嚇人喔,但是保證不會出錯因為你每input()他都會幫你切BANK設輸入但是CODE真的比較多 .................... output_low(P_SCL); 0065: BSF 03.5 0066: BCF 05.4 0067: BCF 03.5 0068: BCF 05.4 output()也一樣 在C18你可以以一行就解決 這是你問的delay_us() and delay_ms() CCS C compiler所產生的CODES .................... delay_ms(250); 01B3: MOVLW FA 01B4: MOVWF 25 01B5: CALL 00A 000A: MOVLW 25 000B: MOVWF 04 000C: MOVF 00,W 000D: BTFSC 03.2 000E: GOTO 01E 000F: MOVLW 01 0010: MOVWF 21 0011: CLRF 20 0012: DECFSZ 20,F 0013: GOTO 012 0014: DECFSZ 21,F 0015: GOTO 011 0016: MOVLW 4A 0017: MOVWF 20 0018: DECFSZ 20,F 0019: GOTO 018 001A: NOP 001B: NOP 001C: DECFSZ 00,F 001D: GOTO 00F 001E: RETLW 00 總之希望對你有所幫助
發表於: 2005/8/9 19:12
|
|||
|
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: 請問一下C18函式庫
|
||||
---|---|---|---|---|
高級會員
|
這。。。。。應該沒有吧
我知道CCS 有三角函數 用MCU算這麼複雜的數學有一點。。。。 不如你幫他算一算用查表方式還比較有效率
發表於: 2005/8/9 12:29
|
|||
|