PIC18 燒錄器

壹、PIC18 燒錄器

PIC程式的燒寫並不一定要用到ICD2,ICD3,或REAL ICE。我們可以 DIY 一個使用 PRINTER PORT 的 PIC18 PROGRAMER 。PIC18 燒寫的方式是藉由ICSP的介面燒寫,ICSP的介面要用到三根信號線 MCLR、PGC,和 PGD。其中 MCLR 是燒寫指示信號,PGC 是CLOCK,PGD 是 DATA。

有了這樣的工具後,就連 PIC 的 ICE 都不用買了,只要用 LPT PORT 和 COM PORT,我們就可以燒寫 BOOTLOADER 和應用程式了。甚至COM PORT 也不需要了,只要有 LPT PORT 就好了。


貳、實作 PIC18 燒錄器

實做一個PIC18F的燒錄器,我們要用到 3 條信號線,MCLR,PGC,PGD。如果PGM用不到,不需要接。如PIC18F87J10就沒有PGM這條信號腳位。
線路圖如下:

pic18f87j10燒錄器

線路說明:
在 LPT PORT 中,D0~D7 是雙向埠,ACK 是輸入腳。我們設定 DATA PORT 為輸出,所以D0~D3 都是輸出,不會做輸入使用。因為燒錄器不僅要可以燒寫程式碼,也要可以讀取程式碼,所以需要有一支有輸入功能的腳位,ACK。因為 D0 一定是輸出,PGD 可以輸出和輸入,所以必須要有一支電阻做限流和保護。保護 PGD 輸出的信號不會被 D0 破壞,並且可以準確的傳到 ACK 腳位上,被 ACK 讀取。

當我們把線路接好後,接下來就是要寫程式碼,把ICSP的通道打通,以進行讀寫動作。
PIC18 燒錄的說明取自:

pic18f87j10燒錄器

ICSP 燒寫程式的流程包括,
一、進入 PROGRAMING MODE
二、清除所有記憶體資料
三、燒寫程式碼
四、驗證程式碼
五、離開 PROGRAMING MODE

pic18f87j10燒錄器

一、進入 PROGRAMING MODE
如下面時序圖所述,MCLR=0 後 輸入 SIGNATURE 0x4D434850 "MCHP",之後再把 MCLR拉起,然後PIC18F87J10 就進入 ICSP 的 PROGRAMING MODE。

pic18f87j10燒錄器

進入 PROGRAMING MODE 之後,就要使用 ICSP 指令格式,下達ICSP指令。
ICSP的指令格式的範例如下:

pic18f87j10燒錄器
pic18f87j10燒錄器

二、清除所有記憶體資料

pic18f87j10燒錄器
pic18f87j10燒錄器
pic18f87j10燒錄器

三、燒寫程式碼

因為PIC18F87J10的 PROGRAM BUFFER 是 64 Bytes,所以一次最多只能寫入6 Bytes ,之後就要下達寫入指令,讓ICSP把資料寫到 PIC18F 的 FLASH 中。也因為每次的寫入都是 2 Bytes,所以要寫 32 次,詳細的時序可以參考下面的時序圖。

pic18f87j10燒錄器
pic18f87j10燒錄器
pic18f87j10燒錄器

四、驗證程式碼

這一步我沒有做。

五、離開 PROGRAMING MODE

離開ICSP 的 PROGRAMING MODE 的方法就是送出下面的時序,之後,PIC18F87J10 就會執行剛剛燒錄的程式碼。

pic18f87j10燒錄器

參、成果

下面的板子有 LPT PORT 接在上面,LPT PORT 已經按照上述的電路接法接好。

pic18f87j10單版 pic18f87j10單版

因為在WINDOWS下應用程式不可以直接使用底層硬體,必須先安裝 giveio.sys。
關於 giveio.sys可以到網路上面找。會有兩個檔案 giveio.sys 和 giveio.inf,先把 giveio.sys 拷貝到 c:\windows\system32\drivers ,再到控制台使用 "加入新的硬體"的方式安裝giveio.inf。

在 WINDOWS 的 CONSOLE 下執行 MYLPT.EXE,並下達 icspwrite 指令以進行程式的燒寫。程式燒寫時,內定 mypic.hex 為程式碼檔案,所以編譯好的 HEX FILE 要改名為 mypic.hex。等指令完成後,在 PIC18F87J10 裡面的程式就跑起來了。

下面的例子中,使用 LPT PORT 把 BOOTLOADER 寫入到 PIC 中。

pic18f87j10單版

之後,我們就可以把 PIC 的應用程式,透過之前寫入的 BOOTLOADER,寫入PIC18F87J10並執行。

pic18f87j10單版

往後我只需要一條 LPT PORT 和 COM PORT 就可以做PIC18 程式的開發了。我不需要ICD2、ICD3、REALICE等數千元或一萬多元的昂貴工具,只需要幾十塊錢的 LPT PORT 和 COM PORT 線材,就可以把 PIC18 搞定了。