I2C pull up resistors during ISSP

Version 1
    Question: I use P1[0] and P1[1] as I2C pins and also for ISSP.  Because of the pull up resistors on the I2C pins, the ISSP programming does not happen.  Is there a way to perform ISSP without removing the pull up resistors?



    During ISSP, the SDA line in the PSoC is configured as resistive pull down with a 5.6K internal pull down resistor.  Because of this, the external pull up resistors along with the internal pull down resistors form a potential divider and do not allow the PSoC to drive a LOW on the SDA.  This will result in erros like "Cant Acquire Device", "Verify Error", "Checksum Error" etc during programming. Below are some work arounds.

    1. Isolate the I2C pullup resistors during ISSP programming.  This is the perfect workaround.  In case, the board design does not allow the isolation of pull up resistors from the ISSP pins, the following work arounds may be tried.

    2. Use a very high value >30K for the I2C pull up resistors.  While this solves the problem of ISSP programming, the high value of resistance along with the bus capacitance of I2C lines will create rise time issues.  Keeping the I2C lines as short as possible may reduce the effect of bus capacitance.

    3. Connect a low value pull down resistor in the range of 470 ohms to 1Kohm from SDATA to GND.  This pull down resistor will get connected in parallel to the internal pull down resistor and compensate for the potential divider effect introduced by the I2C pull up resistor.  This pull down resistor need be connected to the SDATA line only during ISSP.

    4. Instead of P1[0] and P1[1], use P1[5] and P1[7] for I2C.