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

📄 adc_task.h

📁 基于Atmel ATMega88+ATA682的应用实例 主要功能包括: 1) PWM输出控制 2) H-Bridge,4 POWER FET 驱动 3) 模拟量比较
💻 H
字号:
/*
**
****************************************************************************
**
**
**             Copyright (c) 2007 - Atmel Corporation
**             Proprietaty Information
**
** Project    	: ATMEGA88 + ATA6824 High Temperature H-bridge System
** Module     	: ADC_task.h
** Description	: Header file
**                Manage ADC to acquire Current (VSHUNT) Supply voltage (Vbat)
**                and Speed set
**
** Version :     Date:         Author:      Comment:
**    1.0        24.01.2007    F.G.          Creation 
**
** LICENSE -
**
** ATMEL - 2007
** All software programs are provided 'as is' without warranty of any kind:
** Atmel does not state the suitability of the provided materials for any
** purpose. Atmel hereby disclaim all warranties and conditions with regard
** to the provided software, including all implied warranties, fitness for
** a particular purpose, title and non-infringement.In no event will Atmel
** be liable for any indirect or consequential damages or any damages
** whatsoever resulting from the usage of the software program.
****************************************************************************
**
*/

#ifndef ADC_TASK_H
#define ADC_TASK_H

/*_____ I N C L U D E S ____________________________________________________*/

/*_____ M A C R O S ________________________________________________________*/

//! select ADC channel
#define Set_ADC_Channel(Channel) (ADMUX &= ( (1<<REFS1) | (1<<REFS0) | (1<<ADLAR)), \
                                 ADMUX |=  Channel & ((1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (1<<MUX0)))
//! Start a new ADC acquistion
#define ADC_start_conv()         (ADCSRA |= (1<<ADSC))

//! Check end conversion interrupt flag
#define ADC_end_conv()           ((ADCSRA & (1<<ADIF)) == (1<<ADIF)) 

//! reset adc flag and start a new conversion
#define ADC_clear_end_conv_flag() (ADCSRA |= (1<<ADIF))  

//! ADC data register
#define ADC_data_reg()            (ADC)


/*_____ D E F I N I T I O N S ______________________________________________*/
//! @typedef ADC_state_t ADC status definitions
//! ADC_state_t is used to schedule ADC acquisitions
typedef enum                    
{
  ADC_INIT_TASK,                //!< Start current measurement
  ADC_WAIT_CURRENT_MEAS,        //!< Wait current measurement aquisition
  ADC_WAIT_SPEED_SET_MEAS,      //!< Wait desired speed measurement aquisition
  ADC_WAIT_VBAT_MEAS,           //!< Wait Vbat end conversion  
}ADC_state_t;           // ADC conversions state machine type definition


// @defgroup ADC_channels ADC channels definitions
// @{
#define   ADC0                    0x00
#define   ADC1                    (                         (1<<MUX0) )
#define   ADC2                    (             (1<<MUX1)             )
#define   ADC3                    (             (1<<MUX1) | (1<<MUX0) )
#define   ADC4                    ((1<<MUX2)                          )
#define   ADC5                    ((1<<MUX2)              | (1<<MUX0) )
#define   ADC6                    ((1<<MUX2) |  (1<<MUX1)             )
#define   ADC7                    ((1<<MUX2) |  (1<<MUX1) | (1<<MUX0) )
// @}


/*_____ G L O B A L S ______________________________________________________*/

/*_____ P R O T O T Y P E S - D E C L A R A T I O N ________________________*/

void ADC_Init(void);                          // ADC initialization
void ADC_task(void);                          // Manages ADC acquisitions
unsigned int adc_get_speed(void);             // Returns speed set value
unsigned int adc_get_current(void);           // Returns measured current
unsigned int adc_get_V_bat(void);             // Returns measured V_bat
#endif //ADC_TASK_H

⌨️ 快捷键说明

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