2
\$\begingroup\$

I am designing a wireless sensor node that will be operating off of 1.8V. I am using an Atmel ATtiny861a MCU with a CC2520EMK radio and a 23A1024 External memory chip. I have a chip select pin for each component, however I still need a resistor value for both pull-ups. Where in the datasheet(s) should I look to find out what Resistor value I should use? I want to conserve as much energy as possible.

If a higher resistor value consumes less power, what exactly is the downside to having a high pull-up resistor?

\$\endgroup\$
2
  • \$\begingroup\$ Which pins will be working in open drain configuration? \$\endgroup\$ – Ignacio Vazquez-Abrams Jun 5 '15 at 20:30
  • \$\begingroup\$ The pullup resistor only loses power when the signal is low. If the signal is high, the voltage across the resistor is zero, so it does not consume power. SO, when you are not using the bus, make sure the signal being pulled up is allowed to go high. \$\endgroup\$ – mkeith Jun 6 '15 at 17:14
1
\$\begingroup\$

It's about timing with pull-up resistors.

A large pull-up is going to recover slowly, because there's capacitance in the traces on the PCB (or the wires). If you "actually need" a pull-up, you don't want to go too high if the chips specify some maximum rise-time. A 1MOhm pull-up with a 50pF trace will already have an RC-time of 50microseconds. Quite a lot in digital communication to have to wait before you can safely use the same bus for another chip.

But, do you actually "need" them at all? Are you not driving the chip-selects with the chip directly? Do you not instruct the chip to drive them High when you're done talking? Then you don't need pull-ups.

If there's some more complex idea behind them you are welcome to share that for better answers, but just connecting a chip's output to another chip's input and driving that signal actively high or low is a very good reason to not use any resistor at all.**

And even if you do need a resistor, does it really need to be big? When you are communicating with the chips, how much power do they consume? More or less than 150uA? Most modules, not to mention your Atmel already waste miliamps to generate the serial signal, having a 10k pull-up at 1.8V only adds 0.18mA to that, which is very likely to be negligible. Since your pull up only has any current through it when the devices are talking, because when they are not, the line is high and the resistor will have 0V across it. I = V/R = 0/whatever = 0

EDIT:

If you're actually asking about things like I2C pull-ups, not for hard driven CS signals, but for shared in/out lines such as SDA and SCL are, there's already many good questions and answers to them to browse through. For example, linked from this question at the time of asking (on the right):

https://electronics.stackexchange.com/a/1852/53769

**(apart from impedance matching series resistors, but that's 50 chapters ahead of this topic)

\$\endgroup\$
5
  • \$\begingroup\$ If I am planning on putting the MCU to sleep(and other components), will I still need Pull-ups? The MCU takes about .2mA, the SRAM will consume <3mA, and the radio is a pig consuming 15-30mA. The radio will be sleeping most of the time. Why do you say that the Atmel wastes miliamps? \$\endgroup\$ – Therusscher Jun 8 '15 at 13:58
  • \$\begingroup\$ @Therusscher that depends on how those components act. In all the sleep modes that I know of on a Tiny861 or 861A the outputs will remain valid. The only thing a sleep mode does is turn off some or all of the clocks, so it can not do everything any more. But it doesn't tell the outputs to do anything. A long while back I tested this by attaching 8 LEDs to one port, have it change the number on the output, go to sleep for 2 seconds (initially 10, but I got impatient for a full loop), wake up, change, sleep. All sleep modes the LEDs kept indicating the same number. You can redo that experiment. \$\endgroup\$ – Asmyldof Jun 8 '15 at 14:02
  • \$\begingroup\$ @Therusscher The Atmel, and any logic, that pumps out switching signals from a set of pins, such as SPI consumes energy to do that. Depending on the speed it'll be on average, I'd estimate 0.1mA at the low end (low kHz range) and 5mA at the high end (near or in MHz) with short and simple traces. Complex or long traces make it much worse. You cannot change that, you need energy to make all the things in the chip switch over and then also to force the traces to change from low to high (and back again). \$\endgroup\$ – Asmyldof Jun 8 '15 at 14:06
  • \$\begingroup\$ Could you explain "A 1MOhm pull-up with a 50pF trace will already have an RC-time of 50microseconds." What exactly is a 50pF trace? Would a smaller resistor have a smaller RC-time? \$\endgroup\$ – Therusscher Jun 8 '15 at 14:24
  • \$\begingroup\$ @Therusscher Any piece of metal in the world has a capacitance, on PCBs a trace will have noticeable capacitance because it's close to GND & POW and can form a plate capacitor. 50pF isn't that much for a trace. If you connect a resistor to a capacitor and want to charge that capacitor through the resistor, they get an RC time. It's the value of R multiplied with that of C in seconds to go approx 2/3 of the way. So reducing the R will reduce your RC time, yes. It's possible you may be jumping in way too deep if you don't know about things like that yet. \$\endgroup\$ – Asmyldof Jun 8 '15 at 14:55

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.