rusefi-1/firmware/hw_layer/HIP9011.h

68 lines
1.3 KiB
C

/**
* @file HIP9011.h
* @brief HIP9011/TPIC8101 driver
*
* @date Nov 27, 2013
* @author Andrey Belomutskiy, (c) 2012-2017
*/
#ifndef HIP9011_H_
#define HIP9011_H_
typedef enum {
NOT_READY,
/**
* the step after this one is always IS_INTEGRATING
*/
READY_TO_INTEGRATE,
/**
* the step after this one is always WAITING_FOR_ADC_TO_SKIP
*/
IS_INTEGRATING,
/**
* the step after this one is always WAITING_FOR_RESULT_ADC
*/
WAITING_FOR_ADC_TO_SKIP,
/**
* the step after this one is always IS_SENDING_SPI_COMMAND or READY_TO_INTEGRATE
*/
WAITING_FOR_RESULT_ADC,
/**
* the step after this one is always READY_TO_INTEGRATE
*/
IS_SENDING_SPI_COMMAND,
} hip_state_e;
// 0b01000000
#define SET_PRESCALER_CMD 0x40
// 0b11100000
#define SET_CHANNEL_CMD 0xE0
// 0b11000000
#define SET_INTEGRATOR_CMD 0xC0
// 0b00000000
#define SET_BAND_PASS_CMD 0x0
// 0b10000000
#define SET_GAIN_CMD 0x80
// 0b01110001
#define SET_ADVANCED_MODE 0x71
#define HIP_THREAD_PERIOD 100
void initHip9011(Logging *sharedLogger);
void setHip9011FrankensoPinout(void);
#if HAL_USE_ADC
void hipAdcCallback(adcsample_t value);
#endif /* HAL_USE_ADC */
void setHipGain(float value);
void setHipBand(float value);
void setPrescalerAndSDO(int value);
void setKnockThresh(float value);
void setMaxKnockSubDeg(int value);
#endif /* HIP9011_H_ */