fbody - I sent you a private message. Just send me a link to one thread on this forum where an OBDII car wasn't sparking or starting & threw a crank code. Please send as a PM so we can keep this thread on track. After our 'debate' we can post the results here.
idkaac - We learn new things here just about every day. Your case is unique due to the erratic spark. It seems like everyone else has either had spark or not.
To the best of my knowledge these are all the things required for spark.
Power & ground to the ICM.
Wiring between the cam/crank sensor & ICM
Hopefully one of your friends has a voltmeter. The ICM is located under the coils. Loosen the bolt on the wiring harness with a 7mm socket & pull the harness away from ICM. The wire closest to the passenger side is pink & delivers battery power to the ICM. The 5th wire over(four from pink wire) is the ground, its a black with white stripe wire. Connect the red meter lead to the terminals on the pink wire. Connect the black meter lead to the terminals of the black/white wire. With the key on there should be 12 -13 volts. Now see how much the voltage drops when the engine is cranked for 5 seconds. With a good battery I wouldn't expect the voltage to drop below 11. Make sure hands, clothing, meter leads, etc are away from fans, belts & pulleys when doing these tests.
If the voltage drops below 11 try swapping batteries.
The wiring usually isn't a problem unless it'* been damaged by a thrown fan belt.
I don't know what method you used to check for spark but if we check right at the coils we can quickly rule out plugs & wires. Simply remove both spark plug wires from the coils & crank over the engine. You should get a nice blue spark between the coil posts.
Well unless you have a bad battery I expect to be back to the crank sensor or ICM which we already covered. Let us know what you find.