mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-02-23 08:13:56 -04:00
AP_HAL: added voltage_latest() interface
this will be used for reading the 5V rail
This commit is contained in:
parent
4f33e4e114
commit
a587b1140a
@ -28,6 +28,10 @@ public:
|
||||
// against a reference voltage
|
||||
virtual float voltage_average() = 0;
|
||||
|
||||
// return a voltage from 0.0 to 5.0V, scaled
|
||||
// against a reference voltage
|
||||
virtual float voltage_latest() = 0;
|
||||
|
||||
// return a voltage from 0.0 to 5.0V, assuming a ratiometric
|
||||
// sensor
|
||||
virtual float voltage_average_ratiometric() = 0;
|
||||
|
@ -24,6 +24,10 @@ float ADCSource::voltage_average() {
|
||||
return (5.0f/1023.0f) * read_average();
|
||||
}
|
||||
|
||||
float ADCSource::voltage_latest() {
|
||||
return (5.0f/1023.0f) * read_latest();
|
||||
}
|
||||
|
||||
float ADCSource::read_latest() {
|
||||
switch (_pin) {
|
||||
case ANALOG_INPUT_BOARD_VCC:
|
||||
|
@ -19,6 +19,7 @@ public:
|
||||
float read_latest();
|
||||
void set_pin(uint8_t p);
|
||||
float voltage_average();
|
||||
float voltage_latest();
|
||||
float voltage_average_ratiometric() { return voltage_average(); }
|
||||
void set_stop_pin(uint8_t pin) {}
|
||||
void set_settle_time(uint16_t settle_time_ms) {}
|
||||
|
@ -14,6 +14,10 @@ float EmptyAnalogSource::voltage_average() {
|
||||
return 5.0 * _v / 1024.0;
|
||||
}
|
||||
|
||||
float EmptyAnalogSource::voltage_latest() {
|
||||
return 5.0 * _v / 1024.0;
|
||||
}
|
||||
|
||||
float EmptyAnalogSource::read_latest() {
|
||||
return _v;
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ public:
|
||||
void set_stop_pin(uint8_t p);
|
||||
void set_settle_time(uint16_t settle_time_ms);
|
||||
float voltage_average();
|
||||
float voltage_latest();
|
||||
float voltage_average_ratiometric() { return voltage_average(); }
|
||||
private:
|
||||
float _v;
|
||||
|
@ -16,6 +16,11 @@ float SMACCMAnalogSource::voltage_average() {
|
||||
return (5.0/1024.0) * read_average();
|
||||
}
|
||||
|
||||
float SMACCMAnalogSource::voltage_latest() {
|
||||
// this assumes 5.0V scaling and 1024 range
|
||||
return (5.0/1024.0) * read_latest();
|
||||
}
|
||||
|
||||
float SMACCMAnalogSource::read_latest() {
|
||||
return _v;
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ public:
|
||||
float read_latest();
|
||||
void set_pin(uint8_t p);
|
||||
float voltage_average();
|
||||
float voltage_latest();
|
||||
float voltage_average_ratiometric() { return voltage_average(); }
|
||||
void set_stop_pin(uint8_t p) {}
|
||||
void set_settle_time(uint16_t settle_time_ms) {}
|
||||
|
Loading…
Reference in New Issue
Block a user