I'm designing a spark advance using the 16C73A. I have 4 outputs to drive one after the other. The RPM range is 0 - 6000. The advance resolution is 1 degree. The flywheel has 60 equally spaced teeth with 2 missing. The magnetic pickup of the flywheel is filtered and fed into INT. The dwell time is fixed at 4mS. The advance is calculated using 5 advance ranges based on RPMticks. The advance is a simple rise over run in the detected range. There is an 8K eeprom connected to the SSP port (using as I2C master). There is a PC connected at 9600 baud to the SCI port. The serial data is the only thing in the main loop and not interrupted. The serial and eeprom communication is working perfectly even though the INT pin is constantly being serviced on every rising tooth edge. My problem is that at high RPMs, the dwell for the second cylinder must be started even before the first cylinder has fired, making timing difficult as I have to do my timing based on rpmtick calculations 180 degrees before. . - fire point . 4ms dwell . cyl1----------------------|_____________|----------------------|____________ _|--------- cyl2--------------|_____________|----------------------|_____________|------ ----------- cyl3--------|_____________|----------------------|_____________|------------ ----------- cyl4_|----------------------|_____________|----------------------|__________ ___|------- Has anyone any experience with this? Craig