ADC_task.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
#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) )

Defines

#define Set_ADC_Channel(Channel)
 select ADC channel
#define ADC_start_conv()   (ADCSRA |= (1<<ADSC))
 Start a new ADC acquistion.
#define ADC_end_conv()   ((ADCSRA & (1<<ADIF)) == (1<<ADIF))
 Check end conversion interrupt flag.
#define ADC_clear_end_conv_flag()   (ADCSRA |= (1<<ADIF))
 reset adc flag and start a new conversion
#define ADC_data_reg()   (ADC)
 ADC data register.

Enumerations

enum  ADC_state_t { ADC_INIT_TASK, ADC_WAIT_CURRENT_MEAS, ADC_WAIT_SPEED_SET_MEAS, ADC_WAIT_VBAT_MEAS }

Functions

void ADC_Init (void)
 ADC_Init routine: Set-up ADC to acquire speed set value Set-up ADC with following:
  • conversion result right ajusted in ADC data register
  • Reference voltage is AVCC with external capacitor at AREF pin
  • ADC0 selected
  • enable ADC
  • ADC clock set to clk/128
  • Disable ADC0 (PC0) digital input buffer INPUTS/OUTPUTS :
  • ADMUX Out
  • ADCSRA Out
  • DIDR0 Out.

void ADC_task (void)
 ADC_task manages Current, desired speed and Vbat measurements Schedules all acquisitions. When an acquisition is complete, get the result and start next one.
unsigned int adc_get_speed (void)
 get_speed Returns desired speed value
unsigned int adc_get_current (void)
 get_current Returns measured current
unsigned int adc_get_V_bat (void)
 get_V_bat Returns measured supply voltage


Define Documentation

#define Set_ADC_Channel ( Channel   ) 

Value:

