90. KL25Z Status Lights

The Pinscape firmware blinks the LED on the KL25Z to indicate its system status. This is a quick way to check if the Pinscape software is operating normally (or, at least, to check if the software thinks it's operating normally, which might not always be the same thing!). If you suspect that something's wrong, or you're not seeing expected input on the PC, the LED lets you check at a glance what the Pinscape software thinks about its current health.
Here are the various flashing patterns you might see and what they mean:
  • Long blue/green lights, alternating about every second: normal healthy operation.
  • Long yellow/green lights, alternating about every second: normal healthy operation. The device has a good USB connection and is running normally. However, the plunger hasn't been calibrated yet, so you should run the plunger calibration process to finish device setup.
  • Short yellow flashes, every couple of seconds: the device has just restarted and is trying to connect to the PC via USB.
  • Two short red flashes in rapid succession every couple of seconds: the USB connection to the PC was broken. This can happen if the USB cable is physically unplugged or the connection is broken at a software level. Software disconnections can happen due to software errors, and can also happen if the Windows USB drivers intentionally disconnect.
  • Long red/yellow lights, alternating: USB data transmission problems are occurring. The device still has a connection to the PC (or so it appears to the device), but the PC isn't acknowledging transmissions. The device will try to restore the connection automatically when this occurs, so this condition is usually short-lived; the device will usually either return to normal within a few seconds or will reboot itself to try to reset the connection.
  • Medium blue flash, about half a second each: the TV ON delay timer is running. This means that the power to the secondary PSU has just been turned on, and the TV ON timer is waiting for the configured delay time before turning on the TVs. You'll only see this if the TV ON feature is enabled.
  • Fast red/purple, alternating: the device is out of memory. This means that the programmed configuration is too complex. The KL25Z has a limited amount of memory, and each feature enabled in the configuration consumes some of that. It's possible in principle to exceed available memory by enabling too many features simultaneously. This error should only occur immediately after a reboot, since the software allocates all memory up-front during startup and uses a fixed memory configuration from that point on. So you'll never see this happen spontaneously because of something you're doing during a pinball game session, for example. And at the moment, it really shouldn't be possible to trigger this condition at all with any real-world configuration. But you could probably do with a concerted effort to max out every possible configuration option. If you do happen to trigger this error, note that it will keep happening again every time you reboot, since it's a function of the saved configuration. The only way to clear it is to reset to the default configuration by reinstalling a fresh copy of the Pinscape software.

Re-purposing the LED for feedback output

The status indicator LED on the KL25Z is connected to GPIO ports (three of them - one each for the LED's red, green, and blue channel), which means that it's under the control of the Pinscape software program. That much is probably obvious given that the software uses the LED to display the status light patterns listed above. But it also means that you can assign the LED elements as feedback device outputs. The Config tool lets you assign the GPIO pins associated with the LED to DOF output ports, exactly like any other GPIO pins, in the Outputs list on the Setting page.
If you do assign an LED element as a DOF-controlled output port, the Pinscape software will cede the LED port to your control, and won't try to use it as a status light. That means that the flash patterns listed above won't appear if you take over the LED for output port use. Obviously, the LED can't serve two masters, so the Pinscape software gives precedence to your settings.
Why would you want to use the LED as a feedback device? The main use case I see is testing. If you want to test a new DOF configuration on your PC, for example, and you haven't set up any external feedback devices yet, the on-board LED could be used for a quick test that DOF signals are getting through to the KL25Z.
Finally, I'll point out a couple of odd quirks to the way the LED is wired on the KL25Z.
The first quirk is that the LED channels are wired in "active low" fashion, meaning that each LED color turns on when the voltage on its GPIO pin is off. When setting up the LED elements as outputs in the Config Tool, just be sure to enable the "Active Low" option for each port. If the LED shows the opposite of what you want (the LED is on when you want it off, off when it should be on), you probably just need to go set the Active Low option.
The second quirk is way the LED connections are wired. The red and green LED elements are wired to GPIO ports (PTB18 and PTB19, respectively), but this is all purely internal within the KL25Z circuit board: they're not wired to any external pins. Strangely, though, the blue LED element (PTD1) is wired to an external pin. So you can use port PTD1 to control something wired externally in addition to controlling the blue LED element. I don't recommend doing that, since it's pretty confusing to think about, but if you were in a pinch and absolutely needed one more external GPIO pin for some external control circuit, it would work. The blue LED would just be sort of dragged along with whatever you were doing with the external port, so you'd have to put up with the blue LED turning on and off in concert with the external circuit.

Using PTD1 for button input

The blue segment of the status LED is wired to GPIO port PTD1, which is also wired to one of the pins on the KL25Z's main pin headers (J2 pin 12; see KL25Z Pin Out). The pin header wiring means that you can use PTD1 for other purposes besides controlling the blue LED - but if you do, it requires some special handling, because the blue LED connection is hard-wired on the board and can't be changed in software.
(The red and green segments are also wired to GPIO ports internally, but they don't have any pin header wiring, so there's no way to use those ports for anything other than the LED connections.)
You can use PTD1 as a feedback device output port simply by assigning it in the config tool. Assigning it as a feedback output will prevent the Pinscape firmware from using it as part of the status indication. However, it doesn't change the internal hard-wiring between PTD1 and the blue LED, so the blue LED will now turn on and off in sync with any external feedback device you wire there. (Actually, in sync, but opposite: remember that the LED uses "active low" wiring, so the blue LED will turn ON when the output port is OFF, and vice versa.)
You can also use PTD1 as a button input, again, simply by assigning it as a button input in the Config Tool. With this use, the blue LED segment will stop acting as part of the Pinscape status indicator; instead, it'll just light up whenever you press the button.
If you do use the PTD1 header pin for one of these uses, and it bothers you that the blue LED is affected by the port status, you can physically modify the KL25Z to sever the connection to the LED. The procedure is described in KL25Z Pin Out. Be aware that severing the blue LED connection will change the Pinscape status light patterns accordingly, since the Pinscape firmware won't be able to light up the blue LED any longer.

OpenSDA status LED

There's a second status LED on the KL25Z: a smaller monochrome green LED, close to the USB connectors. This one shows the OpenSDA (firmware loader) status:
  • Solid green means "OK" - the OpenSDA port is connected and the boot loader is awaiting commands
  • Slow flashing means that a firmware update is in progress
  • Rapid flashing means that an error has occurred
If rapid flashing appears, indicating an error, you can clear it by unplugging both USB cables, waiting a couple of seconds, and then plugging the cables back in. That should reset the device and return the status indicator to solid green. Once an error condition appears, it stays there until you clear it manually.
If you see an error indicator, it's not due to anything you did wrong. It's just random bugs in the KL25Z boot loader, as far as I can tell. That part of the software comes from the KL25Z's manufacturer, so it's not something I can easily fix. An error condition on the OpenSDA side won't affect normal Pinscape operations, so you can ignore the little green LED most of the time. It only matters when you're trying to update the Pinscape firmware.