Six Months Online Today

Sunday, May 16, 2010

It was six months ago today that we put the microBuilder.eu website live.  It feels like a lot longer than that in man-hours, but it's been a really fun process.  The number of readers continues to grow at a rate of about 25-30% a month, and we're always glad to hear from people who find some of the resources we publish useful (that's really the only thing that makes this all interesting).

We just wanted to say thanks to all of you who take the time to visit this website, and we hope to have a number of interesting new projects for you throughout the remainder of 2010.  We hope that the website will continue to develop to match the needs and interests of our readers (we just added some new user forums today, for example!), and that we'll be able to continue adding the types of resources that help people go from idea to prototype with just a bit less blood, sweat and tears than before.

Moving forward, we'd like to try to add a few more tutorials on the manufacturing and assembly side of things, rather than just on the design side (which has been the main focus of this site these past months).  That should be a bit easier with the brand new pick and place machine we've ordered, since it provides a great avenue for exploring and explaining some of the work and machinery involved in small-scale production of electronics.

We hope the next six months are at least as interesting as the last six, and we've been really grateful to all of the people who have taken the time to get in touch with us.  Let us know what we're getting right, and what you think we could improve moving forward!

Full story  | Comments (0)

New Products: 10 May 2010

Monday, May 10, 2010

It's been a little bit silent on the website here these past couple weeks, but we've been busy finalising some software and tutorials for the LPC1343 and LPC1114 Reference Designs and working on a number of new projects.  Things are coming together well, and hopefully we can publish an initial version of the LPC1343 Code Base in the next week or two, with the LPC1114 to follow shortly after (we're still working on some details on building a custom GCC 4.5.0 toolchain that works well with the M0).

We're slowly adding new items to the online store (to try to at least keep the site self-sustaining!), including the following:

MCP73833 USB Lithium-Polymer/Lithium-Ion Battery ChargerThis USB Lithium-Polymer/Lithium-Ion Battery Charger is based on the easy to use MCP73833, and is configured to charge a single-cell LIPO/Li-Ion battery at a rate of 200mA.  The charge rate can be adjusted up or down by changing a single resistor (see the datasheet for details).  There are LED indicators to show if the battery is charging or if the charge is complete, and both status pins are broken out if you wish to determine the charge state programmatically.  Two test-points are also provided to measure the batteries current voltage with a multimeter. 

1200mAh LIPO BatteryThe board uses the same 2-pin JST PH series connectors found on our 1200mAh LIPO Batteries (which are also new to the store), and is the same connector found on the LPC1114 Reference Design Base Boards, which was designed specifically to run with battery power.  The LIPO cells can be plugged directly into the LPC1114, and recharged with this breakout board via USB when required.

Cortex SWD Adapter (20-Pin 0.1" to 10-Pin 0.05")We've also added a simple 20-Pin to 2x5-Pin Cortex SWD Adapter to convert the connectors on popular hardware debuggers like the Segger J-Link for ARM to the new standard SWD connector.  You simply plug the 20-pin 0.1' cable on your J-Link (or other SWD-compatible debugger) into the board, and then connect to board to the 2x5-pin 0.05" connector via the included SWD cable.  SWD Debugger Cables are also available seperately if you need them.

You can expect to see a number of interesting new items added in the coming month, including a few new development boards (that we're pretty excited about!), and a number of breakout boards for different sensors and useful ICs.  Feel free to check back every now and then to see what's new!  And a very big thanks to those of you who have picked up a development board or item from the shop.  We appreciate you're willingness to support us, and hope you find the items useful. Feel free to drop us a line and let us know what you're doing with the boards, or if there's anything you think we can improve!

 

Full story  | Comments (0)

New LPC1343 Tutorials

Wednesday, May 05, 2010

We've recently added a few tutorials for the LPC1343, including Setting up a GNU GCC Development Environment, and most recently some step-by-step tutorials on Using CodeLite with the LPC1343 (which we'll continue to build on, since it's a great IDE).  The latter has instructions on how to build your projects within CodeLite, use the USB bootloader (including an open-source tool to correct the checksum), and configure CodeLite to automatically flash the LPC1343 with a Segger J-Link and GDB Server if you have the appropriate HW.

The LPC1343 Code Base is almost at the point that we can make an initial release ... there are just a few details to work out getting the Makefile to work on every platform (Windows, Linux and OS X), and a bit if cleaning up to do.  The LPC1343 Code Base documentation is also up to date, but we will try to expand it a bit with a few more examples and drivers in the future.

MDC 7722FV Pick and PlaceA big thanks to those of you who have purchased an assembled board from the new online store.  It's been a pretty slow process getting everything setup, but we've just ordered a new Manncorp/MDC 7722FV Pick and Place machine that should be here in a couple weeks time.  There are no photos of our own to show yet, but you can have a look at the engineer pr0n over at Adafruit Industries since they are using exactly the same machine.  It should make the difference between being grateful every time an order comes in, and having a sinking feeling in the stomach thinking about hand-assembling yet another development board. :-)

We've had fun getting to know the LPC1343 (as well as it's close relative the LPC1114), and have a handful of ideas for interesting projects that we'll try to publish in the coming months (now that we have a basic code base for both of them).  We'll try to make some regular additions to the store, and keep the blog up to date ... but hopefully the above items should keep anyone getting started with the LPC1343 busy for now.

Thanks again for those of you who have helped support this website by placing an order.  We'd love to hear what you're doing with all the boards, and what you're experience is with them.  Feel free to drop us a line and let us know what's on your mind!

Full story  | Comments (0)

Waking up from Deep-Sleep on the LPC1114 and LPC1343

Monday, May 03, 2010

There have been a number of questions on different forums about waking up from Deep-Sleep mode on the LPC1114 or LPC1343 lately, partially because the current user manual isn't very clear on this (for example, it's not terribly obvious whether a timer is able to run in deep-sleep mode or not).  After trying to wrap our head around this ourselves, we ended up contacting NXP directly, who were able to clear the matter up for us.  It is indeed possible to wakeup from deep-sleep in software using a timer, though it may not be exactly how you expected.

