I've got something I've been playing with that uses counters and interrupts to control the firing sequence while still being able to continuously poll the trigger. It's part of something larger I am experimenting with. 
Edit: A little more info....
Basically how it works in "psuedo code"
If trigger pull then
energize solenoid
start Son time counter
go back to main loop (watch trigger/input loop)
End if
when the counter reaches what ever Son time you want it will set an interrupt, then you shut off the solenoid and reset the counter for the valve recharge time. when that counter triggers the interrupt flag you can fire another shot. The two counter times are based on what bps you have set. this way you can keep polling the trigger during the complete cycle and just store number of pulls in a variable.
FYI I don't have this running on a stock board, I'm using a little larger micro that I'm trying some different stuff on.

Edit: A little more info....
Basically how it works in "psuedo code"
If trigger pull then
energize solenoid
start Son time counter
go back to main loop (watch trigger/input loop)
End if
when the counter reaches what ever Son time you want it will set an interrupt, then you shut off the solenoid and reset the counter for the valve recharge time. when that counter triggers the interrupt flag you can fire another shot. The two counter times are based on what bps you have set. this way you can keep polling the trigger during the complete cycle and just store number of pulls in a variable.
FYI I don't have this running on a stock board, I'm using a little larger micro that I'm trying some different stuff on.


)

Comment