Диференціальне включення АЦП Arduino DUE (ADC DUE differential)

Конструкції та прграмування ARDUINO DUE
Відповісти
Аватар користувача
radioman
Site Admin
Повідомлень: 96
З нами з: 28 вересня 2020, 12:01
Дякував (ла): 6 разів
Подякували: 2 рази

Диференціальне включення АЦП Arduino DUE (ADC DUE differential)

Повідомлення radioman »

АЦП мікроконтролера Arduino DUE можна включити не тільки в Single Ended Mode а і у диференціальному режимі. Для цього у скетч необхідно внести незначні зміни:
1) прописати диференційний режим (для прикладу між А0 і А1 - 6 канал)

Код: Виділити все

//Differential mode for channels 7 and 6 (6 - 7); Gain = 0.5
//AD7 will be automatically enabled for differential operation
  
  ADC->ADC_COR = ADC_COR_DIFF6 |
                 ADC_COR_OFF6;
                 ADC->ADC_IER = ADC_IER_EOC6;
2)згідно даташиту, коефіцієнт підсилення в цьому режимі встановлюється, за замовчуванням, 0.5; для вирішення деяких завдань, коефіцієнт підсилення можна змінити за допомогою біта GAIN регістра ADC_CGR:
Differential Mode
Differential Mode
для прикладу - 1

Код: Виділити все

ADC->ADC_CGR = 0x15555555; // Gain = 1, HEX 15555555 = BIN  00010101010101010101010101010101
3) запуск по перериванню

Код: Виділити все

NVIC_EnableIRQ(ADC_IRQn);
ADC->ADC_CHER |= ADC_CHER_CH6 | ADC_CHER_CH7;    // Enable Channels 7,6 = A0,A1
І зміни в самому обробнику переривань (читаємо дані з 6 каналу):

Код: Виділити все

ResultA0 = ADC->ADC_CDR[6];
Відповісти