【ZIGBEE(CC2530)学习】6-CC2530基础实验——定时器配置


在这里插入图片描述

一、实验介绍

  CC2530定时器1 是一个独立的16 位定时器,支持典型的定时/计数功能,比如输入捕获,输出比较和PWM 功能。定时器有五个独立的捕获/比较通道。每个通道定时器使用一个I/O 引脚。定时器用于范围广泛的控制和测量应用,可用的五个通道的正计数/倒计数模式将允许诸如电机控制应用的实现。
  定时器1 的功能如下:

  1. 五个捕获
  2. 上升沿、下降沿或任何边沿的输入捕获
  3. 设置、清除或切换输出比较
  4. 自由运行、模或正计数/倒计数操作
  5. 可被1,8,32 或128 整除的时钟分频器
  6. 在每个捕获/比较和最终计数上生成中断请求
  7. DMA 触发功能

二、实验目的

  1. 通过本实验了解CC2530 的T1定时器的相关寄存器配置;
  2. 通过本实验了解CC2530的T1定时器功能的运用。

三、实验设备

3.1、硬件设备

  1. ZIGBEE开发板
  2. SmartRF04EB仿真器

3.2、软件环境

  1. IAR Embedded Workbench for 8051集成开发环境

四、实验原理

4.1、计数器

  定时器1有5个通道,定时器2为睡眠定时器,定时器3和定时器4只有2个通道。
  定时器包括一个16位计数器。计数器可以作为一个自由运行计数器、模计数器、正计数/倒计数器运行,用于中心对齐的PWM。
  在定时器1中,可以通过两个8位的SFR读取16位的计数器值,分别是T1CNTH和T1CNTL,分别包含在高位字节和低位字节。
  在定时器1中由T1CTL寄存器设置分频器值,分频器值可以从1、8、32、128中选择。当达到最终计数值(溢出)时,计数器产生一个中断请求。当T1CTL后2位写入00时计数器暂停计数;写入非00时计数器开始计数。

4.2、操作模式

4.2.1、自由运行模式

  计数器从0x0000开始计数,每个活动时钟边沿加1,当计数值达到0xFFFF(溢出)时,计数器写入0x0000,继续计数。
  当达到最终计数值(0xFFFF)时,IRCON寄存器的第1位和T1STAT寄存器的第5位置1。若设置了中断则对应产生一个中断请求。
  自由运行模式可以用于产生独立的时间间隔,输出信号频率。

4.2.2、模模式

  计数器从0x0000开始计数,当计数值达到T1CC0(溢出)时,寄存器T1CC0H:T1CC0L保存最终计数值,计数值复位到0x0000,继续计数。
  如果计数值开始于大于T1CC0值的一个数,则当达到0xFFFF时,IRCON寄存器的第1位和T1STAT寄存器的第5位置1。若设置了中断则对应产生一个中断请求。
  模模式可以用于周期不是0xFFFF的应用程序。

4.2.3、正计数/倒计数模式

  计数器从0x0000开始,当计数器正计数到T1CC0值时,计数器从T1CC0值倒计数到0x0000。
  当达到最终计数值时,IRCON寄存器的第1位和T1STAT寄存器的第5位置1。若设置了中断则对应产生一个中断请求。
  正计数/倒计数模式用于周期必须是对称输出脉冲而不是0xFFFF的应用程序。

4.3、通道模式

4.3.1、输入捕获模式

  配置为输入捕获的通道对应的IO口必须配置为输入模式,且为定时器1的外设引脚。
  定时器启动后,任何一个边沿都触发一个捕获,所以定时器可以捕获一个外部事件发生的时间。

4.3.2、输出比较模式

  配置为输入比较的通道对应的IO口必须配置为输出模式。
  定时器启动后,如果比较寄存器T1CCnH:T1CCnL的内容等于计数器内容,输出引脚根据T1CCLn寄存器第5-3位内容执行。

4.4、相关寄存器

4.4.1、T1CNTH和T1CNTL

  用于存储定时器1的计数器值,T1CNTH存储计数器高8位值,T1CNTL存储低8位值。
  当读取T1CNTL时,计数器的高位字节在那时被缓冲到T1CNTH,以便高位字节可以从T1CNTH中读出,因为T1CNTL必须总是在读取T1CNTH之前首先读取。
在这里插入图片描述

4.4.2、T1CTL

  T1CTL后2位可以用来设置启动或停止计数器,以及用来设置定时器的操作模式。
  第2位和第3位用来设置分频器的划分值,如写入11设置为128分频。
在这里插入图片描述

4.4.3、T1STAT

  T1STAT寄存器用于设置定时器1各通道中断设置,如同打开中断。寄存器第5位如同总中断。第0位改为定时器1通道0中断标志。
在这里插入图片描述

4.4.4、IRCON

  IRCON寄存器的第1位为定时器1的中断标志。当检测到第1位为1时,说明定时器1触发中断。
