Fixed ICU.
This commit is contained in:
parent
4a93fc550f
commit
270d3a263d
|
@ -127,7 +127,7 @@ static msg_t mwThread(int param) {
|
||||||
|
|
||||||
static const GPTConfig gpt5cfg = { 1000000, /* 1 MHz timer clock.*/
|
static const GPTConfig gpt5cfg = { 1000000, /* 1 MHz timer clock.*/
|
||||||
callback, /* Timer callback.*/
|
callback, /* Timer callback.*/
|
||||||
0 };
|
0, 0 };
|
||||||
|
|
||||||
void initMicrosecondTimer(void) {
|
void initMicrosecondTimer(void) {
|
||||||
|
|
||||||
|
|
|
@ -31,11 +31,13 @@ int vvtEventRiseCounter = 0;
|
||||||
int vvtEventFallCounter = 0;
|
int vvtEventFallCounter = 0;
|
||||||
|
|
||||||
static void cam_icu_width_callback(ICUDriver *icup) {
|
static void cam_icu_width_callback(ICUDriver *icup) {
|
||||||
|
(void)icup;
|
||||||
vvtEventRiseCounter++;
|
vvtEventRiseCounter++;
|
||||||
hwHandleVvtCamSignal(TV_RISE);
|
hwHandleVvtCamSignal(TV_RISE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cam_icu_period_callback(ICUDriver *icup) {
|
static void cam_icu_period_callback(ICUDriver *icup) {
|
||||||
|
(void)icup;
|
||||||
vvtEventFallCounter++;
|
vvtEventFallCounter++;
|
||||||
hwHandleVvtCamSignal(TV_FALL);
|
hwHandleVvtCamSignal(TV_FALL);
|
||||||
}
|
}
|
||||||
|
@ -80,14 +82,24 @@ static void shaft_icu_period_callback(ICUDriver *icup) {
|
||||||
/**
|
/**
|
||||||
* the main purpose of this configuration structure is to specify the input interrupt callbacks
|
* the main purpose of this configuration structure is to specify the input interrupt callbacks
|
||||||
*/
|
*/
|
||||||
static ICUConfig shaft_icucfg = { ICU_INPUT_ACTIVE_LOW, 100000, /* 100kHz ICU clock frequency. */
|
static ICUConfig shaft_icucfg = { ICU_INPUT_ACTIVE_LOW,
|
||||||
shaft_icu_width_callback, shaft_icu_period_callback };
|
100000, /* 100kHz ICU clock frequency. */
|
||||||
|
shaft_icu_width_callback,
|
||||||
|
shaft_icu_period_callback,
|
||||||
|
NULL,
|
||||||
|
ICU_CHANNEL_1,
|
||||||
|
0};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* this is about VTTi and stuff kind of cam sensor
|
* this is about VTTi and stuff kind of cam sensor
|
||||||
*/
|
*/
|
||||||
static ICUConfig cam_icucfg = { ICU_INPUT_ACTIVE_LOW, 100000, /* 100kHz ICU clock frequency. */
|
static ICUConfig cam_icucfg = { ICU_INPUT_ACTIVE_LOW,
|
||||||
cam_icu_width_callback, cam_icu_period_callback };
|
100000, /* 100kHz ICU clock frequency. */
|
||||||
|
cam_icu_width_callback,
|
||||||
|
cam_icu_period_callback,
|
||||||
|
NULL,
|
||||||
|
ICU_CHANNEL_1,
|
||||||
|
0};
|
||||||
|
|
||||||
|
|
||||||
static ICUDriver *turnOnTriggerInputPin(const char *msg, brain_pin_e hwPin, ICUConfig *icucfg) {
|
static ICUDriver *turnOnTriggerInputPin(const char *msg, brain_pin_e hwPin, ICUConfig *icucfg) {
|
||||||
|
@ -112,6 +124,7 @@ static ICUDriver *turnOnTriggerInputPin(const char *msg, brain_pin_e hwPin, ICUC
|
||||||
efiIcuStart(driver, icucfg);
|
efiIcuStart(driver, icucfg);
|
||||||
if (driver->state == ICU_READY) {
|
if (driver->state == ICU_READY) {
|
||||||
icuStartCapture(driver);
|
icuStartCapture(driver);
|
||||||
|
icuEnableNotifications(driver);
|
||||||
} else {
|
} else {
|
||||||
// we would be here for example if same pin is used for multiple input capture purposes
|
// we would be here for example if same pin is used for multiple input capture purposes
|
||||||
firmwareError(CUSTOM_ERR_ICU_STATE, "ICU unexpected state [%s]", hwPortname(hwPin));
|
firmwareError(CUSTOM_ERR_ICU_STATE, "ICU unexpected state [%s]", hwPortname(hwPin));
|
||||||
|
@ -123,6 +136,7 @@ static ICUDriver *turnOnTriggerInputPin(const char *msg, brain_pin_e hwPin, ICUC
|
||||||
static void turnOffTriggerInputPin(brain_pin_e hwPin) {
|
static void turnOffTriggerInputPin(brain_pin_e hwPin) {
|
||||||
ICUDriver *driver = getInputCaptureDriver("trigger_off", hwPin);
|
ICUDriver *driver = getInputCaptureDriver("trigger_off", hwPin);
|
||||||
if (driver != NULL) {
|
if (driver != NULL) {
|
||||||
|
icuDisableNotifications(driver);
|
||||||
icuStopCapture(driver);
|
icuStopCapture(driver);
|
||||||
icuStop(driver);
|
icuStop(driver);
|
||||||
scheduleMsg(logger, "turnOffTriggerInputPin %s", hwPortname(hwPin));
|
scheduleMsg(logger, "turnOffTriggerInputPin %s", hwPortname(hwPin));
|
||||||
|
|
Loading…
Reference in New Issue