(ADMUX &= ( (1<<REFS1) | (1<<REFS0) | (1<<ADLAR)), \
                                 ADMUX |=  Channel & ((1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (1<<MUX0)))
select ADC channel

Definition at line 40 of file ADC_task.h.

Referenced by ADC_task().

 
#define ADC_start_conv (  )     (ADCSRA |= (1<<ADSC))

Start a new ADC acquistion.

Definition at line 43 of file ADC_task.h.

Referenced by ADC_task().

 
#define ADC_end_conv (  )     ((ADCSRA & (1<<ADIF)) == (1<<ADIF))

Check end conversion interrupt flag.

Definition at line 46 of file ADC_task.h.

Referenced by ADC_task().

 
#define ADC_clear_end_conv_flag (  )     (ADCSRA |= (1<<ADIF))

reset adc flag and start a new conversion

Definition at line 49 of file ADC_task.h.

Referenced by ADC_task().

 
#define ADC_data_reg (  )     (ADC)

ADC data register.

Definition at line 52 of file ADC_task.h.

Referenced by ADC_task().

#define ADC0   0x00

Definition at line 69 of file ADC_task.h.

Referenced by ADC_task().

#define ADC1   ( (1<<MUX0) )

Definition at line 70 of file ADC_task.h.

#define ADC2   ( (1<<MUX1) )

Definition at line 71 of file ADC_task.h.

#define ADC3   ( (1<<MUX1) | (1<<MUX0) )

Definition at line 72 of file ADC_task.h.

#define ADC4   ((1<<MUX2) )

Definition at line 73 of file ADC_task.h.

#define ADC5   ((1<<MUX2) | (1<<MUX0) )

Definition at line 74 of file ADC_task.h.

#define ADC6   ((1<<MUX2) | (1<<MUX1) )

Definition at line 75 of file ADC_task.h.

Referenced by ADC_task().

#define ADC7   ((1<<MUX2) | (1<<MUX1) | (1<<MUX0) )

Definition at line 76 of file ADC_task.h.

Referenced by ADC_task().


Enumeration Type Documentation

enum ADC_state_t

Enumerator:
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.

Definition at line 58 of file ADC_task.h.

00059 {
00060   ADC_INIT_TASK,                
00061   ADC_WAIT_CURRENT_MEAS,        
00062   ADC_WAIT_SPEED_SET_MEAS,      
00063   ADC_WAIT_VBAT_MEAS,           
00064 }ADC_state_t;           // ADC conversions state machine type definition


Function Documentation

void ADC_Init ( void   ) 

ADC_Init routine: Set-up ADC to acquire speed set value Set-up ADC with following:

Definition at line 65 of file ADC_task.c.

Referenced by main().

00066 {
00067   /* init ADC */
00068   ADMUX |= (1 << REFS0);     // conversion result right ajusted in ADC, AVCC with external capacitor at AREF pin, ADC0 selected
00069   ADCSRA |= (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // enable ADC, division factor : clk/128
00070   DIDR0 |= (1<<ADC0D);      // Disable ADC0 digital input buffer
00071 }

void ADC_task ( void   ) 

ADC_task manages Current, desired speed and Vbat measurements Schedules all acquisitions. When an acquisition is complete, get the result and start next one.

Definition at line 78 of file ADC_task.c.

References ADC0, ADC6, ADC7, ADC_clear_end_conv_flag, ADC_data_reg, ADC_end_conv, ADC_INIT_TASK, ADC_start_conv, ADC_WAIT_CURRENT_MEAS, ADC_WAIT_SPEED_SET_MEAS, ADC_WAIT_VBAT_MEAS, current, Set_ADC_Channel, Speed_set, and V_bat.

Referenced by main().

00079 {
00080   static ADC_state_t ADC_state = ADC_INIT_TASK;  // ADC state machine init
00081   
00082   switch(ADC_state)
00083   {
00084   case ADC_INIT_TASK:                         // Start current measurement
00085     Set_ADC_Channel(ADC0);                    // Select ADC0, Vshunt signal
00086     ADC_start_conv();                         // Start conversion
00087     ADC_state = ADC_WAIT_CURRENT_MEAS;
00088     break;
00089     
00090   //----------------------------------------------------------------------------
00091   case ADC_WAIT_CURRENT_MEAS:                 // Wait current measurement aquisition
00092     if(ADC_end_conv())                        // When ADC conversion is completed
00093     {
00094       ADC_clear_end_conv_flag();              // Clear end conv interrupt flag
00095       current = ADC_data_reg();               // Get Current in ADC data register  
00096       
00097       Set_ADC_Channel(ADC7);                  // Select ADC7, Potentiometer speed signal
00098       ADC_start_conv();                       // Start conversion
00099       ADC_state = ADC_WAIT_SPEED_SET_MEAS;
00100     }
00101     break;
00102   //----------------------------------------------------------------------------
00103     
00104   case ADC_WAIT_SPEED_SET_MEAS:               // Wait desired speed measurement aquisition
00105     if(ADC_end_conv())                        // When ADC conversion is completed
00106     {
00107       ADC_clear_end_conv_flag();              // Clear end conv interrupt flag
00108       Speed_set = ADC_data_reg();             // Get Speed in ADC data register  
00109       
00110       Set_ADC_Channel(ADC6);                  // Select ADC6, Vbat measure signal
00111       ADC_start_conv();                       // Start conversion
00112       ADC_state = ADC_WAIT_VBAT_MEAS;
00113     }
00114     break;
00115   //----------------------------------------------------------------------------
00116 
00117   case ADC_WAIT_VBAT_MEAS:
00118     if(ADC_end_conv())                        // When ADC conversion is completed
00119     {
00120       ADC_clear_end_conv_flag();              // Clear end conv interrupt flag
00121       V_bat = ADC_data_reg();                 // Get Speed in ADC data register  
00122       
00123       Set_ADC_Channel(ADC0);                  // Select ADC0, Vshunt (current) signal
00124       ADC_start_conv();                       // Start conversion
00125       ADC_state = ADC_WAIT_CURRENT_MEAS;
00126     }
00127     break;
00128   //----------------------------------------------------------------------------
00129   default:
00130     ADC_state = ADC_INIT_TASK;
00131     break;
00132   //----------------------------------------------------------------------------
00133   }
00134 }

unsigned int adc_get_speed ( void   ) 

get_speed Returns desired speed value

Definition at line 138 of file ADC_task.c.

References Speed_set.

Referenced by main().

00139 {
00140   return Speed_set;
00141 }

unsigned int adc_get_current ( void   ) 

get_current Returns measured current

Definition at line 145 of file ADC_task.c.

References current.

00146 {
00147   return current;
00148 }

unsigned int adc_get_V_bat ( void   ) 

get_V_bat Returns measured supply voltage

Definition at line 152 of file ADC_task.c.

References V_bat.

00153 {
00154   return V_bat;
00155 }


Generated on Wed Mar 14 10:53:32 2007 for Mega88_&_ATA6824_High_temperature_H-Bridge_system by  doxygen 1.4.7