利用MAXQ3210构建水位监测报警系统
唤醒定时器
本文引用地址:http://www.amcfsurvey.com/article/83211.htmMAXQ3210的唤醒定时器是一个20位的定时器,可设置为系统时钟递减计数,也可以设置为对处理器内部环形振荡器计数。应用软件将初始值装入唤醒定时器寄存器(WUT),随后定时器从这个设定值开始递减计数。当定时器计数值达到0时,休眠周期结束,唤醒定时器控制(WTCN.1)寄存器的中断标志位(WTF)置位。如果中断使能,该标志将触发一次中断,使处理器退出中断模式。如果屏蔽中断,处理器将不退出停机模式。
通过WUT寄存器,处理器及其软件可访问20位定时器的前16位,低4位只允许定时器硬件访问。尽管如此,任何情况下只要软件对WUT寄存器进行写操作,其低4位也将清零。唤醒定时器的周期由以式给出:
唤醒定时器周期 = (源时钟周期) x WUT[19:4] x 16
其中WUT[19:4]是20位定时器的前16位。注意,由于在WUT寄存器没有包含定时器的低4位,周期数必须乘以16。通过使用这个公式,可看出一般在使用频率为8kHz的环形振荡器时,最大唤醒周期大约为131秒。上文中选择一分钟为休眠周期,将倒计数值30,000 (07530h)装载到WUT即可产生一分钟的休眠时间。假设唤醒定时器对环形振荡器进行计数。
配置唤醒定时器时需要对定时器控制寄存器进行一次写操作,将唤醒寄存器(WTE)的使能位WUTC.0置位以使能定时器。同时,唤醒定时器(WTCS)的时钟选择位WUTC.2必须置1,定时器才能对处理器的环形振荡器进行计数。因此,应用程序必须向定时器控制寄存器(WUTC) 写入十六进制数05初始化定时器。唤醒定时器标志(WTF)的WUTC.1位由定时器硬件置位,但必须由中断服务程序清除,以防止重复响应同一中断。
模拟比较器
MAXQ3210内置1位模数比较器及其2.5V的电压基准,这些电路是本应用的关键。比较器有两个输入端,+和-,如图2所示。比较器输出是两个输入端模拟电压之差的函数。本应用中,2.5V基准连接至“+”输入端,“-”输入端连接至传感器的一端。如图所示,“-”输入端通过一个1.0M电阻由设置为高电平的端口P0.5上拉至高电平。因此,在正常状态下,“-”输入端电压接近于5V,高于“+”输入端2.5V基准电压。比较器的极性选择(CPOL)位CMPC.1在本应用中设置为0。比较器输出结果CMO如下:
CMO = 0当(VREF
CMO = 1当(VREF>CMPI)时
由此可见,正常状态下比较器输出CMPO为0。当水监测传感器的电极浸入水中时,两电极之间的导电性将比较器输入拉至地电位。这种状态下,基准电压高于CMPI,比较器输出CMO变为高电平。由于比较器的高输入阻抗,正常情况(无报警)下,只有非常小的电流流入比较器输入端。当水监测传感器电极浸入水中时,水的电导率和1.0M电阻可以限制传感器电极之间的电流。
扬声器驱动
MAXQ3210提供了一个板上3引脚压电扬声器驱动接口,该接口可直接驱动压电扬声器。3引脚接口的引脚配置如下:
HORNB (扬声器铜片):这个输出连接至压电扬声器的金属电极。
HORNS (扬声器银片):这个输出连接至压电扬声器的陶瓷电极。当压电扬声器驱动使能时,这个输出为HORNB提供互补输出。
压电扬声器采用自驱动,使用扬声器控制寄存器的扬声器使能(HREN)位HRNC.0开启或关闭压电扬声器驱动器。当HRNC.0置1时,扬声器驱动器被激活,扬声器将发出声音报警。当HRNC.0位清零时,扬声器不发声。在本应用实例中,在传感器电极浸入水中时,扬声器将在一定的时间间隔内发出5声蜂鸣声。如果检测到低电池电压,扬声器将每次发出8声蜂鸣声,然后停止一分钟。这种模式将一直持续到电池电压过低导致系统复位,或外部触发复位(外部复位没有禁止时会发生这种情况)。
环形振荡器
MAXQ3210内置一个环形振荡器,作为系统上电复位或退出停机模式的默认时钟源。环形振荡器使能后立即开始振荡,不象晶体振荡器至少需要65536个时钟周期才能达到稳定状态。从停机模式唤醒时,如果系统延迟65,536个时钟,在没有执行指令(例如,没有任务运行)等待这个周期结束期间将会消耗大量功率。退出停机模式时,使用环形振荡器可以避免这种功耗。实际上,退出停机模式时,环形振荡器也需要4个时钟周期达到稳定状态,但与晶体振荡器相比,该时间间隔短得多。
为降低功耗,初始程序将环形振荡器配置为处理器的系统时钟。将环形振荡器选择(RGSL)位CKCN.6置1实现。将该位置位,而处理器运行在晶体振荡器时(处于系统初始化阶段),时钟源将立即切换到环形振荡器,这时没有4个时钟周期的延迟。
评论