Often when I am developing a system, I run across something that does not work right. It is almost always (99.9999%) something I have done wrong. I’ve either read the data sheet wrong (or not at all), designed the circuit wrong, forgot to take account for an obvious situation, or any of a hundred other things. However, sometimes I am not at fault and I have actually found a problem with an I.C. I recently stumbled into this very situation.
I am working on a internal SECRET project right now and I recently started having problems. After messing with it for a couple of hours and stripping everything out of the system but the offending parts, I still had the problem. I contacted the manufacturer and went through another round of testing and stripping the system down to its bare essentials – I actually bread-boarded a single microcontroller with a couple of pull up resistors connected to scope probes. The schematic below shows the schematic of the test I I came up with.
Basically, I am testing the open-drain capabilities of the RB10 and RB9 I/O lines. The system runs at +3.3V and both of the I/O lines are supposed to be +5V tolerant and configurable as open-drain so that they can read and write +5V signals. The problem I am having is demonstrated in the scope capture shown below. KP10 is only being pulled up to +3.9V while KP9 is pulled up to +5V. I just got confirmation from the manufacturer that this is, indeed a problem on their end. I am the first to report it. It’s like I am the Lewis and/or Clark for microcontroller errata.
Unfortunately for me, the KP10 pull-up problem is also exhibited on I/O pin RB11. Doubly unfortunate, I need RB10 and RB11 to pull up to +5V. The system I am interfacing to will not accept +4V for a logic high. Triply unfortunate, I cannot use any other I/O pins on the micro to accomplish this task. I am locked in on that front. So the only option is to specify a different micro. Doing this will add another 40 approximate hours of work to get this accomplished. So although I wasn’t doing anything wrong, and have the satisfaction of finding something no one else had, I still have to pay the price. Sometimes that’s just engineering.