Диференціальне включення АЦП Arduino DUE (ADC DUE differential)
Додано: 17 листопада 2020, 11:51
АЦП мікроконтролера Arduino DUE можна включити не тільки в Single Ended Mode а і у диференціальному режимі. Для цього у скетч необхідно внести незначні зміни:
1) прописати диференційний режим (для прикладу між А0 і А1 - 6 канал)
2)згідно даташиту, коефіцієнт підсилення в цьому режимі встановлюється, за замовчуванням, 0.5; для вирішення деяких завдань, коефіцієнт підсилення можна змінити за допомогою біта GAIN регістра ADC_CGR:
для прикладу - 1
3) запуск по перериванню
І зміни в самому обробнику переривань (читаємо дані з 6 каналу):
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;
Код: Виділити все
ADC->ADC_CGR = 0x15555555; // Gain = 1, HEX 15555555 = BIN 00010101010101010101010101010101
Код: Виділити все
NVIC_EnableIRQ(ADC_IRQn);
ADC->ADC_CHER |= ADC_CHER_CH6 | ADC_CHER_CH7; // Enable Channels 7,6 = A0,A1
Код: Виділити все
ResultA0 = ADC->ADC_CDR[6];