Доступ к температурному сенсору atmega328

Тема в разделе "Arduino & Shields", создана пользователем Ariadna-on-Line, 30 мар 2021.

  1. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Есть еще один вопрос - разбираюсь с программой оцифровки. В коде присутствует обработчик прерывания от АЦП.
    Код (C++):
    ISR(ADC_vect){

    if(ADCH==5){            //
    _delay_ms(50);
    digitalWrite(8, LOW);
    _delay_ms(500);
    digitalWrite(8, HIGH);
    }
    }
    Я предполагаю, что это сигнализация о перегрузке по входу. Какой в нем смысл, если в ADCH только два младших бита ??? То есть ADCH==3 - это предел !
     
    Последнее редактирование: 31 мар 2021
  2. parovoZZ

    parovoZZ Гуру

    Кто сказал???
    Может быть так
    upload_2021-3-31_11-54-16.png
    А может быть и так
    upload_2021-3-31_11-54-40.png
     
    Ariadna-on-Line нравится это.
  3. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Тооочно. Забыл про левое-правое выравнивание !
    Это в Питере. А если в Нижнем Поволжье ? )))))))))) Тут местами, за счет геометрии препятствий, образуются воздушные линзы, фокусирующие свет не хуже стекла. Поэтому пожары загораются.
    Большое всем спасибо.
     
    Последнее редактирование: 31 мар 2021
  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Как советовал akl, исправил в файле C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino\wiring_analog.c
    строчку ADMUX = (analog_reference << 6) | (pin & 0x07);
    на ADMUX = (analog_reference << 6) | (pin & 0x0F);
    Путать встроенный термодатчик с входом А0 перестало. Заниматься калибровкой датчика пока нет желания.
    Всем спасибо.