Pins and devices refactoring in progress

This commit is contained in:
Emanuele Trabattoni
2026-03-26 18:22:22 +01:00
parent 68ed8a2282
commit a0710f7ee7
7 changed files with 314 additions and 225 deletions

View File

@@ -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());
}