Fix for pwLimit overflow
This commit is contained in:
parent
7dac91ddac
commit
7f67ac3b16
6
math.h
6
math.h
|
@ -61,8 +61,8 @@ int divs100(int n) {
|
|||
}
|
||||
|
||||
//Unsigned divide by 100
|
||||
unsigned int divu100(unsigned n) {
|
||||
unsigned q, r;
|
||||
unsigned long divu100(unsigned long n) {
|
||||
unsigned long q, r;
|
||||
q = (n >> 1) + (n >> 3) + (n >> 6) - (n >> 10) +
|
||||
(n >> 12) + (n >> 13) - (n >> 16);
|
||||
q = q + (q >> 20);
|
||||
|
@ -74,7 +74,7 @@ unsigned int divu100(unsigned n) {
|
|||
|
||||
//Return x percent of y
|
||||
//This is a relatively fast approximation of a percentage value.
|
||||
unsigned int percentage(byte x, unsigned int y)
|
||||
unsigned long percentage(byte x, unsigned long y)
|
||||
{
|
||||
return divu100(y) * x;
|
||||
}
|
||||
|
|
|
@ -564,7 +564,7 @@ void loop()
|
|||
//Check that the duty cycle of the chosen pulsewidth isn't too high. This is disabled at cranking
|
||||
if( !BIT_CHECK(currentStatus.engine, BIT_ENGINE_CRANK) )
|
||||
{
|
||||
unsigned int pwLimit = percentage(configPage1.dutyLim, revolutionTime); //The pulsewidth limit is determined to be the duty cycle limit (Eg 85%) by the total time it takes to perform 1 revolution
|
||||
unsigned long pwLimit = percentage(configPage1.dutyLim, revolutionTime); //The pulsewidth limit is determined to be the duty cycle limit (Eg 85%) by the total time it takes to perform 1 revolution
|
||||
if (currentStatus.PW > pwLimit) { currentStatus.PW = pwLimit; }
|
||||
}
|
||||
|
||||
|
@ -777,7 +777,8 @@ void loop()
|
|||
//Check for hard cut rev limit (If we're above the hardcut limit, we simply don't set a spark schedule)
|
||||
if(ignitionOn && (currentStatus.RPM < ((unsigned int)(configPage2.HardRevLim) * 100) ))
|
||||
{
|
||||
if ( (ignition1StartAngle > crankAngle) )
|
||||
//if ( (ignition1StartAngle > crankAngle) && ign1LastRev != startRevolutions)
|
||||
if ( (ignition1StartAngle > crankAngle) && ign1LastRev != startRevolutions)
|
||||
{
|
||||
setIgnitionSchedule1(beginCoil1Charge,
|
||||
((unsigned long)(ignition1StartAngle - crankAngle) * (unsigned long)timePerDegree),
|
||||
|
|
Loading…
Reference in New Issue