You enter deep-sleep mode by indicating which peripherals should be turned off, setting up the different registers controlling the sleep modes, and sending the WFI (Wait For Interrupt) command.  To exit deep-sleep mode, you simply need to change the state of a pre-configured wakeup pin (0.0..1.0 on the LPC1114 and 0.0..3.3 on the LPC1343), and your device will wakeup (entering the wakeup ISR).  That's relatively easy and the manual is clear on that ... what's a lot less clear is how you can wakeup from Deep-Sleep mode purely in SW (or if it's even possible).  It is indeed possible, but the only way to do so is with the following steps:

Configuring the LPC1114/LPC1343 to Wakeup from Deep-Sleep
  1. Before entering deep-sleep, switch the main clock source to WDTOSC (for the lowest possible power consumption)
  2. Next, find an available wakeup pin with a timer MAT (for example pin 0.1 on the LPC1114 and LPC1343 has CT32B0_MAT2)
  3. Set the matching timer delay to an appropriate length (for example, a 10s delay on CT32B0)
  4. Configure the timer's match control register to set the MAT pin (MAT2/0.1 in this case) high on match
  5. Enable the wakeup interrupt for the MAT pin, and enable the MAT pin as a wakeup source
  6. Start the timer
  7. Send the "WFI" command and enter Deep-Sleep mode

What this will do is allow the timer to continue running in deep-sleep using the WDTOSC as a clock source, and when a match occurs it will toggle the MAT pin from low to high, waking the device up.  At that point, you will enter the WAKEUP IRQ handler, and you can switch the main clock source back to the internal or external oscillator and adjust the clock accordingly.  (For reference sake, keeping a 32-bit timer running in deep-sleep with the WDTOSC at 10kHz consumes about 2uA more than if the device is put in deep-sleep mode with no SW wakeup enabled.)

If this isn't clear, we've added examples of entering and waking up from deep-sleep in both the LPC1114 and LPC1343 Code Base.  Both devices behave identically, aside from the smaller number of wakeup pins (13) on the LPC1114 and the difference peripherals that can be disabled in deep-sleep.  For an example, see pmuDeepSleep in pmu.c, or have a look at the latest source code on Google Code.

Using the above code, you can enter deep-sleep, and then wakeup after a fixed delay in seconds with the following commands (this assumes that you are using an LPC1343):

uint32_t pmuRegVal;

// Initialise power management
pmuInit();

// Inidicate which peripherals should be disabled in deep-sleep
pmuRegVal = SCB_PDSLEEPCFG_IRCOUT_PD | 
            SCB_PDSLEEPCFG_IRC_PD | 
            SCB_PDSLEEPCFG_FLASH_PD | 
            SCB_PDSLEEPCFG_USBPLL_PD | 
            SCB_PDSLEEPCFG_SYSPLL_PD | 
            SCB_PDSLEEPCFG_SYSOSC_PD | 
            SCB_PDSLEEPCFG_ADC_PD | 
            SCB_PDSLEEPCFG_BOD_PD;

// Enter deep sleep mode and wakeup after 5 seconds
pmuDeepSleep(pmuRegVal, 5);

Full story  | Comments (3)