ADC_task.c File Reference

#include "config.h"
#include "ADC_task.h"

Include dependency graph for ADC_task.c:

Go to the source code of this file.

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

Variables

unsigned int Speed_set
 ADC conversion result.
unsigned int current
 Measured current value (Vshunt signal).
unsigned int V_bat
 Battery supply voltage measurement.


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 }


Variable Documentation

unsigned int Speed_set

ADC conversion result.

Definition at line 45 of file ADC_task.c.

Referenced by adc_get_speed(), and ADC_task().

unsigned int current

Measured current value (Vshunt signal).

Definition at line 46 of file ADC_task.c.

Referenced by adc_get_current(), and ADC_task().

unsigned int V_bat

Battery supply voltage measurement.

Definition at line 47 of file ADC_task.c.

Referenced by adc_get_V_bat(), and ADC_task().


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