历史上的今天
返回首页

历史上的今天

今天是:2025年01月23日(星期四)

正在发生

2020年01月23日 | 【ARM】定时器

2020-01-23 来源:eefocus

PWM定时器

  PWN:脉冲宽度调制

  每个定时器都有一个专用的由定时器时钟驱动的16位递减计数器。当递减计数器的计数值达到0的时候,就会产生定时中断请求来通知CPU定时器操作完成。当定时器递减计数器达到0的时候,相应的TCNTBn的值会自动重载到递减计数器中以继续下次操作。


  但是,如果定时器停止了,比如在定时器运行时清除TCON中的定时器使能位,TCNTBn的值不会被重载到递减计数器中

  TCMPBn的值用于脉冲宽度调制(PWM)。当定时器的递减计数器的值和比较寄存器的值相匹配的时候,定时器控制逻辑将改变输出电平。因此,比较寄存器决定了PWM输出的开关时间。


定时吕控制寄存器(TCON)

  定时器控制寄存器主要用于自动重载、定时器自动更新、定时器启停、输出翻转控制等

定时器n计数缓冲寄存器(TCNTBn)

  这个寄存器用于PWM定时器的时间计数

定时器n比较缓冲寄存器(TCMPBn)

  这个寄存器用于PWM波形输出占空比的设置

 

看门狗定时器

  看门狗(WatchDog)定时器和PWM定时器功能目的不一样。

特点

  需要不停地接收信号(一些外置看门狗芯片)或重新设置计数值(如S3C2410X的看门狗控制器),保持计数值不为0.一旦一段时间接收不到信号,或计数值到0,看门狗定时器将发出复位信号复位系统或产生中断。


作用

  看门狗定时器的作用是微控制器受到干扰进入错误状态后,使系统在一定时间间隔内复位。因此看门狗定时器是保证系统长期、可靠和稳定运行的有效措施。


  一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值不能被自动地装载到看门狗计数器(WTCNT)中。因此,看门狗定时器启动前要将一个初始值写入看门狗计数器(WTCNT)中。


程序设计流程

  由于看门狗定时器是对系统的复位或者中断的操作,所以不需要外围的硬件电路。要实现看门狗定时器的功能,只需要对看门狗定时器的寄存器组进行操作,即对看门狗定时器的控制寄存器(WTCNT)进行操作。


  1)设置看门狗定时器中断操作包括全局中断和看门狗中断的全能及看门狗中断向量的定义,如果只是进行复位操作,这一步可以不用设置

  2)对看门狗控制寄存器(WTCON)的设置,包括设置预分频比例因子、分频器的分频值、中断全能和复位全能等

  3)对看门狗数据寄存器(WTDAT)和看门狗计数寄存器(WTCNT)的设置

  4)启动看门狗定时器

 

看门狗例子

 1 #include "2410lib.h"

 2 

 3 void watchdog_test(void);

 4 

 5 int main()

 6 

 7 {

 8 

 9    sys_init();

10 

11    uart_printf("n Embest Arm S3CEB2410 Evaluation Board!n");  

12 

13    watchdog_test();

14 

15 while(1);

16 

17 }

18 

19 void  __irq watchdog_int(void) ;//__attribute__((interrupt ("IRQ")));

20 

21 INT8T f_ucSecondNo;

22 

23 void watchdog_test(void)

24 

25 {   f_ucSecondNo = 0;

26 

27    uart_printf("n WatchDog Timer Test Examplen");

28 

29    uart_printf(" 10 seconds:n");

30 

31    rSRCPND|=0x0200;

32 

33    rINTPND|=0x200;

34 

35 //ClearPending(BIT_WDT);                        // clear interrupt pending bit

36 

37    pISR_WDT = (unsigned)watchdog_int;              // Initialize WDT interrupt handler entry

38 

39    rWTCON = ((PCLK/1000000-1)<<8)|(3<<3)|(1<<2);   // 1M,1/128, enable interrupt

40 

41    rWTDAT = 7812;                                  // 1M/128=7812

42 

43    rWTCNT = 7812;

44 

45    rWTCON = rWTCON & ~1;

46 

47 //rWTCON = rWTCON | 1;                          // enable restart                

48 

49    rWTCON |=(1<<5);                                // start watchdog timer

50 

51    rINTMOD &= ~(BIT_WDT);

52 

53    rINTMSK &= ~(BIT_WDT);

54 

55 while((f_ucSecondNo)<11);

56 

57    rINTMSK |= BIT_WDT;                             // mask watchdog timer interrupt

58 

59    uart_printf(" end.n");      

60 

61 }

62 

63  

64 

65 void __irq watchdog_int(void)

66 

67 {

68 

69    ClearPending(BIT_WDT);

70 

71    f_ucSecondNo++;  

72 

73 if(f_ucSecondNo<11)

74 

75        uart_printf(" %3ds ",f_ucSecondNo);

76 

77 else

78 

79        uart_printf("n O.K.");

80 

81 }

