atm128alarmasyncc.nc
来自「tinyos-2.x.rar」· NC 代码 · 共 68 行
NC
68 行
// $Id: Atm128AlarmAsyncC.nc,v 1.1 2007/11/05 20:36:42 sallai Exp $
/*
* Copyright (c) 2007 Intel Corporation
* All rights reserved.
*
* This file is distributed under the terms in the attached INTEL-LICENSE
* file. If you do not find these files, copies can be found by writing to
* Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA,
* 94704. Attention: Intel License Inquiry.
*/
/*
* Copyright (c) 2007, Vanderbilt University
* All rights reserved.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose, without fee, and without written agreement is
* hereby granted, provided that the above copyright notice, the following
* two paragraphs and the author appear in all copies of this software.
*
* IN NO EVENT SHALL THE VANDERBILT UNIVERSITY BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
* OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE VANDERBILT
* UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* THE VANDERBILT UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE VANDERBILT UNIVERSITY HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
*/
/**
* Build a 32-bit alarm and counter from the atmega1281's 8-bit timer 2
* in asynchronous mode. Attempting to use the generic Atm128AlarmC
* component and the generic timer components runs into problems
* apparently related to letting timer 2 overflow.
*
* So, instead, this version (inspired by the 1.x code and a remark from
* Martin Turon) directly builds a 32-bit alarm and counter on top of timer 2
* and never lets timer 2 overflow.
*
* @author David Gay
* @author Janos Sallai <janos.sallai@vanderbilt.edu>
*/
generic configuration Atm128AlarmAsyncC(typedef precision, int divider) {
provides {
interface Init @atleastonce();
interface Alarm<precision, uint32_t>;
interface Counter<precision, uint32_t>;
}
}
implementation
{
components new Atm1281AlarmAsyncP(precision, divider),
HplAtm1281Timer2AsyncC;
Init = Atm1281AlarmAsyncP;
Alarm = Atm1281AlarmAsyncP;
Counter = Atm1281AlarmAsyncP;
Atm1281AlarmAsyncP.Timer -> HplAtm1281Timer2AsyncC;
Atm1281AlarmAsyncP.TimerCtrl -> HplAtm1281Timer2AsyncC;
Atm1281AlarmAsyncP.Compare -> HplAtm1281Timer2AsyncC;
Atm1281AlarmAsyncP.TimerAsync -> HplAtm1281Timer2AsyncC;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?