Code:
While 1 = 1 ' This code measures the low dwell of the input or the time that the input is low.
While GPIO.2 = 1 :TMR0 = 0 :Wend ' wait for input to go high and clear tmr0
While GPIO.2 = 0 :ldwell = TMR0:Wend ' wait for input to go low and load var with tmr0 value
If tmr0if = 1 Then ' check to see if tmr0 rollover flag is set
tmr0if = 0 ' if so clear the flag
PauseUS 21000 ' and delay 21000 micro seconds
' this retards the timing from 28 degrees
' to about 5 degrees for starting
Else
'_______________________________________________________________________________________________________________________________________________
' to change the curve just shift the table to the right or left using 0s.
' to lower the curve at idle just remove 0s.To increase the curve at idle add 0s.
' curve is 5 degrees @ 1300 to 28 degrees @ 2500
' LDWELL value is 97 @1300 and 32 @4000 rpm
' lookUp ldwell,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,_ '0 - 31
' 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,7,10,13,16,19,22,26,29,33,_ '32 - 63
' 37,42,47,51,57,63,69,75,82,90,98,107,117,128,141,154,169,176,188,188,188,_ ' 63 - 84
' 189,190,191,191,191,191,194,195,195,196,196,197,198,212,212,206,208,205,206,_ '85 - 103
' 207,208,209,210,211,212,213,214,215,216,216,217,218,220,221,222,223,224,225,226,_ ' 104- 123
' 228,229,230,231,232,234,235,236,237,239,240,241,242,244,245,247,248,250,251,253],delayangle ' 124 - 143
' to change the curve just shift the table to the right or left using 0s.
' to lower the curve at idle just remove 0s.To increase the curve at idle add 0s.
' curve is 5 degrees @ 1300 to 28 degrees @ 4000
' LDWELL value is 97 @1300 and 32 @4000 rpm
' lookUp ldwell,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,5,6,7,8,_
' 10,11,12,14,15,17,18,20,21,23,24,26,28,30,32,33,35,38,40,42,44,46,49,51,54,56,59,_
' 62,65,68,71,74,78,81,85,89,93,97,101,106,110,115,121,126,132,138,144,151,158,166,_
' 174,182,191],delayangle
' to change the curve just shift the table to the right or left using 0s.
' to lower the curve at idle just remove 0s.To increase the curve at idle add 0s.
' curve is 5 degrees @ 1300 to 28 degrees @ 4000
' LDWELL value is 97 @1300 and 32 @4000 rpm
lookUp ldwell,[0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,_
32,33,34,35,37,38,39,41,42,43,45,46,48,49,51,52,54,56,57,59,61,63,65,67,69,71,73,75,77,79,_
81,84,86,89,91,94,97,99,102,105,108,111,114,118,121,125,128,132,136,140,144,148,153,157,162,_
165,169,172,176,179,183,187,191,196,200,205,210,215,221,227,233,239,246,254],delayangle
EndIf
'_______________________________________________________________________________________________________________________________________________
T2CON = 7 ' turn timer2 on ans set prescale to 1:16
TMR2 = 0 ' clear tmr2
While TMR2 < delayangle :Wend ' wait here until timer2 = delayangle
npn = 1 ' turn base of npn on
pauseus 1280 ' pause for 1.280 ms
npn = 0 ' turn base of npn off
INTCON = 0 ' just making sure the intcon register is cleared
Wend
end ' end of code
Bookmarks