wait... it's screwing up giving you codes?

It's supposed to flash code 12 three times, then pause, then flash codes if any are present.

So you're saying it only flashes 12 some of the time? Or it stops flashing?

if you're completely sure that you're not making a mistake in pulling the codes, I would start looking at the ECM itself. I wouldn't say replace it right away, but maybe ask around if anyone knows how to do diagnostics on the ECM itself.