推荐阅读

史海拾趣

Coleman Cable Inc公司的发展小趣事

品质一直是Coleman Cable的生命线。公司建立了严格的质量控制体系,从原材料采购、生产过程到成品检验,每一个环节都严格把关。这种对品质的执着追求,使得Coleman Cable的产品在市场上享有良好的声誉。同时,公司还积极听取客户反馈,不断改进产品和服务,赢得了客户的信赖和忠诚。

HEIMANN公司的发展小趣事

品质一直是Coleman Cable的生命线。公司建立了严格的质量控制体系,从原材料采购、生产过程到成品检验,每一个环节都严格把关。这种对品质的执着追求,使得Coleman Cable的产品在市场上享有良好的声誉。同时,公司还积极听取客户反馈,不断改进产品和服务,赢得了客户的信赖和忠诚。

Erocore Enterprise Co Ltd公司的发展小趣事

Erocore Enterprise Co Ltd公司自XXXX年在电子行业中创立之初,就专注于电子元件的研发和生产。公司创始人深知技术是企业发展的核心,因此投入大量资源用于技术研究和人才引进。在初创期,Erocore通过不断的技术创新,积累了一定的技术储备和行业经验,为其在后续的市场竞争中奠定了坚实的基础。

三环(CCTC)公司的发展小趣事

三环(CCTC)公司自1970年成立以来,便致力于电子基础材料、电子元件和通信器件的研发与生产。在创立初期,公司面临着技术落后和资金短缺的困境,但通过不懈的努力和持续的研发投入,逐渐在电子行业中崭露头角。公司积极引进国外先进技术和设备,同时培养了一支高素质的研发团队,为后续的发展奠定了坚实的基础。

First Switchtech公司的发展小趣事

在电子行业的初期,First Switchtech公司(或类似公司)凭借其在开关技术领域的突破性创新,迅速在市场中崭露头角。公司研发出了一种新型低功耗、高可靠性的电子开关,这一创新不仅解决了当时市场上开关设备能耗高、故障率大的问题,还极大地提升了产品的整体性能。随着这一技术的广泛应用,First Switchtech公司逐渐在电子开关领域建立了领先地位,并带动了整个行业的技术进步。

Chenmoun Enterprise Ltd公司的发展小趣事

在电子行业竞争日益激烈的背景下,Chenmoun Enterprise Ltd始终坚持品质至上的原则。公司建立了严格的质量管理体系,从原材料采购到生产流程再到产品出厂,每一个环节都严格把关。这种对品质的执着追求赢得了客户的信任和口碑,使得Chenmoun的产品在市场上获得了广泛的认可。

问答坊 | AI 解惑

华为PCB规范

希望对你有用…

查看全部问答>

想用2262,2272做遥控小车,怎样才能使小车前进的同时转弯?

想用2262,2272做个遥控小车,可这个芯片在同一时段只能有一个端口输出,前进时就不能转弯了,不知道该怎样解决,请大家想想,给点思路,用单片机控制也行。…

查看全部问答>

请教如何在Win CE 下开发Driver【或寻北京兼职人员】

想请教一下如何开发Win CE 下的Dirver。 开发流程,用到的技术,是怎么样子的。 希望能帮忙找点例子和相关的文档。 我这边有个嵌入式的项目,目前准备自学后再做。 也希望能得到嵌入式工程师的帮助,大家一起接下这个单子。 如果有兴趣的可以 ...…

查看全部问答>

nios 2 开发

我将生成的elf 文件下载到板上的过程中出现如图的错误 我该如何去解决 谢谢…

查看全部问答>

ST7-DVP3多少钱?

                                 用rlink太痛苦了,好点的多少钱?…

查看全部问答>

用图片教你识别各种电子器件

用图片教你识别各种电子器件,很不错,从最简单的电阻 电容 到复杂的引脚众多的IC芯片,蛮实用的。允许我赚点小钱啊,多多包涵。。。      …

查看全部问答>

LM3S9B92板子少了个作键盘的程序和PC连接

连接之后PC机没有反映,驱动怎么装? 各位赐教!谢谢!…

查看全部问答>

CPLD执行一条语句需要多少时间

verilog中 比如always @(posedge clk)//CLK频率为125MHZ. 8ns周期 begin ...... end 实际begin end中的语句执行一次 要多少时间啊…

查看全部问答>

430循迹程序

#include #define TR_1_H        P1IN|=BIT1      //P1.1 #define TR_1_L        P1IN&=~BIT1     //P1.1 #define TR_2_H   & ...…

查看全部问答>

贡献launchpad 内部测温通过串口传输给PC

最近玩launchpad,写了个简单的小程序通过msp430g2553内部测量温度,然后通过串口通信上传给电脑,但是没有加上校正,只能简单的使用…

查看全部问答>