40.7.2.3. Použití AD převodníku

AVR/Examples/AD — Analog-Digital Example

uint16_t ReadADC() {
    uint16_t result = 0;        /* Temporary variable */
    PRR ^= (1<<PRADC);    /* Set the Power Reduction ADC-bit to 0 */

    ADMUX = (0<<MUX3)|(1<<MUX2)|(0<<MUX1)|(0<<MUX0); /* ADC4 and AREF voltage reference */
    DIDR0 = (1<<ADC4D); /* Disable the digital buffer at this pin */

    ADCSRA = (1<<ADEN)|(1<<ADSC);       /* Start conversion */
    while(ADCSRA & (1<<ADSC))           /* Wait until the conversion is finished */
        ;

    result = (unit16_t)ADCL;            /* Get the lover 8 bits of the result*/
    result += (((unit16_t)ADCH)<<8);    /*+ upper 2 bits.*/

    ADCSRA = 0x00;                      /* Turn off the ADC module */
    PRR |= (1<<PRADC);

    return result;
}
Licence Creative Commons
Elektronika a počítače, jejímž autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .