have '94 325iS 150k miles OBD-1. Two years ago during cold winter day, got a "check engine" light after decending a long hill before car was warmed up. Later I pulled up the trouble code by depressing the accelerator 5 times in 5 seconds and the "check engine " light displayed 1221, which is the code for O2 sensor. Was able to erase the code and put out the "check engine" light. This happen several more times that winter under similar circumstances.
Later I connected a DVM to the O2 sensor, while running, and this seemed OK voltage varying from zero to 0.9 VDC while driving. However during the first few miles after starting, the voltage at the O2 sensor is a steady 0.45 VDC (default voltage supplied by engine computer). This lasts until the engine control computer decides the O2 sensor has warmed up enough to produce a valid reading (takes about a mile or two).
My theory is that while the car was doing the long downhill decent, soon after a cold start, the engine computer switched from the default (sensor warm up mode producing 0.45VDC) to the actual sensor voltage. Since this is a closed throttle situation, coasting down a long hill, the O2 sensor produces near zero VDC. The engine computer sensed this as a bad O2 sensor and lit the "check engine" light.
Now my question: This time, I was not able to reset the "check engine" light. When the trouble code is pulled up (1221), I get repeated codes 1221,1221,1221,..... Never get long flash indicating code all finished so can't reset "check engine" light.