1
\$\begingroup\$

I'm a software engineer diving head-first into the world of embedded systems design and development. This question is basically about "plumbing" -- what's the best way to physically wire up a particular circuit. So:

I have a small microcontroller evaluation module, the CC11EMK, with a 2x5 header debug port.

I also have an evaluation board (the CC1110-CC1111DK) to program the evaluation module, also with a 2x5 header. (The dongle is in the lower left) below:

Board photo

The two are connected with a 10-wire ribbon cable.

My problem is that the microcontroller reset pin is sensitive to noise, causing random resets. Not fun. The datasheet for the CC111 has this to say in section 6.11.1:

The RESET_N pin is sensitive to noise and can cause unintended reset of the chip. For a long reset line add an external RC filter with values 1 nF and 2.7 kOhm close to the RESET_N pin.

I also have some sensors and an SPI bus setup on a breadboard.

What's a relatively simple way to insert the resister and the capacitor into the circuit? I thought I might be able to stick a pair of 2x5 headers onto the breadboard, use two ribbon cables, and wire corresponding pins together with the exception of the reset line, which I'd pass through the RC filter. But I don't think that can work on a breadboard -- the header won't fit over the gutter, so no matter how I do it, I'd be shorting together pairs of pins.

Any suggestions?

\$\endgroup\$
  • \$\begingroup\$ I can't modify Kevin's edits (not enough reputation), but it's a CC1111 USB dongle (ti.com/tool/cc1111emk868-915); the evaluation board that comes with the CC1110-CC1111DK dev kit (ti.com/tool/cc1110-cc1111dk); and the SoC is the CC1111, not the CC2510 (ti.com/lit/ds/symlink/cc1111f32.pdf). \$\endgroup\$ – David Dec 2 '11 at 21:55
  • \$\begingroup\$ Sorry about that, I was just going from the image URLs you provided. You should be able to suggest an edit, but I'll happily drop those in for you. Thanks for the clarification! \$\endgroup\$ – Kevin Vermeer Dec 2 '11 at 22:13
2
\$\begingroup\$

Putting a resistor in line as you describe is one way of dealing with the noise problem, but it also requires hacking up the board. I'd try simpler solutions first that only require adding components, not breaking things. You can always break a trace later if the simpler solutions don't work, but I think there is a good chance they will do just fine.

You don't say what microcontroller, but from the description it seems it has a typcial reset input with negative logic. Hold it low, and the micro stays in reset. Hold it high and the micro is allowed to run. Actually I'd rather call that a RUN input so that the name corresponds to positive logic, but that's just silly me trying to avoid confusion.

In any case, whatever micro this is is apparently OK with 1 nF on this line. Go ahead and put that there. That alone might be enough to solve the problem. The noise is probably capacitively coupled so is coming in with only a few 10s of pF at most in series. 1 nF should swamp that. I would also add a pullup to Vdd. That makes it so the noise has to provide more current to drag the line low, something it will have a hard time doing with the aformentioned capacitance in series. Again we don't know the micro or any of its particulars, or probably more importantly the particulars of the programming jig, so I'd stick with 10 kΩ as a pullup.

So to summarize: Slap 1 nF to ground on the RUN line and 10 kΩ to Vdd and leave the surgury for mad scientist stuff you'll be adding later. Most likely that will fix things well enough.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Olin, thanks for your help. It's a TI CC1111 SoC, and yes, the reset pin is active low. See my comments to Kevin's edited version for the various links. If you're curious here is the reference design for the USB dongle. It's actually in the zip file under "User Guides". \$\endgroup\$ – David Dec 2 '11 at 22:02
  • \$\begingroup\$ [last comment edit timed out. Continuing:] I don't have a background in EE, so my question is even more basic: how to physically wire any component to this. I guess I could just wrap a small bit of wire around the header pin before I attach the ribbon connector to it, and then connect that wire to my breadboard. \$\endgroup\$ – David Dec 2 '11 at 22:09
  • 1
    \$\begingroup\$ @David: I wouldn't do it that way. The wire might interfere with proper mating of the connector. I would solder the components to the bottom of the connector pins on the other side of the board. \$\endgroup\$ – Olin Lathrop Dec 2 '11 at 22:12
  • \$\begingroup\$ In addition to Olin's objection based on connector mating, I'd add that (1) you can't get an inline connection that way and (2) the wrapped wire wouldn't make a very strong connection. \$\endgroup\$ – Kevin Vermeer Dec 2 '11 at 22:24
  • \$\begingroup\$ @Kevin: My answer was in part about that he probably doesn't really need a in-line change. I was suggesting adding a cap to ground and a pullup resistor to Vdd, specifically to avoid in-line changes. \$\endgroup\$ – Olin Lathrop Dec 3 '11 at 16:25
2
\$\begingroup\$

Interesting that they don't follow their own advice! Also, congratulations on tracking down this problem - random resets are among the more difficult problems to find.

The addition here isn't hard - you've got a large debug header to hit. The pinout of this header is:

enter image description here

You can very simply add a small cap here between pin 1 and pin 7 to filter the noise. Either of the below locations would work:

enter image description here

Before adding an inline filter or cutting this trace, just add the 1nF cap described in the filter. Hit the indicated pins with a bit of flux, touch the leads of a through-hole cap to them, and solder away. If that doesn't solve your problem, add a pullup to Vdd (pin 2), and hope for the best.

If that still doesn't work, you'll need something a little more involved, specifically, a filter like this one:

Wikimedia

\$V_{in}\$ is your noisy input line. \$V_C\$ is the output. Notice that there's a resistor between these two, you can't get this setup without something between the cable and the microcontroller. Adding another noisy cable after this filter only solves part of the problem, you'll still get noise from the second cable.

To add this filter, you need to cut a trace. When cutting a trace, I suggest using an exacto knife or small razor blade.

In this case, you don't have to solder something to the trace, but if you did, the procedure would be as follows: To remove a short length of trace, make two 1/16" apart, and continue scoring until you break through the copper. Then, slide your knife gently under the small rectangle of isolated copper, and remove it from the board. This may be easier if you hit it with a soldering iron to melt the glue holding it to the FR4. Then, use your knife to remove some of the soldermask on the trace, and coat the revealed copper with some flux and tin it with a bit of solder. Then, add a series 2.7k chip resistor. Finally, add the cap to the output terminal of the resistor you just added. I don't suggest trying to hit the adjacent ground plane; that's not only very hard to solder to because of the multitudinous vias but also connected directly to the antenna - which you don't want to mess with. Hit the ground pin on the USB connector, or the other connector (which you don't seem to be using), or slice off the plastic from Pin 1 on the debug connector and hit the bottom of that. It should look something like this when you're done, with pin A connected to the cap to ground and the red arrows indicating the cut section of trace.

Since you don't want to solder to thin traces (it's no fun), just cut the trace on the top of the board (as indicated here by the red arrows, ignore the added resistor) and then work on the back side. Solder a through-hole 2.7k resistor from the now-isolated pin 7 on the debug connector to the SMD debug header, and add the cap to the SMD debug connector.

enter image description here

Optionally add a pullup if you're still getting noise, but that shouldn't be necessary.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Thanks very much for this detailed response. I'll look into doing this, but I'll need to think about it. These dongles are about $50. As I'm new at this, I'm worried about damaging it; but it may come down to doing one of the things you suggest. And yes, debugging the reset problem myself was a bear. I got very good at programming LED blink patterns. Details on TI's forum. When I remove the ribbon cable, it's fine. Otherwise, I have to pray it doesn't reset before I'm done debugging. \$\endgroup\$ – David Dec 2 '11 at 22:24
  • \$\begingroup\$ @David - $50 may seem like a lot, but hacking on evaluation modules is quite normal. Start small (find some junk PCBs to practice on) and you'll get used to this. If you really mess something up, worst-case, you can revert it by jumpering together the through-hole pin 7 and the alternative debug header's pin 7 (see Figure 7). Actually, that might be an easier way: cut the trace on the top, and connect your resistor to the alternative debug header's pin 7! Much better, in fact. None of that pesky soldering to traces... \$\endgroup\$ – Kevin Vermeer Dec 2 '11 at 22:32
  • \$\begingroup\$ @David - Edited to demonstrate new method \$\endgroup\$ – Kevin Vermeer Dec 2 '11 at 22:39
  • \$\begingroup\$ A new wrinkle: my dongle seems to have a smaller-pitch header (not the standard 2.54 mm) already attached to the alternative debug pads. See photo. With the right connector and a ribbon cable, I should be able to wire it to my breadboard. Is there a name for this kind of small connector? Thanks again for all your help (and Olin, too). Our resident EE is in India until next year, so this is a life saver. \$\endgroup\$ – David Dec 2 '11 at 22:50
  • \$\begingroup\$ @David - Did your resident EE add that for you? I don't think they're populated on normal boards. Either way, it's just called a 'header'. You're unlikely to find a mate without knowing the part number, but to be clear: I'm not talking about wiring to a breadboard. I'm talking about soldering directly to these points on the back of the board. \$\endgroup\$ – Kevin Vermeer Dec 2 '11 at 23:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.