I'm using a PIC16F1825 mid range PIC and I've used it with a UART and SPI for a good while without issues. When I added code to handle I2C (instead of SPI - it's either one or the other on this PIC) I ran into problems with not receiving the I2C interrupt - thus SCL would remain stretched forever.
After some considerable debugging I figured out that removing the code that activated the serial port fixed the issue - the I2C ISR gets called and acts normally.
All I'm doing in the serial init is setting SPBRG and then:
bcf TXSTA, SYNC ; Async (default) bsf RCSTA, SPEN ; Active serial port bsf TXSTA, TXEN ; Enable TX bsf RCSTA, CREN ; Enable RX That it. No interrupts are enabled (I just set the flag on transmit)
I've searched the docs and the errata and find no hint that enabling the serial port would mangle I2C functionality like this. Is this my misunderstanding or there an actual silicon bug here?