Also, you might have a bad Transmission range switch.
The Transmission Range Sensor (TRS) is mounted to the top of the valve body inside the transaxle and can only be serviced by removing the valve body. The electrical connector extends through the transaxle case (Fig. 337).
The Transmission Range Sensor (TRS) has four switch contacts that monitor shift lever position and send the information to the TCM.
The TRS also has an integrated temperature sensor (thermistor) that communicates transaxle temperature to the TCM and PCM (Fig. 338).
The Transmission Range Sensor (TRS) (Fig. 337) communicates Shift Lever Position (SLP) to the TCM as a combination of open and closed switches. Each shift lever position has an assigned combination of switch states (open/closed) that the TCM receives from four sense circuits. The TCM interprets this information and determines the appropriate transaxle gear position and shift schedule.
Since there are four switches, there are 16 possible combinations of open and closed switches (codes). Seven of these codes are related to gear position and three are recognized as "between gear" codes. This results in six codes, which should never occur. These are called "invalid" codes. An invalid code will result in a DTC, and the TCM will then determine the shift lever position based on pressure switch data. This allows reasonably normal transmission operation with a TRS failure.
TRANSMISSION TEMPERATURE SENSOR
The TRS has an integrated thermistor (Fig. 338) that the TCM uses to monitor the transmission's sump temperature. Since fluid temperature can affect transmission shift quality and convertor lock up, the TCM requires this information to determine which shift schedule to operate in. The PCM also monitors this temperature data so it can energize the vehicle cooling fan(s) when a transmission "overheat" condition exists. If the thermistor circuit fails, the TCM will revert to calculated oil temperature usage.
A failure in the temperature sensor or circuit will result in calculated temperature being substituted for actual temperature. Calculated temperature is a predicted fluid temperature, which is calculated from a combination of inputs:
Battery (ambient) temperature
Engine coolant temperature
In-gear run time since start-up