Friday, March 28, 2014

LPC1114 Devl

All the boards we have recently released

TTL To RS-232 DB9 M&F


TTL to I2C

I2C-4SW-4LED 9Sept2012

were aimed at the release of our LPC1114 Development board. Or as I like to put it the LPC1114 Devl. And what do I mean by "we" and "our" ? Well it was developed as part of a team effort. An effort our little group likes to call ATeam Forth. This board is the center of a project to reintroduce the ease of Forth programming for microcomputing. All development in Forth happens interactively. And once you have developed and tested each bit of code there is a compiler on the board that speeds up the execution of the compiled code and includes easy ways to turn it into an application.

To see what you can do with the LPC1114 have a look at:

LPC1114 Data Sheet

LPC1114 Users Manual

So what do you need to start? Well you will need a way to talk to the board. Probably over USB. That is explained at TTL to USB. That post includes links to suitable terminal programs for your PC (there are probably similar programs for Apple users - but I'm not familiar with them) and an explanation of how to get them running.

Besides the USB board/terminal program you will need the LPC1114 Devl board. You can find the documentation for that board st LPC1114 Documentation. It includes the schematic, parts layout, and parts list. OSH Park has the boards for sale for $11.55 each.

And finally you will need to put the Forth located at ATeam Forth for the LPC1114 on the board. It is easy to do using a free tool called Flash Magic. I might add that if you have an LPC Xpresso LPC1114 Board with a serial/USB interface attached to it (TX and RX pins)it will also run our Forth. It should also run on the LPC1115 Xpresso. But we haven't tested it.

But back to Flash Magic. Once you have it installed follow these steps to load your LPC1114 with ATeam Forth.
1. Communications - Select your processor "LPC1114/102". You have already found your COM port as outlined in TTL to USB. Enter that in the COM Port box. The baud rate should be 9600. Interface is "None (ISP)".
2. Erase - check the box that is labeled "Erase all Flash+Code Rd Prot" do not check any other boxes in this section.
3. Hex File - Enter the location of your Hex file in the box. There is the usual "Browse" tool to make that easy.
4. Options - only check the box "Verify after programming"

Before you start programming install jumpers JU1 and JU2 on the board. Hit the reset button. You are now ready to

5. Start

It takes about a minute to install and verify ATeam Forth. Remove JU2 - go to your terminal program (set up for your COM Port and 9600 baud, 8 bits , no parity , one stop bit) and then press reset. You will see the sign on message indicating the number of free flash blocks and the date your version of ATeam FISH Forth was created. Press the "Enter" key and you will see "ok, go fish in BASE 10". That tells you the number base you are operating in in decimal. So how did it get the name FISH? Well, it is sort of an updated figForth. So we called it FigISH. Or just plain FISH. Go FISH.

Soldering notes for the LPC1114 Devl.

There is only one difficult to solder component on the board. The oscillator. It is difficult because the pads are not exposed. To make it easy lay down a generous amount (which is not much) of Chip Quik on the pads before you attempt to solder to them. Put the Chip Quik on the board before you place the oscillator for soldering. The solder will flow under the pads because of Chip Quik's outstanding wetting/fluxing ability. And also note. ALL the pads for components have been specifically designed for hand soldering. So fire up your iron!

More about Forth

If you are not familiar with Forth, I have added Starting Forth - pdf and Thinking Forth - pdf to the sidebar. Or click the links here. Obviously if you are new to Forth, Starting Forth is where you want to start. FISH does not completely conform to the Forth in the book. But it is close enough - especially in the beginning chapters - that you can use our hardware to follow along.

Update: 12 April 2014 2320z

The latest version of FISH Forth has been released. It has some added words for doing bit shifting and a Glossary with numerous examples. You can find the download link at Forth Update and Some Nice Doc.

Engineering is the art of making what you want from what you can get at a profit.

Sunday, March 23, 2014

I2C-4SW-4LED 9Sept2012

Now that you have your I2C interface working you will need to test it out on something. I have a nice little board for that. The I2C-4SW-4LED board. You can find the documentation here. As the name implies it has 4 switches (actually 2 pin jumper headers to reduce costs) and 4 LEDs on the board, so you can talk to it with I2C and make lights blink. And/or read the switches. The board is made in such a way that you can wire to external switches and LEDs for use on a front panel of what ever device you are building. If you use external LEDs do not install LEDs on the board. Nothing bad will happen. But it may not work the way you want because of differing LED voltages.

With the three Jumpers on the board - JP1, JP2, and JP3, you can set the address of the board so that you could easily have 32 LEDs and 32 switches in a system. Or other parallel ports using the PCA8574 for other things.

Please note that the chip comes in two flavors. The PCA8574 and the PCA8574A. They differ only in their I2C base address. The PCA8574 has a base address of 40h and the PCA8574A has a base address of 70h. This fact tripped us up in initial testing. Don't let it trip you up. And note: either chip can be used on the board. So you could actually have 16 of these boards in a system. If your I2C driver could drive that many.

OSH Park has the boards for sale for $6.00 each.

Update: 28 April 2014 0907z

You can find some test code that exercises the I2C bus and blinks the 4 LEDs on the board at I2C-4SW-4LED LED-Test.txt. It is written in FISH Forth.

Engineering is the art of making what you want from what you can get at a profit.

Saturday, March 22, 2014

TTL to I2C

Since I'm using 5 volts as the standard I2C bus voltage, I need a way to translate from the 3.3 volts the MCU uses to the 5 volts the I2C bus uses. The interface needs to be bidirectional without having any switching since either the 5 volt side or the 3.3 volt side can pull the bus low. And there is no way to tell in advance which side might want to do that so a bus translator like the 74LVC2T45 will not work. I did try the the P82B96, but, despite being a very popular chip it latched up on me. Some manufacturers allude to this when they tout "no latch up" at the top of their data sheets for I2C bus voltage level translators. NXP describes how to do it with N channel MOSFET transistors in their application note AN10441. The circuit described there is what we would have called in the old days a grounded grid circuit. Today we call it grounded gate. The gate is grounded for AC despite the 3.3volt bias on it because the 3.3 volts comes from a power supply which is heavily filtered to eliminate any AC voltage on the supply. Despite being low cost I decided not to use this method because low cost transistors commonly come in an SOT23 package (which is big enough so that I can actually hand solder it). But the SOT23 package takes up a fair amount of board area by today's standards.

So I settled on the NVT2002 chip which looks like it has two transistors in the package along with disconnect circuitry which prevents translator operation if both sides of the bus aren't powered. Because the transistors are basically pass through devices they don't add much bus delay (on the order of nano seconds or less). And just to cap off the sweetness they cost a lot less than the P82B96.

To make life easier for I2C bus users I put 3 of our standard RJ11 I2C bus jacks on the board, so that if you are using 3 or fewer devices on the bus you don't need to buy doublers or triplers to daisy chain bus devices. Although you would have to use them if your bus is long in order to keep your bus capacitance below the specified maximum.

Bare boards for the I2C bus adapter are available from OSH Park for $5.15. You can find the documentation for the board (schematic, parts list, and parts layout) here.

You have a choice of powering the I2C bus with the power supply providing power to the MCU board or if your bus peripherals use a lot of 5V power you can give the TTL to I2C adapter its own power supply so as to avoid dragging down the 5 volts supplying the MCU board.

Engineering is the art of making what you want from what you can get at a profit.

Tuesday, March 18, 2014


You will need an interface to your computer if you plan to use our LPC1114 board with Forth for fun and profit. I will be writing up the '1114 in the next few days. In the mean time you can start building an interface to your computer. You can use the RS232 board if you are trying to talk to and program it with an older computer.

Or you can build the TTL to USB board if you have a more modern computer which only has USB ports. The USB board uses the FT232RL chip. Soldering the board is straight forward. So I'm not going to go into that. I will just mention that FTDI does not recommend using the Blue and White LEDs you can mount on the board in the way I use them (connected to the 5 volt supply with a 3.3 volt interface voltage). So if you mount them it is at your own risk.

Of course you are going to need some documentation to put a board together. You can get the schematic, parts list, and parts layout here. You can buy the boards from OSH Park. The price is $7.10 per board.

To communicate through the USB board you will need a terminal program. There are a number of them out there. I'm going to describe some of them. The links provided go to review pages where you can find a download link. For beginners I like Tera Term. It is easy to use. On the con side it hides the screens that you might want to play with while setting up or just watching what is going on.

For the more advanced user I would suggest RealTerm. It has everything you need but the screens will be confusing to the novice. Its specialty is binary files and difficult data.

The guys at Green Arrays like putty which is open source.

To make these programs work you will need to find out the port number of the USB port you have plugged into. Please note that the board is as the FTDI people refer to it "self powered". You will need to provide it with a power supply of at least 100 ma. I have designed a number of these for use with our system. I describe one power supply at Power Supply Digital WW. There is also a link there to a heftier supply. Note that the "WW" refers to the power transformer, which is a wall wart.

So you have your board powered up and plugged in to a USB port. How do you locate the port number? Assuming you have a Windows 7 system (I'm sorry to say I'm ignorant of Macs) go to the main Control Panel page and click on "Hardware and Sound" then "Devices and Printers". Under "Unspecified" you will see "FT2232R USB UART". Right click on the icon and you will get another (small) page. Click on "Hardware" on that page. Under "Device Functions" you will see listed your USB port. Mine says "USB Serial Port (Com5)". So "Com 5" is my port number. Your board should work with any Com Port number, but I think I read somewhere that port numbers from 1 to 5 work better in some systems. Keep plugging in your USB board until you find a good number if you are having trouble. Once you know your port number you will be ready to set up your terminal according to the instructions provided by the terminal program.

Initially when you plug the USB board into your PC it will go looking for a device driver. This can take a while. Your USB board will not show up on the device driver page until your system has a driver for the FTDI Chip. The last time my computer went looking for a device driver for the FTDI232R it took something like ten minutes for the driver to be found and installed. Get a cup of coffee. Come back. And then assist (if needed) with completion of the process.

And there you have it. You are ready to go with what ever else you plan to get up to.

Engineering is the art of making what you want from what you can get at a profit.