- 使用ICD2的話,Compiler要勾選”Compile for MPLAB ICD”,這樣download到target後,program才會正確。
- Compile完後,選”Debugger---Program”,ICD2會將code 燒到PIC裡。
- MPLAB不會自動在”main”設breakpoint,所以break point要自己先設好。
- 選”Debugger---Run",程式執行,停在breakpoint。
- 選”View---Watch",出現Watch視窗,上面右方”Add Symbole”處選變數。因為是以address為update方式,所以修改過code後,要將所有variable 刪除掉,重新加入。
- MPLAB中選的Device Type會轉為Define pass給compiler。所以任何Type的cpu都只要include pic.h就可以。
- Configutation bit也可以由program中指定(Alice早就這樣使用)。語法是__CONFIG(x)。其中的x參考相關cpu的header檔,如 pic1687x.h最後一個section就有定義osc, watchdog, powerup time..
- __CONFIG( )語法可以同時決定很多Option(ref .h file),但是各option間要用AND。如 __CONFIG( WDTDIS & HS & UNPORTECT)。
- Special Register的名稱定義在pic.h中,所以可以直接拿來用,不用另外宣告。例如:TRISB = 0x00; PORTB = 0xFF;
- 內含assembly code的語法是#asm, #endasm
#asm
rlf _var,f
nop
#endasm
- Oscillator Types: range 200k~20M。一般來說,4M以下用XT,以上(含)用HS。
- I/O Port: 要在port direction reg (TRISX)設定pin是ouput/input(1是input)。在PORTX寫入資料則update到設為output的pin腳。
- I/O Port通常和其他周邊共用。所以除了program為I/O外,enable其他周邊時,I/O port會做特殊用途。 如PortA的0-3當AI用。但是同時也受到TRISA設定的影響,所以當作AI用時,除了要將AD enable外,對應的TRISA bit也要設為1 (input, Hi-Z)。
- PORTA 作IO Port用時,Pin的設置除了TRISA外,還要設定ADCON1。將ADCON1的PCFG0-PCFG3 設成正確的值。否則PortA的IO動作會不正確。
- 設定ADCON1,將AD pin腳設定為Analog input。
- 設定ADCON0,選擇現在要sample的Analog input腳。 clock rate。 開啟AD module。
- 等一段時間,讓pin腳電位達到sample 的電壓。reference manual 寫20uS。
- 設定ADCON0的GO/DONE bit。開始作convertion。
- 等GO/DONE clear,代表convertion完成。
- 讀取ADRESH: ADRESL。
使用SPI Mode時,各Pin腳的I/O狀態要設定正確。I/O的狀態依照SPI 是Master或是Slave Mode而不同。
Master Mode:
TRISC
SCK(RC3):outputSSPCON
SDI(RC4) : input
SDO(RC5):output
Master ModeEnable Serial Port
Clock Polarity (CLK)
Data input Sample Phase
Data output Clock Edge
Clock Edge
SSPEN = 1.
所以設定SSPCON時,要先將SSPEN=0,設完後再設1
沒有留言:
張貼留言