Pins and devices refactoring in progress
This commit is contained in:
@@ -6,33 +6,53 @@
|
||||
#include <Adafruit_SSD1306.h>
|
||||
#include <PCA95x5.h>
|
||||
|
||||
// ADC Channel mapping
|
||||
#define PICKUP_IN_A12 SING_0
|
||||
#define PICKUP_IN_A34 SING_1
|
||||
#define PICKUP_OUT_A12 SING_2
|
||||
#define PICKUP_OUT_A34 SING_3
|
||||
// ADC Channel mapping Ignition A
|
||||
#define IN_A12_P SING_0
|
||||
#define IN_A12_N SING_1
|
||||
#define IN_A34_P SING_2
|
||||
#define IN_A34_N SING_3
|
||||
#define OUT_A12_P SING_4
|
||||
#define OUT_A12_N SING_5
|
||||
#define OUT_A34_P SING_6
|
||||
#define OUT_A34_N SING_7
|
||||
|
||||
#define PICKUP_IN_B12 SING_4
|
||||
#define PICKUP_IN_B34 SING_5
|
||||
#define PICKUP_OUT_B12 SING_6
|
||||
#define PICKUP_OUT_B34 SING_7
|
||||
// ADC Channel mapping Ignition B
|
||||
#define IN_A12_P SING_0
|
||||
#define IN_A12_N SING_1
|
||||
#define IN_A34_P SING_2
|
||||
#define IN_A34_N SING_3
|
||||
#define OUT_A12_P SING_4
|
||||
#define OUT_A12_N SING_5
|
||||
#define OUT_A34_P SING_6
|
||||
#define OUT_A34_N SING_7
|
||||
|
||||
struct Devices {
|
||||
AD5292* pot;
|
||||
ADS1256* adc;
|
||||
AD5292* pot_a, pot_b;
|
||||
ADS1256* adc_a, adc_b;
|
||||
Adafruit_SSD1306* lcd;
|
||||
PCA9555* io;
|
||||
};
|
||||
|
||||
float adcReadChannel(ADS1256* adc, const uint32_t ch){
|
||||
adc->setMUX(PICKUP_IN_A12);
|
||||
inline float adcAReadChannel(ADS1256* adc, const uint32_t ch){
|
||||
adc->setMUX(ch);
|
||||
// scarta 3 conversioni
|
||||
for (int i = 0; i < 3; i++) {
|
||||
while (digitalRead(ADC_DRDY));
|
||||
while (digitalRead(ADC_A_DRDY));
|
||||
adc->readSingle();
|
||||
}
|
||||
|
||||
// ora lettura valida a 30kSPS → ~100 µs di settling
|
||||
while (digitalRead(ADC_DRDY));
|
||||
while (digitalRead(ADC_A_DRDY));
|
||||
return adc->convertToVoltage(adc->readSingle());
|
||||
}
|
||||
|
||||
inline float adcBReadChannel(ADS1256* adc, const uint32_t ch){
|
||||
adc->setMUX(ch);
|
||||
// scarta 3 conversioni
|
||||
for (int i = 0; i < 3; i++) {
|
||||
while (digitalRead(ADC_B_DRDY));
|
||||
adc->readSingle();
|
||||
}
|
||||
// ora lettura valida a 30kSPS → ~100 µs di settling
|
||||
while (digitalRead(ADC_B_DRDY));
|
||||
return adc->convertToVoltage(adc->readSingle());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user