| 网站首页 | 电子基础 | 电子应用 | 电子电路图 | 雁过留声 | 软硬件设计 | ET电子商城 | 信息发布 | PDF查询 | 互助社区 | 
您现在的位置: 迷失者电子网 >> 软硬件设计 >> 单片机 >> 文章正文 用户登录 新用户注册
[组图]PIC微控制器设计01           ★★★ 【字体:

PIC微控制器设计01

PIC微控制器设计01
作者:佚名    文章来源:网络    点击数:    更新时间:2008-7-27    


 
 本文将介绍一些挖掘各种PIC产品极限的应用方法,其中一些技巧也适用于其它微控制器,但这里只介绍用于PIC的源代码与具体示例。本文还将分析一些方法,它们是关于如何增加另一个异步串口、更容易地处理精度扩展(32位或更高)算法、增强并行从端口以及如何使用一些异步串口常被忽略的特性。

异步串口

许多PIC都具有一个或两个异步串口,但如果它们不够用,那么位拆裂(Bit-banging)剩余I/O管脚是一种常用的解决方案,且适用于整个PIC系列。但这种方案是软件密集型的,它在保持可靠通信所需的关键时序的同时,将难以进行其它任何操作。另一种选择方案是检测起始位的上升沿,并采用定时器中断来读取数据。这种方法在位拆裂方法的基础上有了很大改进,但仍需要大量的软件开销以处理每一位的中断,而面向任何中断的延迟都可能导致同步问题。

图2:作为同步串行数据的ASCII
码字母“Q”(0x51)。

大多数PIC还提供一个串行外围接口(SPI)。仅需很小开销,普通的同步SPI就可被设计成能够接收标准的异步传输。

一个典型的异步数据流包括一个起始位(总为0)、8个数据位(最低有效位在前)以及一个终止位(总为1)。图1给出了一个接收ASCII码字母“Q”(16进制为51)的例子,也可采用更少的数据位或者增加一个奇偶校验位或额外的终止位。

SPI端口也采用8位数据,但它同步在两个不同管脚上发送和接收字节。数据时钟可消除对起始位或终止位的需要,且最高有效位在前。图2显示由SPI端口发送的一些数据,SPI端口在每个时钟的下降沿接收数据,在上升沿发送数据。

开始启动

一旦被接收,数据肯定被翻转,但如果SPI时钟的下降沿与每一个异步数据位的中心同步,那么数据也可能保持原样。起始位的下降沿提供最初的同步记号,其它同步记号则利用PIC的一个SPI选项。这里有好几种定时选项,包括使用定时器TMR2等。TMR2计数直到其值等于特殊函数寄存器PR2的值,然后TMR2触发SPI时钟并复位为0,接着再继续计数。如果TMR2从大于PR2的值开始计数,则第一个时间间隔将比平常的时钟周期要长,因为它首先要复位到0(如图3所示)。

图3:TMR2在起始位的前沿初
始化为 -PR2。

SPI端口接管产生同步记号的任务后,它将用所有的8个数据位进行计时而无需其它开销。但它会占用从起始位上升沿到TMR2与SPI端口正确初始化这段时间,从而导致中断延迟,如果启用优先级更高的中断,延迟时间将更长。不过不用担心这种中断延迟,因为PIC还有另一个秘密武器。许多PIC都具有两个或多个捕获/比较/PWM模块,I/O管脚可在下降沿上捕获定时器的值,在起始位的上升沿则将TMR1值存储在一个CCPRx特殊函数寄存器中,并产生一次中断。中断服务程序将带有TMR1-CCPRx-PR2值的TMR2初始化,以消除掉任何延迟。列表1给出的是一个典型的中断程序。

可选的“if(!CCP1)”行可确认输入管脚是否仍为低,以避免将瞬间毛刺读成串行数据。由于-PR2(未标出)必须大于PR2,所以应仔细选择TMR2的预定标器的值,并使TMR1的预定标器的值与之一样。在上面例子中,dTim2PR2为52。最坏情况下的中断延迟应该小于串行数据速率,例如在9,600波特上,该值大约为104微秒或16MHz PIC上416条指令的执行时间。SPI中断正好能够隐藏数据并启用下一个字节的CCP1中断,但切记在某些时刻翻转数据位。


文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    PIC微控制器设计02
    数字电路的仿真与设计02
    数字电路的仿真与设计01
    DSP的最小图像采集处理系统设…
    DSP的最小图像采集处理系统设…
    DSP通用板的设计与应用02
    DSP通用板的设计与应用01
    DSP处理器系统的SOPC技术设计…
    DSP处理器系统的SOPC技术设计…
    DSP的多路音视频采集处理系统…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)