forked from Archive/PX4-Autopilot
ADS1115 ADC: start internal ADC as well (#19880)
But only publish the system power.
This commit is contained in:
parent
c71cc5b815
commit
1e55b69fdb
|
@ -12,6 +12,7 @@ fi
|
|||
if param compare -s ADC_ADS1115_EN 1
|
||||
then
|
||||
ads1115 start -X
|
||||
board_adc start -n
|
||||
else
|
||||
board_adc start
|
||||
fi
|
||||
|
|
|
@ -39,8 +39,9 @@
|
|||
#include <nuttx/ioexpander/gpio.h>
|
||||
#endif
|
||||
|
||||
ADC::ADC(uint32_t base_address, uint32_t channels) :
|
||||
ADC::ADC(uint32_t base_address, uint32_t channels, bool publish_adc_report) :
|
||||
ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::hp_default),
|
||||
_publish_adc_report(publish_adc_report),
|
||||
_sample_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": sample")),
|
||||
_base_address(base_address)
|
||||
{
|
||||
|
@ -116,7 +117,10 @@ void ADC::Run()
|
|||
_samples[i].am_data = sample(_samples[i].am_channel);
|
||||
}
|
||||
|
||||
update_adc_report(now);
|
||||
if (_publish_adc_report) {
|
||||
update_adc_report(now);
|
||||
}
|
||||
|
||||
update_system_power(now);
|
||||
}
|
||||
|
||||
|
@ -352,7 +356,8 @@ int ADC::custom_command(int argc, char *argv[])
|
|||
|
||||
int ADC::task_spawn(int argc, char *argv[])
|
||||
{
|
||||
ADC *instance = new ADC(SYSTEM_ADC_BASE, ADC_CHANNELS);
|
||||
bool publish_adc_report = !(argc >= 2 && strcmp(argv[1], "-n") == 0);
|
||||
ADC *instance = new ADC(SYSTEM_ADC_BASE, ADC_CHANNELS, publish_adc_report);
|
||||
|
||||
if (instance) {
|
||||
_object.store(instance);
|
||||
|
@ -389,6 +394,7 @@ ADC driver.
|
|||
PRINT_MODULE_USAGE_NAME("adc", "driver");
|
||||
PRINT_MODULE_USAGE_COMMAND("start");
|
||||
PRINT_MODULE_USAGE_COMMAND("test");
|
||||
PRINT_MODULE_USAGE_PARAM_FLAG('n', "Do not publish ADC report, only system power", true);
|
||||
PRINT_MODULE_USAGE_DEFAULT_COMMANDS();
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -64,7 +64,7 @@ using namespace time_literals;
|
|||
class ADC : public ModuleBase<ADC>, public px4::ScheduledWorkItem
|
||||
{
|
||||
public:
|
||||
ADC(uint32_t base_address = SYSTEM_ADC_BASE, uint32_t channels = ADC_CHANNELS);
|
||||
ADC(uint32_t base_address = SYSTEM_ADC_BASE, uint32_t channels = ADC_CHANNELS, bool publish_adc_report = true);
|
||||
|
||||
~ADC() override;
|
||||
|
||||
|
@ -102,6 +102,8 @@ private:
|
|||
|
||||
static const hrt_abstime kINTERVAL{10_ms}; /**< 100Hz base rate */
|
||||
|
||||
const bool _publish_adc_report;
|
||||
|
||||
perf_counter_t _sample_perf;
|
||||
|
||||
unsigned _channel_count{0};
|
||||
|
@ -110,6 +112,7 @@ private:
|
|||
|
||||
uORB::Publication<adc_report_s> _to_adc_report{ORB_ID(adc_report)};
|
||||
uORB::Publication<system_power_s> _to_system_power{ORB_ID(system_power)};
|
||||
|
||||
#ifdef BOARD_GPIO_VDD_5V_COMP_VALID
|
||||
int _5v_comp_valid_fd {-1};
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue