星期一, 8月 29, 2005

ICD2 與PIC 使用

繼上次沒設Device Type後...
  1. 使用ICD2的話,Compiler要勾選”Compile for MPLAB ICD”,這樣download到target後,program才會正確。
  2. piccompileforicd
  3. Compile完後,選”Debugger---Program”,ICD2會將code 燒到PIC裡。
  4. MPLAB不會自動在”main”設breakpoint,所以break point要自己先設好。
  5. 選”Debugger---Run",程式執行,停在breakpoint。
  6. 選”View---Watch",出現Watch視窗,上面右方”Add Symbole”處選變數。因為是以address為update方式,所以修改過code後,要將所有variable 刪除掉,重新加入。
Programming
  1. MPLAB中選的Device Type會轉為Define pass給compiler。所以任何Type的cpu都只要include pic.h就可以。
  2. Configutation bit也可以由program中指定(Alice早就這樣使用)。語法是__CONFIG(x)。其中的x參考相關cpu的header檔,如 pic1687x.h最後一個section就有定義osc, watchdog, powerup time..
  3. __CONFIG( )語法可以同時決定很多Option(ref .h file),但是各option間要用AND。如 __CONFIG( WDTDIS & HS & UNPORTECT)。
  4. Special Register的名稱定義在pic.h中,所以可以直接拿來用,不用另外宣告。例如:TRISB = 0x00; PORTB = 0xFF;
  5. 內含assembly code的語法是#asm, #endasm

    #asm
    rlf _var,f
    nop
    #endasm

PIC Chip
  1. Oscillator Types: range 200k~20M。一般來說,4M以下用XT,以上(含)用HS。picosctype
  2. I/O Port: 要在port direction reg (TRISX)設定pin是ouput/input(1是input)。在PORTX寫入資料則update到設為output的pin腳。
  3. I/O Port通常和其他周邊共用。所以除了program為I/O外,enable其他周邊時,I/O port會做特殊用途。 如PortA的0-3當AI用。但是同時也受到TRISA設定的影響,所以當作AI用時,除了要將AD enable外,對應的TRISA bit也要設為1 (input, Hi-Z)。
  4. PORTA 作IO Port用時,Pin的設置除了TRISA外,還要設定ADCON1。將ADCON1的PCFG0-PCFG3 設成正確的值。否則PortA的IO動作會不正確。
AD Convertion
  1. 設定ADCON1,將AD pin腳設定為Analog input。
  2. 設定ADCON0,選擇現在要sample的Analog input腳。 clock rate。 開啟AD module。
  3. 等一段時間,讓pin腳電位達到sample 的電壓。reference manual 寫20uS。
  4. 設定ADCON0的GO/DONE bit。開始作convertion。
  5. 等GO/DONE clear,代表convertion完成。
  6. 讀取ADRESH: ADRESL。
SPI
使用SPI Mode時,各Pin腳的I/O狀態要設定正確。I/O的狀態依照SPI 是Master或是Slave Mode而不同。
Master Mode:
TRISC
SCK(RC3):output
SDI(RC4) : input
SDO(RC5):output
SSPCON
Master Mode
Clock Polarity (CLK)
Data input Sample Phase
Data output Clock Edge
Clock Edge
Enable Serial Port
SSPEN = 1.
所以設定SSPCON時,要先將SSPEN=0,設完後再設1

沒有留言:

網誌存檔