diff --git a/speeduino/init.h b/speeduino/init.h index 94791230..7c05eedc 100644 --- a/speeduino/init.h +++ b/speeduino/init.h @@ -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 \ No newline at end of file diff --git a/speeduino/init.ino b/speeduino/init.ino index de323a58..ccae460f 100644 --- a/speeduino/init.ino +++ b/speeduino/init.ino @@ -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); diff --git a/speeduino/logger.ino b/speeduino/logger.ino index 02675081..58e190c5 100644 --- a/speeduino/logger.ino +++ b/speeduino/logger.ino @@ -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 );