在这里插入图片描述

4.4.5、T1CCTL0

  当配置为输出比较模式,定时器启动后,如果比较寄存器T1CCnH:T1CCnL的内容等于计数器内容,输出引脚根据T1CCLn寄存器第5-3位内容执行。
在这里插入图片描述

4.5、溢出时间计算

  系统在不配置时默认工作频率为16MHz,经过本实验配置的128分频,工作频率为:
16 M 128 = 0.125 M H z \frac{16M}{128}=0.125MHz 12816M=0.125MHz
  定时器为此溢出时间:
T = 1 0.125 M H z × 65536 = 0.524288 ≈ 0.5 s T=\frac{1}{0.125MHz} \times 65536=0.524288 \approx 0.5s T=0.125MHz1×65536=0.5242880.5s
  其中 1 0.125 M H z \frac{1}{0.125MHz} 0.125MHz1是每个工作频率为16MHz且128分频的时钟周期,当定时器溢出时有0xFFFF(溢出)个周期。

五、实验演示

  本次实验演示的是利用定时器实现LED1在1s内更换状态。
  首先是分别创建timer1.c和timer1.h文件。
  在timer1.c内,我们要配置定时器1每0.5s计数一次,回顾4.5内容可以清楚设置工作频率为16MHz且设置128分频。由于系统在不配置时默认工作频率为16MHz,所以我们只需要设置定时器1实现128分频,而设置定时器1实现128分频是通过配置T1CTL寄存器来实现。
在这里插入图片描述
  我们仅需在T1CTL寄存器的第3位和第2位写入11,另外我们只需要简单的计数,所以只需将定时器1配置为自由运行模式,即在T1CTL寄存器的第1位和第0位写入01。
  要想实现定时器1每记一次数就改变LED1的状态,只需打开定时器1的一个通道的中断,每次计数器值加1时进入一次中断,而用于管理该中断的是T1STAT寄存器。
在这里插入图片描述
  如果我们设置的是通道0的中断,需要将T1STAT寄存器的第0位写入1,此外我们还需要开启定时器1的总中断,即将T1STAT寄存器的第5位写入1。
  综上所述,定时器的初始化就配置好了,下面我们把timer1.c的内容写在下面:

#include "headfile.h"

void timer1_init(void)
{
    T1CTL |= 0x0d;           //0000 1101 128分频 自动运行模式
    T1STAT |= 0x21;          //0010 0001 开启通道0中断。
}

  对应的更新timer1.h文件就好了。

#ifndef __TIMER1_H__
#define __TIMER1_H__

#include "headfile.h"

void timer1_init(void);

#endif

  记得在headfile.h文件内包含timer1.h文件。
  前面我们讲到开启定时器1中断,而如何判断是否进入中断就需要查看IRCON寄存器对应位。
在这里插入图片描述
  也就是说,当我们检测到IRCON寄存器的第1位为1时,说明我们设置的定时器1进入中断。
  需要注意到是,每次进入中断后要清除中断标志位,以便下一次进入中断。
  这里直接把main.c内的程序写在下面:

#include "iocc2530.h"                     //头文件
#include "headfile.h"

void main(void)
{
    led_init();
    timer1_init();
    while(1)
    {
        if(IRCON & 0x02)        //判断是否进入中断
        {
            IRCON = 0;          //清除中断标志位
            LED1 = !LED1;       //实现led1亮灭交替
        }
    }
}

  有疑问可以加入QQ群交流:324611467

无线传感器网络是目前研究的热门领域,它集成 了多门学科的知识,应用领域广泛,因此深受国际社会 的关注。 在 21 世纪里,无线传感器网络技术是具有 较大影响力技术中的一个热门技术,也是无线通信技 术中的一个新领域,它结合了多种技术的特点,如分布 式信息处理技术、嵌入式计算机技术以及无线网络通 信技术等 。 鉴于传感器网络技术的研究及应用价 值,许多部门、机构、学校等对其开始了基础理论和关键技术的研究,而通过无线方式对环境现场的数据进 行实时采集、传输和后台监控是大量挑战性的研究课 题之一。 无线数据采集是利用无线数据采集模块或设备, 将工业现场的传感器输出的电压、电流等物理量进行 实时采集和处理。 传统的数据采集系统一般采用事先 布线以及人工的方式采集设备的各项数据,而随着生 产力技术的发展,工业生产中的生产设备分布越来越 分散,分布的地域也越来越广,对处于高温和高压等恶 劣环境下的设备进行现场数据采集和维护是比较困难 和危险的,需要投入大量的人力成本和财力资源,这些 状况在很大程度上制约着企业的发展和生产效益的提 高。 对于最新的无线传感器网络技术 Zigbee 而言,它 采用了无线传输方式来构建相应的无线传感器网络, 能够较好地解决人工及有线方式存在的问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值