Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uint16_t adc_read (void)
- {
- uint8_t i;
- uint16_t ADC_Val;
- ADCSRA = ADCSRA | (1<<ADEN); // Enable ADC
- ADCSRA = ADCSRA | (0<<ADPS0) | (1<<ADPS1) | (1<<ADPS2); // Dividing Factor 64
- ADMUX = ADMUX | (0<<REFS0) | (0<<REFS1); // AREF, Internal Vref turned off
- ADMUX = ADMUX | (0<<ADLAR); // 8Bit modus
- // Dummy Readout
- ADCSRA = ADCSRA | (1<<ADSC); // Start AD Conversion
- while (ADCSRA & (1<<ADSC)) // Wait for Conversion Complete
- {
- ;
- }
- ADC_Val = ADCW; // ADCW must be read out
- // Conversion
- ADC_Val = 0; // Discard Value
- for (i = 0; i < 9; i++) // Collecting measured values
- {
- ADCSRA = ADCSRA | (1<<ADSC); // Start AD Conversion
- while (ADCSRA & (1<<ADSC)) // Wait for Conversion Complete
- {
- ;
- }
- ADC_Val += ADCW;
- }
- ADCSRA = ADCSRA | (0<<ADEN); // Disable ADC
- ADC_Val /= 10;
- return ADC_Val;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement