A logic analyzer is crucial to digital embedded design. Almost as useful, but not as flexible, is the frequency counter. Here is how to make one yourself, with just an LED.
The idea here is to train your eyes to recognize very high frequencies and very short pulses of light. How fast? With a little practice, 10kHz. You might think this is impossible, after all everyone knows persistence of vision makes even 20Hz hard to see. Well, we are going to cheat.
This is based on a method I came up with when I was 12. I was curious if an LED was dimmed with a resistor or with PWM. To find out, I would pick up the circuit and shake it around as fast as I could. If the LED looked like a constant smear, it was always on. If the LED looked like a series of dots, it was blinking. This was all well and good, but eventually the shaking tears a breadboard apart and overall the technique makes you look like a bit of an idiot. I mention it only because it is very easy to try and takes absolutely no practice to see the effect.
Instead, saccade your eyes from one side to the other. This has the same effect as shaking the light around - a blinking light will look like a dotted line. The trick is to wire up a training circuit and practice on a number of different frequencies. And it will take practice to saccade your eyes in a consistent and repeatable manner. Don't expect to do better than one significant figure. We are not aiming for precision but portability.
Saccading is only half of it. The other half is measuring the dotted line with your eyes. In theory how far you position yourself for the LED should not matter, since the angle between dots is constant. Always using one distance makes consistency simpler, while sitting closer makes higher frequencies easier. Needless to say, it is hard to describe what you see as we are used to trying to look while our eyes are holding still.
What is the upper limit? Going to back to wikipedia, the maximum angular resolution of the human eye is 0.02 degrees. (For a frame of reference, the moon is 0.52° across.) At a comfortably fast saccade of 500°/sec, this works out to 25kHz. This will vary from person to person, slowing as you age or get tired.
How long do you make your pulses? As short as you can. Pulses as short as 0.1μ second are visible, though being in a dim room helps a lot. This correlates to turning on an LED and then turning it off a cycle later at 16MHz. People have told me it is impossible for the human eye to see such a short pulse. This is bunk, as a photo flash is only a few microseconds long while being plainly visible. I find 10μS pulses to be very visible indoors.
Short pulses are easier to count than wide pulses, but with more practice you can identify PWM duty cycles by eye. Measure the relative distance between the pulses. This might actually be easier than frequency counting as your saccade speed does not matter, you only care about the ratio of light to dark.