pic18f系列新玩法

2020-02-08 09:30发布

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这条信号脚位。
线路图如下:


线路说明:
在LPT PORT中,D0~D7是双向埠,ACK是输入脚。我们设定DATA PORT为输出,所以D0~D3都是输出,不会做输入使用。因为烧录器不仅要可以烧写程式码,也要可以读取程式码,所以需要有一支有输入功能的脚位,ACK。因为D0一定是输出,PGD可以输出和输入,所以必须要有一支电阻做限流和保护。保护PGD输出的信号不会被D0破坏,并且可以准确的传到ACK脚位上,被ACK读取。

当我们把线路接好后,接下来就是要写程式码,把ICSP的通道打通,以进行读写动作。
PIC18烧录的说明取自:


ICSP烧写程式的流程包括,
一、进入PROGRAMING MODE
二、清除所有记忆体资料
三、烧写程式码
四、验证程式码
五、离开PROGRAMING MODE


一、进入PROGRAMING MODE
如下面时序图所述,MCLR=0后输入SIGNATURE 0x4D434850 "MCHP",之后再把MCLR拉起,然后PIC18F87J10就进入ICSP的PROGRAMING MODE。


进入PROGRAMING MODE之后,就要使用ICSP指令格式,下达ICSP指令。
ICSP的指令格式的范例如下:



二、清除所有记忆体资料




三、烧写程式码

因为PIC18F87J10的PROGRAM BUFFER 是64​​ Bytes,所以一次最多只能写入6 Bytes ,之后就要下达写入指令,让ICSP把资料写到PIC18F 的FLASH 中。也因为每次的写入都是2 Bytes,所以要写32 次,详细的时序可以参考下面的时序图。




四、验证程式码

这一步我没有做。

五、离开PROGRAMING MODE

离开ICSP 的PROGRAMING MODE 的方法就是送出下面的时序,之后,PIC18F87J10 就会执行刚刚烧录的程式码。


参、成果
下面的板子有LPT PORT 接在上面,LPT PORT 已经按照上述的电路接法接好。

  
因为在WINDOWS下应用程式不可以直接使用底层硬体,必须先安装giveio.sys。
关于giveio.sys可以到网路上面找。会有两个档案giveio.sys和giveio.inf,先把giveio.sys拷贝到c:windowssystem32drivers ,再到控制台使用"加入新的硬体"的方式安装giveio.inf。

在WINDOWS 的CONSOLE 下执行MYLPT.EXE,并下达icspwrite 指令以进行程式的烧写。程式烧写时,内定mypic.hex 为程式码档案,所以编译好的HEX FILE 要改名为mypic.hex。等指令完成后,在PIC18F87J10 里面的程式就跑起来了。

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


之后,我们就可以把PIC 的应用程式,透过之前写入的BOOTLOADER,写入PIC18F87J10并执行。


往后我只需要一条LPT PORT 和COM PORT 就可以做PIC18 程式的开发了。我不需要ICD2、ICD3、REALICE等数千元或一万多元的昂贵工具,只需要几十块钱的LPT PORT 和COM PORT 线材,就可以把PIC18 搞定了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。