Results I have.
Unless I’ve done something wrong in the code (posted below) it looks like using the power control register to disable UART0, UART1, PWM1, I2C0, & SPI only saves about 1.6 ma. Turning off the board led saves another 2.0 ma. Fairly small amounts compared to reducing the clock rate, but a milliamp here, a milliamp there, and pretty soon they start to add up.
In a different test I cut the clock rate from 72 MHz down to 24 MHz and the slower clock rate reduced the current draw by 25 ma (50 ma down to 25ma), so much bigger savings by cutting the clock rate. Even so, if you want to save power it makes sense to disable unused functions on the chip.
If anyone is interested here’s the code I used for the power control register. Architect, for some reason (probably my lack of experience), I couldn’t get “PCONP.ClearBits(1<<6);” to work so I used ClearBits and SetBits with a mask. Is this approach OK? Here’s the code.
/* SHORT PROGRAM TO TURN OFF UART0, UART1, PWM1, I2C0, & SPI FUNCTIONS
* USING THE POWER CONTROL REGISTER */
public class Program
public static void Main()
// define the power control register PCONP
Register PCONP = new Register(0xE01FC0C4);
// turn off on board led
bool ledstate = false;
OutputPort led = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.LED, ledstate);
// print PCONP register initial state
Debug.Print("register 0xE01FC0C4 = " + PCONP.Read().ToString() + "led is = " + ledstate.ToString());
//Diasble UART0, UART1, PWM1, I2C0, & SPI
UInt32 mask = 472;
Debug.Print("register 0xE01FC0C4 after 472 mask ClearBits = " + PCONP.Read().ToString());
// sleep for 7 seconds while I measure current draw
// Restoreclock/power to UART0, UART1, PWM1, I2C0, & SPI
Debug.Print("register 0xE01FC0C4 after 472 mask SetBits = " + PCONP.Read().ToString());
// pause to measure current again
// toggle led state for next set of measurements
ledstate = !ledstate;