返回该小组首页 回复主题
dongdong19

dongdong19

小组等级:     E币:167  (E币换礼)

#1楼主:zigbee中怎么应用定时器中断的问题

文章发表于:2008-10-08 03:14

大家好,原来做的时候是用延时的方法,现在老师让用定时器中断精确采集,不知道在协议中怎么用中断,还是直接加到后面吗

jjh5600

   小组等级:    E币:684  (E币换礼)

#2

文章发表于:2008-10-09 08:08

我用的无限龙的cc2430模块  这是我自己写的 你看看能不能帮到忙 只作为参考使用
#include <ioCC2430.h>
#define RLED P1_0
#define YLED P1_1
unsigned char n=0;
void init(void)
{
  YLED=1;
  RLED=1;
  EA=1;    //开总中断
  T1IE=1;  定时器T1 中断开
  T1CTL |= 0X02; 定时器1比较计数模式
  T1CC0H=0x03; 
  T1CC0L=0xe8;  计数1000次
}

#pragma vector=T1_VECTOR
__interrupt void T1_ISR(void)
{
  IRCON=0;
  n++;
  if(n==250)
  {
    n=0;
    YLED=RLED;
    RLED=!RLED;
  }
}
void InitClock(void)
   {
    CLKCON = 0X38;   //TICKSPD = 101 定时器计数时钟源 CLKSPD = 000 和波特率有关

                     //两个时钟源选用晶振

     while(!(SLEEP&0X40));  //等晶振稳定
    }
void main(void)
{
  P1SEL=0x00;
  P1DIR|=0x03;
   InitClock();
  init();
  while(1)
  {
  }
}

jjh5600

   小组等级:    E币:684  (E币换礼)

#3

文章发表于:2008-10-09 08:16

定时器1相关寄存器(可能有点乱呢 T_T  不会弄表格上来 O_o|||  )

T1CTL(T1 控制&状态寄存器):


位号        位名      复位值       操作性         功能描述
7           CH2IF      0         可读/写0       定时器1 通道2 中断标志位

6           CH1IF      0         可读/写0       定时器1 通道1 中断标志位

5           CH0IF      0         可读/写0       定时器1 通道0 中断标

4           OVFIF      0         可读/写0       定时器溢出中断标志,在在计数器达到计数
                                                                  终值的时候置位

3:2         DIV[1:0]   00        可读/写        定时器1 计数时钟分步选择

                                                        00 不分频
                                                        01 8 分频
                                                        10 32 分频
                                                        11 128 分频

1:0         MODE[1:0]  00        可读/写        定时器1 模式选择
                                                        00 暂停
                                                        01 自动重装0x0000-0xffff
                                                            
                                                        10 比较计数0x0000-T1CC0

                                                        11 PWM 方式
                                                        0x0000-T1CC0-0X0000

yuexianhanshu

   小组等级:    E币:717  (E币换礼)

#4

文章发表于:2008-10-09 11:00

用完定时器,别忘了关

sboyer

   小组等级:    E币:218  (E币换礼)

#5

文章发表于:2008-10-09 21:34

能不能讲讲中断程序的前两行如#pragma vector="T1"_VECTOR
__interrupt void T1_ISR(void)都是什么意思?

jjh5600

   小组等级:    E币:684  (E币换礼)

#6

文章发表于:2008-10-10 08:37

#pragma vector="T1"_VECTOR
__interrupt void T1_ISR(void)
个人认为应该是中断程序的一个格式吧
上面这一句是用的TI做中断
若用T2就把T1换作T2   
cc2430中断名称: PFERR,ADC,URX1,URX0,ENC,ST,P2INT,UTX0,DMA,T1,T2,T3,T4,P0INT,UTX1,P1INT,RF,WDT

守望者2006

   小组等级:    E币:184  (E币换礼)

#7

文章发表于:2008-10-27 16:51

EA=1;

????

cc2430的数据手册中怎么没有这个寄存器啊?

redbravo

   小组等级:    E币:67  (E币换礼)

#8

文章发表于:2008-10-28 12:02

Z-Stack2006中定时器中断通过event向task触发:

#define GENERICAPP_SEND_MSG_TIMEOUT   5000     // Every 5 seconds

osal_start_timerEx( GenericApp_TaskID,  //定时器中断时同知的task
                        GENERICAPP_SEND_MSG_EVT,  //发出的event码
                        GENERICAPP_SEND_MSG_TIMEOUT ); //定时时间

 //定时时间到时将向GenericApp_TaskID发出GENERICAPP_SEND_MSG_EVT,操作系统主循环轮询到GenericApp_ProcessEvent()时,

  if ( events & GENERICAPP_SEND_MSG_EVT )
  {
  }

将被执行。

总共 , 当前 /

快速回复主题--如果想加入编辑器功能,建议使用 [高级回复]

您目前还不是小组成员,请先加入

回复贴子区

用户名:    您没有注册?

密码:    忘记了密码?

内容:

  • DesignDesign
  • HTMLHTML

浏览该小组的用户还看过...

所有小组精华文章