Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.02.2019, 10:49   #11
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

PHP код:
//**********************// Настройки АЦП для работы с прерыванием после преобразования**********************
void setADCFreeRunning() 
{
  
samplePos 0// Reset sample counter
  // Init ADC free-run mode; f = ( 16MHz/prescaler ) / 13 cycles/conversion
   // 00 AREF, 01 AVcc с конденсатором на AREF, 10 Резерв, 11 Внутренний 1.1В источник конденсатором на AREF
  
ADMUX  ADC_CHANNEL// Channel sel, right-adj, use AREF pin
  
ADMUX |= _BV(REFS0); //внутрений источник опрного напряжений 5V  // 1.1В (1 << REFS1)|(1 << REFS0)
  // Start a conversion. We want to discard the first conversion after
  // changing the voltage reference reference.
  
ADCSRB 0;
  
ADCSRA _BV(ADEN)  | // ADC enable
           
_BV(ADSC);   // ADC start

  
while (ADCSRA _BV(ADSC)); // ждем завершения преобразования

  // Now start auto-triggered conversions with interrupt enabled.
  
ADCSRA _BV(ADEN)  | // ADC enable
           
_BV(ADSC)  | // ADC start
           
_BV(ADATE) | // Auto trigger
           
_BV(ADIE)  | // Interrupt enable
           
_BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0); // 128:1 / 13 = 9615 Hz
}

void setADCDefault() // Конфигурируем АЦП для стандартной работы ардуино
{
  
// Init ADC free-run mode; f = ( 16MHz/prescaler ) / 13 cycles/conversion
  
ADMUX  0;
  
ADMUX _BV(REFS0); //внутрений источник опрного напряжений 5V  // 1.1В (1 << REFS1)|(1 << REFS0)
  
ADCSRA _BV(ADEN)  | // ADC enable
           
_BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0); // 128:1 / 13 = 9615 Hz
  
ADCSRB 0;                // Free run mode, no high MUX bit
  
analogRead(PARM_POT); // отказаться от первого преобразования

ADMUX |= (1 << REFS1)|(1 << REFS0); //внутрений источник опрного напряжений 1.1В
Хотя 1,1В маловато, наверно придется внешний источник AREF подключать, что тоже несет некоторые усложнения

ADMUX |= (0 << REFS0) | (0 << REFS1); // Включаем внешний источник ИОН
Можно попробовать на вход aRef подключить 3,3В, которые есть на борту ардуины.
И на крайний вариант можно подключить делитель из двух резисторов на aRef, в цветомузыке не нужна супер точность АЦП.
Admin вне форума   Ответить с цитированием
 


Здесь присутствуют: 22 (пользователей: 0 , гостей: 22)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:38. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика