Found the problem. The I2C routines use an interrupt and if the priority isn't higher than the BOD interrupt, it isn't serviced. The controller does support nested interrupts but the priority of the nested interrupt must be higher. By default priorities are all set the same so the "nested" won't be serviced.