⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atm128timer.h

📁 tinyos2.0版本驱动
💻 H
字号:
// $Id: Atm128Timer.h,v 1.5 2007/03/29 21:07:25 idgay Exp $/* * Copyright (c) 2004-2005 Crossbow Technology, Inc.  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 CROSSBOW TECHNOLOGY OR ANY OF ITS LICENSORS 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 CROSSBOW OR ITS LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH  * DAMAGE.  * * CROSSBOW TECHNOLOGY AND ITS LICENSORS SPECIFICALLY DISCLAIM ALL 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 NEITHER CROSSBOW NOR ANY LICENSOR HAS ANY  * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR  * MODIFICATIONS. *//* * This file contains the configuration constants for the Atmega128 * clocks and timers. * * @author Philip Levis * @author Martin Turon * @date   September 21 2005 */#ifndef _H_Atm128Timer_h#define _H_Atm128Timer_h//====================== 8 bit Timers ==================================// Timer0 and Timer2 are 8-bit timers./* 8-bit Timer0 clock source select bits CS02, CS01, CS0 (page 103,   ATmega128L data sheet Rev. 2467M-AVR-11/04 */enum {  ATM128_CLK8_OFF         = 0x0,  ATM128_CLK8_NORMAL      = 0x1,  ATM128_CLK8_DIVIDE_8    = 0x2,  ATM128_CLK8_DIVIDE_32   = 0x3,  ATM128_CLK8_DIVIDE_64   = 0x4,  ATM128_CLK8_DIVIDE_128  = 0x5,  ATM128_CLK8_DIVIDE_256  = 0x6,  ATM128_CLK8_DIVIDE_1024 = 0x7,};enum {  ATM128_CLK16_OFF           = 0x0,  ATM128_CLK16_NORMAL        = 0x1,  ATM128_CLK16_DIVIDE_8      = 0x2,  ATM128_CLK16_DIVIDE_64     = 0x3,  ATM128_CLK16_DIVIDE_256    = 0x4,  ATM128_CLK16_DIVIDE_1024   = 0x5,  ATM128_CLK16_EXTERNAL_FALL = 0x6,  ATM128_CLK16_EXTERNAL_RISE = 0x7,};/* Common scales across both 8-bit and 16-bit clocks. */enum {    AVR_CLOCK_OFF = 0,    AVR_CLOCK_ON  = 1,    AVR_CLOCK_DIVIDE_8 = 2,};/* 8-bit Waveform Generation Modes */enum {    ATM128_WAVE8_NORMAL = 0,    ATM128_WAVE8_PWM,    ATM128_WAVE8_CTC,    ATM128_WAVE8_PWM_FAST,};/* 8-bit Timer compare settings */enum {    ATM128_COMPARE_OFF = 0,  //!< compare disconnected    ATM128_COMPARE_TOGGLE,   //!< toggle on match (PWM reserved    ATM128_COMPARE_CLEAR,    //!< clear on match  (PWM downcount)    ATM128_COMPARE_SET,      //!< set on match    (PWN upcount)};/* 8-bit Timer Control Register */typedef union{  uint8_t flat;  struct {    uint8_t cs    : 3;  //!< Clock Source Select    uint8_t wgm1  : 1;  //!< Waveform generation mode (high bit)    uint8_t com   : 2;  //!< Compare Match Output    uint8_t wgm0  : 1;  //!< Waveform generation mode (low bit)    uint8_t foc   : 1;  //!< Force Output Compare  } bits;} Atm128TimerControl_t;typedef Atm128TimerControl_t Atm128_TCCR0_t;  //!< Timer0 Control Registertypedef uint8_t Atm128_TCNT0_t;               //!< Timer0 Control Registertypedef uint8_t Atm128_OCR0_t;         //!< Timer0 Output Compare Registertypedef Atm128TimerControl_t Atm128_TCCR2_t;  //!< Timer2 Control Registertypedef uint8_t Atm128_TCNT2_t;               //!< Timer2 Control Registertypedef uint8_t Atm128_OCR2_t;         //!< Timer2 Output Compare Register// Timer2 shares compare lines with Timer1C/* Asynchronous Status Register -- Timer0 */typedef union{  uint8_t flat;  struct {    uint8_t tcr0ub : 1;  //!< Timer0 Control Resgister Update Busy    uint8_t ocr0ub : 1;  //!< Timer0 Output Compare Register Update Busy    uint8_t tcn0ub : 1;  //!< Timer0 Update Busy    uint8_t as0    : 1;  //!< Asynchronous Timer/Counter (off=CPU,on=32KHz osc)    uint8_t rsvd   : 4;  //!< Reserved  } bits;} Atm128Assr_t;/* Timer/Counter Interrupt Mask Register */typedef union{  uint8_t flat;  struct {    uint8_t toie0 : 1; //!< Timer0 Overflow Interrupt Enable    uint8_t ocie0 : 1; //!< Timer0 Output Compare Interrupt Enable    uint8_t toie1 : 1; //!< Timer1 Overflow Interrupt Enable    uint8_t ocie1b: 1; //!< Timer1 Output Compare B Interrupt Enable    uint8_t ocie1a: 1; //!< Timer1 Output Compare A Interrupt Enable    uint8_t ticie1: 1; //!< Timer1 Input Capture Enable    uint8_t toie2 : 1; //!< Timer2 Overflow Interrupt Enable    uint8_t ocie2 : 1; //!< Timer2 Output Compare Interrupt Enable  } bits;} Atm128_TIMSK_t;// + Note: Contains some 16-bit Timer flags/* Timer/Counter Interrupt Flag Register */typedef union{  uint8_t flat;  struct {    uint8_t tov0  : 1; //!< Timer0 Overflow Flag    uint8_t ocf0  : 1; //!< Timer0 Output Compare Flag    uint8_t tov1  : 1; //!< Timer1 Overflow Flag    uint8_t ocf1b : 1; //!< Timer1 Output Compare B Flag    uint8_t ocf1a : 1; //!< Timer1 Output Compare A Flag    uint8_t icf1  : 1; //!< Timer1 Input Capture Flag     uint8_t tov2  : 1; //!< Timer2 Overflow Flag    uint8_t ocf2  : 1; //!< Timer2 Output Compare Flag  } bits;} Atm128_TIFR_t;// + Note: Contains some 16-bit Timer flags/* Timer/Counter Interrupt Flag Register */typedef union{  uint8_t flat;  struct {    uint8_t psr321 : 1; //!< Prescaler Reset Timer1,2,3    uint8_t psr0   : 1; //!< Prescaler Reset Timer0    uint8_t pud    : 1; //!<     uint8_t acme   : 1; //!<     uint8_t rsvd   : 3; //!< Reserved    uint8_t tsm    : 1; //!< Timer/Counter Synchronization Mode  } bits;} Atm128_SFIOR_t;//====================== 16 bit Timers ==================================// Timer1 and Timer3 are both 16-bit, and have three compare channels: (A,B,C)enum {    ATM128_TIMER_COMPARE_NORMAL = 0,    ATM128_TIMER_COMPARE_TOGGLE,    ATM128_TIMER_COMPARE_CLEAR,    ATM128_TIMER_COMPARE_SET};/* Timer/Counter Control Register A Type */typedef union{  uint8_t flat;  struct {    uint8_t wgm10 : 2;   //!< Waveform generation mode    uint8_t comC  : 2;   //!< Compare Match Output C    uint8_t comB  : 2;   //!< Compare Match Output B    uint8_t comA  : 2;   //!< Compare Match Output A  } bits;} Atm128TimerCtrlCompare_t;/* Timer1 Compare Control Register A */typedef Atm128TimerCtrlCompare_t Atm128_TCCR1A_t;/* Timer3 Compare Control Register A */typedef Atm128TimerCtrlCompare_t Atm128_TCCR3A_t;/* 16-bit Waveform Generation Modes */enum {    ATM128_WAVE16_NORMAL = 0,    ATM128_WAVE16_PWM_8BIT,    ATM128_WAVE16_PWM_9BIT,    ATM128_WAVE16_PWM_10BIT,    ATM128_WAVE16_CTC_COMPARE,    ATM128_WAVE16_PWM_FAST_8BIT,    ATM128_WAVE16_PWM_FAST_9BIT,    ATM128_WAVE16_PWM_FAST_10BIT,    ATM128_WAVE16_PWM_CAPTURE_LOW,    ATM128_WAVE16_PWM_COMPARE_LOW,    ATM128_WAVE16_PWM_CAPTURE_HIGH,    ATM128_WAVE16_PWM_COMPARE_HIGH,    ATM128_WAVE16_CTC_CAPTURE,    ATM128_WAVE16_RESERVED,    ATM128_WAVE16_PWM_FAST_CAPTURE,    ATM128_WAVE16_PWM_FAST_COMPARE,};/* Timer/Counter Control Register B Type */typedef union{  uint8_t flat;  struct {    uint8_t cs    : 3;   //!< Clock Source Select    uint8_t wgm32 : 2;   //!< Waveform generation mode    uint8_t rsvd  : 1;   //!< Reserved    uint8_t ices1 : 1;   //!< Input Capture Edge Select (1=rising, 0=falling)    uint8_t icnc1 : 1;   //!< Input Capture Noise Canceler  } bits;} Atm128TimerCtrlCapture_t;/* Timer1 Control Register B */typedef Atm128TimerCtrlCapture_t Atm128_TCCR1B_t;/* Timer3 Control Register B */typedef Atm128TimerCtrlCapture_t Atm128_TCCR3B_t;/* Timer/Counter Control Register C Type */typedef union{  uint8_t flat;  struct {    uint8_t rsvd  : 5;   //!< Reserved    uint8_t focC  : 1;   //!< Force Output Compare Channel C    uint8_t focB  : 1;   //!< Force Output Compare Channel B    uint8_t focA  : 1;   //!< Force Output Compare Channel A  } bits;} Atm128TimerCtrlClock_t;/* Timer1 Control Register B */typedef Atm128TimerCtrlClock_t Atm128_TCCR1C_t;/* Timer3 Control Register B */typedef Atm128TimerCtrlClock_t Atm128_TCCR3C_t;// Read/Write these 16-bit Timer registers according to p.112:// Access as bytes.  Read low before high.  Write high before low. typedef uint8_t Atm128_TCNT1H_t;  //!< Timer1 Registertypedef uint8_t Atm128_TCNT1L_t;  //!< Timer1 Registertypedef uint8_t Atm128_TCNT3H_t;  //!< Timer3 Registertypedef uint8_t Atm128_TCNT3L_t;  //!< Timer3 Register/* Contains value to continuously compare with Timer1 */typedef uint8_t Atm128_OCR1AH_t;  //!< Output Compare Register 1Atypedef uint8_t Atm128_OCR1AL_t;  //!< Output Compare Register 1Atypedef uint8_t Atm128_OCR1BH_t;  //!< Output Compare Register 1Btypedef uint8_t Atm128_OCR1BL_t;  //!< Output Compare Register 1Btypedef uint8_t Atm128_OCR1CH_t;  //!< Output Compare Register 1Ctypedef uint8_t Atm128_OCR1CL_t;  //!< Output Compare Register 1C/* Contains value to continuously compare with Timer3 */typedef uint8_t Atm128_OCR3AH_t;  //!< Output Compare Register 3Atypedef uint8_t Atm128_OCR3AL_t;  //!< Output Compare Register 3Atypedef uint8_t Atm128_OCR3BH_t;  //!< Output Compare Register 3Btypedef uint8_t Atm128_OCR3BL_t;  //!< Output Compare Register 3Btypedef uint8_t Atm128_OCR3CH_t;  //!< Output Compare Register 3Ctypedef uint8_t Atm128_OCR3CL_t;  //!< Output Compare Register 3C/* Contains counter value when event occurs on ICPn pin. */typedef uint8_t Atm128_ICR1H_t;  //!< Input Capture Register 1typedef uint8_t Atm128_ICR1L_t;  //!< Input Capture Register 1typedef uint8_t Atm128_ICR3H_t;  //!< Input Capture Register 3typedef uint8_t Atm128_ICR3L_t;  //!< Input Capture Register 3/* Extended Timer/Counter Interrupt Mask Register */typedef union{  uint8_t flat;  struct {    uint8_t ocie1c: 1; //!< Timer1 Output Compare C Interrupt Enable    uint8_t ocie3c: 1; //!< Timer3 Output Compare C Interrupt Enable    uint8_t toie3 : 1; //!< Timer3 Overflow Interrupt Enable    uint8_t ocie3b: 1; //!< Timer3 Output Compare B Interrupt Enable    uint8_t ocie3a: 1; //!< Timer3 Output Compare A Interrupt Enable    uint8_t ticie3: 1; //!< Timer3 Input Capture Interrupt Enable    uint8_t rsvd  : 2; //!< Timer2 Output Compare Interrupt Enable  } bits;} Atm128_ETIMSK_t;/* Extended Timer/Counter Interrupt Flag Register */typedef union{  uint8_t flat;  struct {    uint8_t ocf1c : 1; //!< Timer1 Output Compare C Flag    uint8_t ocf3c : 1; //!< Timer3 Output Compare C Flag    uint8_t tov3  : 1; //!< Timer/Counter Overflow Flag    uint8_t ocf3b : 1; //!< Timer3 Output Compare B Flag    uint8_t ocf3a : 1; //!< Timer3 Output Compare A Flag    uint8_t icf3  : 1; //!< Timer3 Input Capture Flag     uint8_t rsvd  : 2; //!< Reserved  } bits;} Atm128_ETIFR_t;/* Resource strings for timer 1 and 3 compare registers */#define UQ_TIMER1_COMPARE "atm128.timer1"#define UQ_TIMER3_COMPARE "atm128.timer3"#endif //_H_Atm128Timer_h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -