Главная страница
Навигация по странице:

  • РЕГИСТР ВЫБОРА КАНАЛА АЦП – ADMUX

  • ADMUX R/WR/WR/WR/WR/WR/WR/WR/WR/WInit.0 00 00 00 0REFS1 REFS0

  • ADMUX: ВЫРАВНИВАНИЕ РЕЗУЛЬТАТА АЦП

  • РЕГИСТР НАСТРОЙКИ АЦП – ADCSRA

  • ADCSRA R/WR/WR/WR/WR/WR/WR/WR/WR/WInit.0 00 00 00 0 7ADCSRA: ВЫБОР ЧАСТОТЫ ТАКТИРОВАНИЯ МОДУЛЯ АЦП

  • ADPS2 ADPS1 ADPS0 Описание

  • РАБОТА В СИМУЛЯТОРЕ (1/2)

  • РАБОТА В СИМУЛЯТОРЕ (2/2) 6. Встроенный аналого-цифровой преобразователь микроконтроллера/* объявление заголовков прочих функций */ uint16_t adc_res=0; ISR(ADC_vect)

  • (1 ADMUX=4|(1 LCD_init(); showMe(words); sei(); while (1) {

  • ПРИМЕР КОДА НА ЯЗЫКЕ СИ 6. Встроенный аналого-цифровой преобразователь микроконтроллераuin16_t readAdc(uint8_t channel) { uint8_t lowBitValue;

  • Микропроцессорная техника в мехатронике и робототехнике


    Скачать 1.14 Mb.
    НазваниеМикропроцессорная техника в мехатронике и робототехнике
    Дата26.12.2022
    Размер1.14 Mb.
    Формат файлаpdf
    Имя файлаEp9_ADC(1).pdf
    ТипРешение
    #863998

    МИКРОПРОЦЕССОРНАЯ ТЕХНИКА В
    МЕХАТРОНИКЕ И РОБОТОТЕХНИКЕ
    Встроенный аналого-цифровой преобразователь микроконтроллера
    Михаил Копычев

    2
    ОПРЕДЕЛЕНИЕ АЦП
    6. Встроенный аналого-цифровой преобразователь микроконтроллера
    АЦП — устройство, преобразующее входной аналоговый сигнал в дискретный код (цифровой сигнал).
    АЦП имеет ряд характеристик:
    • Разрешение – минимальное изменение величины аналогового сигнала, которое может быть преобразовано данным АЦП. В случае единичного измерения без учёта шумов разрешение напрямую определяется разрядностью АЦП.
    • Разрядность АЦП характеризует количество дискретных значений, которые преобразователь может выдать на выходе. В двоичных АЦП измеряется в битах.
    • Частота дискретизации характеризует частоту выборки цифровых значений из непрерывного аналогового сигнала.
    ATmega128A имеет встроенный 10-и разрядный АЦП последовательного приближения.

    3
    ADMUX'>РЕГИСТР ВЫБОРА КАНАЛА АЦП – ADMUX
    6. Встроенный аналого-цифровой преобразователь микроконтроллера
    Разряды REFS1:0 определяют используемое опорное напряжение АЦП.
    Bit
    7 6
    5 4
    3 2
    1 0
    REFS1
    REFS0
    ADLAR
    MUX4
    MUX3
    MUX2
    MUX1
    MUX0
    ADMUX
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    Init.
    0 0
    0 0
    0 0
    0 0
    REFS1
    REFS0
    Используемое опорное напряжение
    0 0
    AREF
    0 1
    AVCC
    1 0
    Зарезервировано
    1 1
    Внутренний ИОН на 2.56 В

    4
    ADMUX: ВЫРАВНИВАНИЕ РЕЗУЛЬТАТА АЦП
    6. Встроенный аналого-цифровой преобразователь микроконтроллера
    Разряд ADLAR (ADC Left Adjust Result) определяет выравнивание результата преобразования в регистрах ADCH и ADCL.
    Bit
    15 14 13 12 11 10 9
    8
    -
    -
    -
    -
    -
    -
    ADC9
    ADC8
    ADCH
    ADC7
    ADC6
    ADC5
    ADC4
    ADC3
    ADC2
    ADC1
    ADC0
    ADCL
    Bit
    7 6
    5 4
    3 2
    1 0
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    Init.
    0 0
    0 0
    0 0
    0 0
    Bit
    15 14 13 12 11 10 9
    8
    ADC9
    ADC8
    ADC7
    ADC6
    ADC5
    ADC4
    ADC3
    ADC2
    ADCH
    ADC1
    ADC0
    -
    -
    -
    -
    -
    -
    ADCL
    Bit
    7 6
    5 4
    3 2
    1 0
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    Init.
    0 0
    0 0
    0 0
    0 0
    ADLAR = 0
    ADLAR = 1

    5
    ADMUX: ВЫБОР КАНАЛА АЦП
    6. Встроенный аналого-цифровой преобразователь микроконтроллера
    Разряды MUX4:0 выбирают канал АЦП. Их комбинации для однополярных каналов представлены в таблице. В случае однополярных каналов комбинация битов MUX соответствует двоичному коду номера канала.
    MUX4
    MUX3
    MUX2
    MUX1
    MUX0
    Описание
    0 0
    0 0
    0
    ADC0 0
    0 0
    0 1
    ADC1 0
    0 0
    1 0
    ADC2 0
    0 0
    1 1
    ADC3 0
    0 1
    0 0
    ADC4 0
    0 1
    0 1
    ADC5 0
    0 1
    1 0
    ADC6 0
    0 1
    1 1
    ADC7

    6
    ADCSRA'>РЕГИСТР НАСТРОЙКИ АЦП – ADCSRA
    6. Встроенный аналого-цифровой преобразователь микроконтроллера
    Разряд ADEN. В случае записи в него логической единицы происходит включение модуля АЦП.
    Разряд ADSC. В случае записи в него логической единицы начинается процесс преобразования аналогового сигнала в цифровой код.
    Разряд ADFR. В случае записи в него логической единицы, АЦП переходит в режим автоматического перезапуска.
    Разряд ADIF - это флаг прерывания АЦП, устанавливающийся после завершения преобразования АЦП и обновления регистров данных. Для сброса флага необходимо записать в него логическую единицу.
    Разряд ADIE. Запись логической единицы в этот бит разрешает прерывания от АЦП.
    Разряды ADPS2:0 определяют частоту тактирования модуля АЦП, определяющую частоту дискретизации
    АЦП.
    Bit
    7 6
    5 4
    3 2
    1 0
    ADEN
    ADSC
    ADFR
    ADIF
    ADIE
    ADPS2
    ADPS1
    ADPS0
    ADCSRA
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    R/W
    Init.
    0 0
    0 0
    0 0
    0 0

    7
    ADCSRA: ВЫБОР ЧАСТОТЫ ТАКТИРОВАНИЯ
    МОДУЛЯ АЦП
    6. Встроенный аналого-цифровой преобразователь микроконтроллера
    Соотношение между значениями разрядов ADPS2:0 и тактовой частотой АЦП представлено в таблице.
    ADPS2
    ADPS1
    ADPS0
    Описание
    0 0
    0
    Без предделителя
    0 0
    1
    С предделителем на 2 0
    1 0
    С предделителем на 4 0
    1 1
    С предделителем на 8 1
    0 0
    С предделителем на 16 1
    0 1
    С предделителем на 32 1
    1 0
    С предделителем на 64 1
    1 1
    С предделителем на 128

    8
    РАБОТА В СИМУЛЯТОРЕ (1/2)
    6. Встроенный аналого-цифровой преобразователь микроконтроллера
    Задание:
    написать программу, которая бы выводила результат аналого- цифрового преобразования на
    ЖКИ.
    Дополнительно программа может обеспечивать изменение цвета RGB светодиода согласно изменению значения аналогового сигнала.

    9
    РАБОТА В СИМУЛЯТОРЕ (2/2)
    6. Встроенный аналого-цифровой преобразователь микроконтроллера
    /* объявление заголовков прочих функций */
    uint16_t adc_res=0;
    ISR(ADC_vect)
    {
    adc_res=ADCL|(ADCH<<8);
    ADCSRA|=(1<
    }
    int main(void)
    {
    uint8_t words[] = {"ADC value:"}, i, j;
    uint16_t brightness;
    /* настройка регистра DDRE и таймера №3 */
    /* АЦП вкл., начать 1-ое преобразование,
    предделитель на 32 */
    ADCSRA =
    (1<
    ADMUX=4|(1<
    LCD_init();
    showMe(words);
    sei();
    while (1)
    {
    brightness = adc_res;
    /* зажигаем диод чрез OCR3xH/L */
    LCD_cmd((1 << 7) | 11);
    /* выводим на экран значение brightness */
    }
    }

    10
    СЧИТЫВАНИЕ ЗНАЧЕНИЯ АЦП
    6. Встроенный аналого-цифровой преобразователь микроконтроллера
    Задание: написать программу управления цветом и яркостью RGB светодиода (каналы OC3A, OC3B и
    OC3C таймера/счётчика 3) с помощью ползункового потенциометра, подключённого к 3-му каналу АЦП,
    используя 10-и битный результат преобразования.

    11
    ПРИМЕР КОДА НА ЯЗЫКЕ СИ
    6. Встроенный аналого-цифровой преобразователь микроконтроллера
    uin16_t readAdc(uint8_t channel)
    {
    uint8_t lowBitValue;
    ADMUX = (1 << REFS0) | channel;
    //выбор канала и источника питания АЦП
    ADCSRA |= (1 << ADSC);
    //начало преобразования аналогового сигнала
    while((ADCSRA & (1 << ADIF))==0);
    //ожидание окончания преобразования
    ADCSRA |= (1 << ADIF);
    //сброс флага прерывания по окончании преобразования
    lowBitValue = ADCL;
    //чтение младшей части результата
    return((ADCH<<8) | lowBitValue);
    //чтение всего результата
    }
    int main(void)
    {
    DDRE = 0b00111000;
    TCCR3A = (1<
    TCCR3B = (1 << CS30);
    //включение таймера
    ADCSRA = (1 << ADEN);
    //включения АЦП
    while (1)
    {
    OCR3BH = readAdc(3) >> 8;
    OCR3BL = readAdc(3);
    }
    }
    Задание: управление яркостью RGB светодиода с помощью ползункового потенциометра


    написать администратору сайта