In hindsight, typing this up, this feels dumb, because now I know exactly what I was looking at, but at the time, having successfully read traffic from the accelerometer, I expected similar success with the plunger.
I wired up a nice jig that let me hook the logic analyzer to the plunger bus and then ran through a few games where I pulled the plunger all the way out, let it back slowly, and so on. Then I took a second trace from startup.
What I found was to (then me) baffling.
The I2C decoder in both pulseview and DSview got very, very confused and showed traffic. And the problem was the traffic was similar to conversations with the mentally ill guy outside the local safeway. It was syntactically correct but didn't make any sense.
Every 80ms, the bus master would issue a read to the general call address (address 0) on the I2C bus.
And nothing responded.
Again, in hindsight, this just hurts to write up, but I KNEW the plunger was functioning and yet the traffic just made no sense. The first thing I thought was "This has to be caused by my wiring. Or I'm not sampling fast enough and I'm missing portions of the conversation." The problem was, when I hooked up known good I2C devices, I could scan them perfectly well.
That was my cue to bring in the BusPirate, which confused the everloving daylights out of me. It has an I2C scanner built in, and scanning I found components I found reasonable, a GPIO extender and a few other things.
The results were consistently inconsistent, though. The scanner almost always returned the same addresses but if I attempted to become a bus pirate myself and "speak" to them, the responses made no sense.
And the entire time, these general call address reads kept issuing.
This is where past experience burned me badly. I'd dealt with an automotive device before that used a very similar model, and applied that knowledge (wrongly) here.
That device had a bus master that would issue a general read and any of the five trinkets attached would respond. So, in that way, the general read (sort of) made sense. I'd already realized the plunger IC was the interpreter for the accelerometer, so it was likely the main board had a polling loop where it said "Where's the plunger at?"
Except there weren't valid responses.
Eventually I decided I was spending too much time on a project that I wasn't making progress on, and I shelved it, just playing pinball instead of analyzing it. I left the logic analyzer harness wired in, though.
I kept my spare boards, and I kept telling myself, I'll get to it.
Jason Nelson
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.