Don't break VSS if using RPM2 pin and enable tooth or composite log

This commit is contained in:
Josh Stewart 2023-05-17 11:25:50 +10:00
parent 27531d3440
commit 62e14754bb
3 changed files with 35 additions and 13 deletions

View File

@ -7,4 +7,6 @@ void setPinMapping(byte boardID);
void changeHalfToFullSync(void);
void changeFullToHalfSync(void);
#define VSS_USES_RPM2() ((configPage2.vssMode > 1) && (pinVSS == pinTrigger2) && !BIT_CHECK(decoderState, BIT_DECODER_HAS_SECONDARY))
#endif

View File

@ -3129,7 +3129,7 @@ void initialiseTriggers(void)
attachInterrupt(triggerInterrupt, triggerHandler, primaryTriggerEdge);
//The secondary input can be used for VSS if nothing else requires it. Allows for the standard VR conditioner to be used for VSS.
if( (configPage2.vssMode > 1) && (pinVSS == pinTrigger2) && !BIT_CHECK(decoderState, BIT_DECODER_HAS_SECONDARY) )
if( VSS_USES_RPM2() )
{
//Secondary trigger input can safely be used for VSS
attachInterrupt(digitalPinToInterrupt(pinVSS), vssPulse, RISING);

View File

@ -2,6 +2,7 @@
#include "logger.h"
#include "errors.h"
#include "decoders.h"
#include "init.h"
/**
* Returns a numbered byte-field (partial field in case of multi-byte fields) from "current status" structure in the format expected by TunerStudio
@ -374,8 +375,12 @@ void startToothLogger(void)
detachInterrupt( digitalPinToInterrupt(pinTrigger) );
attachInterrupt( digitalPinToInterrupt(pinTrigger), loggerPrimaryISR, CHANGE );
detachInterrupt( digitalPinToInterrupt(pinTrigger2) );
attachInterrupt( digitalPinToInterrupt(pinTrigger2), loggerSecondaryISR, CHANGE );
if(VSS_USES_RPM2() != true)
{
detachInterrupt( digitalPinToInterrupt(pinTrigger2) );
attachInterrupt( digitalPinToInterrupt(pinTrigger2), loggerSecondaryISR, CHANGE );
}
}
void stopToothLogger(void)
@ -386,8 +391,11 @@ void stopToothLogger(void)
detachInterrupt( digitalPinToInterrupt(pinTrigger) );
attachInterrupt( digitalPinToInterrupt(pinTrigger), triggerHandler, primaryTriggerEdge );
detachInterrupt( digitalPinToInterrupt(pinTrigger2) );
attachInterrupt( digitalPinToInterrupt(pinTrigger2), triggerSecondaryHandler, secondaryTriggerEdge );
if(VSS_USES_RPM2() != true)
{
detachInterrupt( digitalPinToInterrupt(pinTrigger2) );
attachInterrupt( digitalPinToInterrupt(pinTrigger2), triggerSecondaryHandler, secondaryTriggerEdge );
}
}
void startCompositeLogger(void)
@ -401,8 +409,11 @@ void startCompositeLogger(void)
detachInterrupt( digitalPinToInterrupt(pinTrigger) );
attachInterrupt( digitalPinToInterrupt(pinTrigger), loggerPrimaryISR, CHANGE );
detachInterrupt( digitalPinToInterrupt(pinTrigger2) );
attachInterrupt( digitalPinToInterrupt(pinTrigger2), loggerSecondaryISR, CHANGE );
if(VSS_USES_RPM2() != true)
{
detachInterrupt( digitalPinToInterrupt(pinTrigger2) );
attachInterrupt( digitalPinToInterrupt(pinTrigger2), loggerSecondaryISR, CHANGE );
}
}
void stopCompositeLogger(void)
@ -413,8 +424,11 @@ void stopCompositeLogger(void)
detachInterrupt( digitalPinToInterrupt(pinTrigger) );
attachInterrupt( digitalPinToInterrupt(pinTrigger), triggerHandler, primaryTriggerEdge );
detachInterrupt( digitalPinToInterrupt(pinTrigger2) );
attachInterrupt( digitalPinToInterrupt(pinTrigger2), triggerSecondaryHandler, secondaryTriggerEdge );
if(VSS_USES_RPM2() != true)
{
detachInterrupt( digitalPinToInterrupt(pinTrigger2) );
attachInterrupt( digitalPinToInterrupt(pinTrigger2), triggerSecondaryHandler, secondaryTriggerEdge );
}
}
void startCompositeLoggerTertiary(void)
@ -453,8 +467,11 @@ void startCompositeLoggerCams(void)
toothHistoryIndex = 0;
//Disconnect the standard interrupt and add the logger version
detachInterrupt( digitalPinToInterrupt(pinTrigger2) );
attachInterrupt( digitalPinToInterrupt(pinTrigger2), loggerSecondaryISR, CHANGE );
if(VSS_USES_RPM2() != true)
{
detachInterrupt( digitalPinToInterrupt(pinTrigger2) );
attachInterrupt( digitalPinToInterrupt(pinTrigger2), loggerSecondaryISR, CHANGE );
}
detachInterrupt( digitalPinToInterrupt(pinTrigger3) );
attachInterrupt( digitalPinToInterrupt(pinTrigger3), loggerTertiaryISR, CHANGE );
@ -465,8 +482,11 @@ void stopCompositeLoggerCams(void)
currentStatus.compositeTriggerUsed = false;
//Disconnect the logger interrupts and attach the normal ones
detachInterrupt( digitalPinToInterrupt(pinTrigger2) );
attachInterrupt( digitalPinToInterrupt(pinTrigger2), triggerSecondaryHandler, secondaryTriggerEdge );
if(VSS_USES_RPM2() != true)
{
detachInterrupt( digitalPinToInterrupt(pinTrigger2) );
attachInterrupt( digitalPinToInterrupt(pinTrigger2), triggerSecondaryHandler, secondaryTriggerEdge );
}
detachInterrupt( digitalPinToInterrupt(pinTrigger3) );
attachInterrupt( digitalPinToInterrupt(pinTrigger3), triggerTertiaryHandler, tertiaryTriggerEdge );