SimpleFOClibrary 2.4.0
Loading...
Searching...
No Matches
current_sense/hardware_specific/generic_mcu.cpp
Go to the documentation of this file.
1#include "../hardware_api.h"
2#include "../../communication/SimpleFOCDebug.h"
3
4// function reading an ADC value and returning the read voltage
5__attribute__((weak)) float _readADCVoltageInline(const int pinA, const void* cs_params){
6 uint32_t raw_adc = analogRead(pinA);
7 return raw_adc * ((GenericCurrentSenseParams*)cs_params)->adc_voltage_conv;
8}
9
10// function reading an ADC value and returning the read voltage
11__attribute__((weak)) void* _configureADCInline(const void* driver_params, const int pinA,const int pinB,const int pinC){
12 _UNUSED(driver_params);
13
14 if( _isset(pinA) ) pinMode(pinA, INPUT);
15 if( _isset(pinB) ) pinMode(pinB, INPUT);
16 if( _isset(pinC) ) pinMode(pinC, INPUT);
17
19 .pins = { pinA, pinB, pinC },
20 .adc_voltage_conv = (5.0f)/(1024.0f)
21 };
22
23 return params;
24}
25
26// function reading an ADC value and returning the read voltage
27__attribute__((weak)) float _readADCVoltageLowSide(const int pinA, const void* cs_params){
28 SIMPLEFOC_DEBUG("ERR: Low-side cs not supported!");
29 return 0.0;
30}
31
32// Configure low side for generic mcu
33// cannot do much but
34__attribute__((weak)) void* _configureADCLowSide(const void* driver_params, const int pinA,const int pinB,const int pinC){
35 SIMPLEFOC_DEBUG("ERR: Low-side cs not supported!");
37}
38
39// sync driver and the adc
40__attribute__((weak)) void* _driverSyncLowSide(void* driver_params, void* cs_params){
41 _UNUSED(driver_params);
42 return cs_params;
43}
44
45// function starting the ADC conversion for the high side current sensing
46// only necessary for certain types of MCUs
#define SIMPLEFOC_DEBUG(msg,...)
void * _configureADCInline(const void *driver_params, const int pinA, const int pinB, const int pinC=NOT_SET)
float _readADCVoltageInline(const int pinA, const void *cs_params)
void * _driverSyncLowSide(void *driver_params, void *cs_params)
void * _configureADCLowSide(const void *driver_params, const int pinA, const int pinB, const int pinC=NOT_SET)
void _startADC3PinConversionLowSide()
float _readADCVoltageLowSide(const int pinA, const void *cs_params)
const int const int const int pinC
GenericCurrentSenseParams * params
__attribute__((weak)) float _readADCVoltageInline(const int pinA
#define _UNUSED(v)
Definition foc_utils.h:14
#define _isset(a)
Definition foc_utils.h:13