从一个特定的角度来看,嵌入式控制系统可以用事件系列和不同的时间标签来加以描述,更进一步,不同的时间标签也是事件的一种。
当一个系统需要多个时间标签描述,例如us、ms、s甚至几小时、几天、几年的时间标签时,只使用MCU的硬件定时器或软件延时往往是不够的或不灵活的。
在软件分时框架下,使用时基的概念,使得ms级以上的定时变得非常简单明快。更为形象的描述是:你可以随意创建一个时间标签,可以是8bits、16bits、32bits,它们好象一些大小不同的沙漏容器,对每一次的时基循环进行加计数或减计数,系统用不同的时间标签刻度对计数容器进行测量,从而形成不同的时间标签事件。
//==========================================================
// time_base_pro
//
//
// MCU: ATmega48@2MHZ
// 时基: 0.5ms
//
//==========================================================
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define schar signed char
#define sint signed int
#define slong signed long
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <avr/eeprom.h>
uchar TimerMs0,TimerMs1;
#define dTimer100ms 50
#define dTimer500ms 250
//--------------- time_base_pro / 时间基准 -----------------
void time_base_pro( void )
{ // time base: 2ms
if( TimerMs0 != 0XFF ) TimerMs0++;
if( TimerMs1 != 0XFF ) TimerMs1++;
if( TimerMs0 == dTimer100ms ) // 100ms 时间标签
{
}
if( TimerMs1 == dTimer500ms ) // 500ms 时间标签
{
}
}
time_base.c https://static.assets-stash.eet-china.com/album/old-resources/2009/2/13/a2b66c21-a5d0-49f8-886e-7d9e5833d162.rar 单片机的多定时器.PDF
Note:
1) <?xml:namespace prefix = v />文中提及的名称和商标为相关的所有者所有
2) 本文由 SPM专用编程器 提供赞助
用户146634 2009-6-4 17:40