00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifdef __ICCAVR__ // IAR C Compiler
00013 #include "config.h"
00014 #include "inavr.h"
00015 #endif
00016
00017 #ifdef __GNUC__ // GNU C Compiler
00018 #include "config_for_gcc.h"
00019 #include <avr/io.h>
00020 #include <avr/interrupt.h>
00021 #endif
00022 #include "adc.h"
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 volatile U8 Flag_IT_ADC = 0 ;
00034
00035
00036
00044 void ADC_Init(void)
00045 {
00046
00047
00048 DIDR0 = (0<<ADC7D) \
00049 | (0<<ADC6D ) \
00050 | (0<<ADC5D ) \
00051 | (0<<ADC4D ) \
00052 | (0<<ADC3D ) \
00053 | (0<<ADC2D ) \
00054 | (0<<ADC1D ) \
00055 | (0<<ADC0D ) \
00056 ;
00057
00058
00059 DIDR1 = (0<<ACMP0D) \
00060 | (1<<AMP0PD) \
00061 | (1<<AMP0ND) \
00062 | (0<<ADC10D) \
00063 | (1<<ADC9D) \
00064 | (1<<ADC8D)
00065 ;
00066
00067
00068 AMP0CSR = (1 <<AMP0EN) \
00069 | (0 <<AMP0IS) \
00070 | (AMP_GAIN_5 <<AMP0G0) \
00071 | (AMP_TRIG_ON_PSC0 <<AMP0TS0) \
00072 ;
00073
00074
00075 AMP1CSR = (1 <<AMP1EN) \
00076 | (0 <<AMP1IS) \
00077 | (AMP_GAIN_5 <<AMP1G0) \
00078 | (AMP_TRIG_ON_PSC0 <<AMP1TS0) \
00079 ;
00080
00081
00082 ADMUX = (ADC_VREF_INTERNAL <<REFS0) \
00083 | (0 <<ADLAR) \
00084 | (ADC_INPUT_AMP1 <<MUX0) \
00085 ;
00086
00087 ADCSRB = (1<<ADHSM) \
00088 | (0<<ADASCR) \
00089 | (ADC_TRIG_SRC_FREE_RUNNING <<ADTS0) \
00090 ;
00091
00092 ADCSRA = (1<<ADEN) \
00093 | (0<<ADSC) \
00094 | (0<<ADATE) \
00095 | (1<<ADIE) \
00096 | (ADC_PRESCALER_16 <<ADPS0) \
00097 ;
00098
00099 }
00100
00101
00109 void Start_ADC(void)
00110 {
00111 ADCSRA = (1<<ADEN) \
00112 | (1<<ADSC) \
00113 | (0<<ADATE) \
00114 | (1<<ADIE) \
00115 | (ADC_PRESCALER_16 <<ADPS0) \
00116 ;
00117
00118 }
00119
00120
00128 S16 read_acquisition(void)
00129 {
00130 Union16 resultADC ;
00131
00132 LSB(resultADC) = ADCL ;
00133 MSB(resultADC) = ADCH ;
00134
00135 return (resultADC.w) ;
00136 }
00137
00138
00145 #ifdef __ICCAVR__ // IAR C Compiler
00146 #pragma vector = ADC_vect
00147 __interrupt void Read_Measure(void)
00148 #endif
00149 #ifdef __GNUC__ // GNU C Compiler
00150 ISR(ADC_vect)
00151 #endif
00152 {
00153 Flag_IT_ADC=1;
00154 }
00155