Arduino Pt.1

Taking advantage of strong disagreements inside Germany, the Italian feudatories rebelled and, in 1002, elected Arduino, Marquess of Ivrea, king of Italy. He distinguished himself particularly because of his fights against the Bishop of Ivrea.

Today, Arduino distinguishes itself in price, capability, openness, and ease of use – but first things first.
Arduino is an open-source computing platform based on a simple board, and a development environment for writing software. The Arduino board hosts an Atmel MicroController chip, the AVR-ATMega8, which has 8-KByte self-programming Flash Program Memory, 1-KByte SRAM, 512 Byte EEPROM, 23 I/O pins, 6 or 8 Channel 10-bit A/D-converter, and 16 MIPS throughput at 16 MHz. The other IC on the board is an FTDI FT232RL, a single chip USB/Asynchronous serial data transfer solution, with 256 Byte receive and 128 Byte transmit buffer.

Considering that these two chips alone would cost you about $10, the $32 that Spark Fun charges for the fully assembled, RoHS compliant, and tested Arduino board looks like a real bargin. Moreover, like Tod points out, the Arduino looks even more attractive, when compared to the $119 Basic Stamp, which is another embedded computing platform, mainly for hobbyists and education. However, Arduino is actually two things, … Arduino is actually two things, a AVR-ATMega8 processor based hardware board and a Processing / Wiring based software programming environment, containing AVR GCC, AVR LIBC, and AVRlib.

Processing is an open source programming language and environment to program images, animation, and sound (initiated by Ben Fry and Casey Reas (UCLA Design | Media Arts).
Wiring builds on Processing, is a programming environment for exploring the electronic arts, teaching and learning computer programming and prototyping with electronics (initiated by Hernando Barragan, University of Los Andes Bogota, (Colombia)| Architecture and Design School).
Still, with Arduino you can also use real GCC C code to implement your algorithms and access all the hardware of the AVR chip, as long as you can make them fit into the 8 KByte onboard Flash Memory, which is actually more like 7,168 byte, considering the boot loader.

Small hack increases available memory by 6.3%

Arduino’s standard library still supports some legacy serial code, which can be removed by editing arduino/lib/targets/arduino/wiring.c (Arduino Version 0006):
Start commenting out code at line 241, insert /* just before void beginSerial(long baud)
This will reduce the size of a deployable program and increase the available memory for custom code by 450 Bytes, which doesn’t sound like much but is equivalent to 6.3%.

Adding an HD44780-compatible LCD to an Arduino board is as easy as can be. The Arduino-Playground has detailed information and there is even a 4-bit mode library, which would save 4 arduino port-pins for other uses.

What’s next

Like mentioned above, the Arduino board hosts an Atmel AVR-ATMega8 MicroController, which has 8-KByte self-programming Flash Program Memory, 1-KByte SRAM, and 512 Byte EEPROM.
If 8-KByte programming memory is not enough, there is fortunately a PIN compatible Atmel MicroController, the ATmega168, which has twice the Program Memory. However, even the ATmega168 board has only 1-KByte SRAM, which is the memory used for local variables, the call stack, etc.
Let’s see if we can get the ATmega168 to work on the Arduino board .

Resources

 

Leave a Reply