Conseils de programmation : Embedded Programming Tips: YAMI4 on Arduino Uno : the YAMI4 project was extended to cover also the Arduino platform - YAMI4 is an open-source set of libraries for building distributed systems and this new package makes it very easy to communicate with Arduino-based devices.
The embedded video demonstrates the most basic concepts.

I2C/TWI code (imagecraft compiler)
The "Using the TWI" section in the ATmega128 datasheet (page 211) has assembler and 'C' listings side by side for an example of using the TWI registers. Status checking is polled rather than interrupt driven, though.

Not exactly what you are after, but here you can find polled
(non-interrupt) code for avr-gcc:

See the 'diag' example. The i2c.c file contains some lower level i2c
code, while diag.c contains some examples of its use, i.e., see the
i2c_ds1307_read() routine. Cygnal Integrated Products Microcontroller Family The C8051Fxxx is a family of in-system programmable, mixed signal System-on-Chip microcontroller products. They integrate world-class analog, a high-speed (up to 50MIPS) pipelined 8051 CPU, ISP Flash Memory, and on-chip JTAG based debug in each device. C8051Fxxx products range from devices in the tiny Micro Leadframe Package (see photo) to larger scale devices in the 100-TQFP package. open source IDE for the gnu C compiler, also open source Assembler IDE that comes with as11 and as12

ATMEL AT89C2051/4051 ; ATMEL AT89C51/52/55, 89S8252, 89S53 ; AVR AT90S2313, AT90S8535, MEGA103 ; Microchip PIC12C508 PIC16F84 ; Motorola 68HC11 ; I/O, Supervisory Circuits & Designer's Companion ; Internet Microcontrollers Experiment - LINKS : This page provides circuit and software for hobbyists to practice learning-by-doing, build a simple microcontroller projects.

HSE-Electronic the competence for embedded systems, C166- and CAN-Application. AMD flash programming : their flashIt program is rather good and will.C166-Family, Flashit, Cantrax, CAN-Module, CAN-Hub, Development,




The JTAG cables described on the Olimex website work with all the Flash
microcontroller. This JTAG cable all you need..


SoftBaugh, inc. has just released their TI MSP430 development environment. It is a Windows based cross assembler, linker, and simulator with support for their Flash bootloader system.

They don't have any screen shots up on the web page yet (they just released it this week I think, because I hadn't seen it up there before) but I downloaded the demo version that's fully functional and not date limited, but rather limited to 512 bytes of code space.
The GUI is pretty sharp with a nice editor and doesn't require you to have lots of child windows hanging around all over place to see registers and memory and stuff like that. I'd guess that the developers were inspired by the Microsoft and Keil approach to integrated development and debug, which I think looks pretty cool.

I am somewhat new to TI MSP430 development and would be interested in hearing what other developers think about this new system.

--Keith Brafford

Link to the product web page:

Link to the demo version (512 byte code limit):


MSP430 C Compiler
Geraldo Sazias wrote:

> I'm still waiting for the ImageCraft MSP430 C compiler
> (

Imagecraft is definitely going to release this, they have invested over $40K,in addition to our in house development cost, so this puppy will see the light of days.they do have a number of priorities though, so things get juggled around.


Hi all together,
anybody has experience with the new MSP430 quadrofox C-compiler ?
Since the compiler is based on a general purpose compiler without processor-specific optimization I think the code is more inefficient then the GNU- or IAR compiler?
There are any news about the Imagecraft MSP430 compiler?


The ImageCraft ICC430 MSP430 is progressing well. We just have lots of things with higher priorities than the ICC430 taking up some times, but we should have a beta version pretty soon. We expect our code quality to be very competitive, as the MSP430 architecture is fairly orthogonal.

AMD flash programming

> I have troubles writing to AMD-flash AMF29F400BT!
> I am using a C161O microcontroller from Inficon.
> The flash is addressed in word-mode (word configuration).
> I am looking for code to program (write), erase flash memory. If possible in assembler.

When you are writing a boot loader routine for a flash, you should keep a couple of things in mind:
- the programm cannot be executed from the same flash that is being written. You have to run the boot loader from another memory (maybe processor
internal memory).
- the flash is usually organized in pages (e.g. 64 Byte). When you write only one byte of that page, all bytes will be affected. If you want to modify one byte, you have to read the whole page, modify one byte in the buffer and write back all bytes of that page.
- writing a flash (programming it) requires some time. There are different mechanisms that let you check if the write cycle is already over. SOme ATMEL Flashes will invert the bit#7 and toggle bit#6 when you read out a byte while the write cycle. Read the datasheet of the flash chip your are using.
- programing a bootloadable firmware can be a bit tricky. It makes sense, that you write protect (maybe by HW) the first kilobyte or more of the firmware. This area can contain a routine that will jump to the bootloader, in case the upload was not successful. SOme processors might contain the interrupt vectors in that area, so you have to jump from the original interrupt table to a secondary interrupt table in the unprotected area. etc.


This is definately NOT the case with AMD flash. These are organised as sectors, ranging from 8k to 64k, which can be written one byte at a time, at any location.


I have seen the small segments with tight write timing for a block only in Atmel Flash chips. The specs are IMHO a PITA (pain in the lower back).

The AMD way of writing: new ones can be only bought erasing whole sectors (16 - 64 kbytes, depending on chip). New zeroes can be programmed individually (yes, it is possible to program new zero bits to a byte already somewhat programmed).

IMHO, the AMD way is becoming an industry standard - good.


You can WRITE them (AMD or any other flash) one byte at a time from clean, but if you want to modify that byte, you have to erase the page (sector) containing that byte, then rewrite the whole page. Which is a total pest. For small amounts of occasionally- changing non- volatile memory, EEPROM is much to be preferred, or better still FERAM.


The uC has a internal RAM of 2kb size. I am running the second part within the internal RAM. So the code of the first and the second part is stored in the internal RAM and also executed from there.
Besides internal RAM and flash memory we have two additional RAM's (U62H256S1K55). Do you think it is better to save the application code in this additional RAM first and then transfer it to flash? Developing Embedded Software in C Using ICC11/ICC12/Hiware QuEST is a series of papers based around the theme of Quality Embedded Software Techniques. It is not for a specific industry or specific type of work but for all embedded C. It is usually faster, more efficient and surprisingly a lot more fun when things work well.

C code for an ST-micro chip???

I would like to challenge your statement. While it is true that to drive the coils you always need external hardware, several microcontrollers like the Infineon 16x or ST10 have powerful PWM and timer units on board that you can very well use to control all kinds of motors. And they can easily be programmed in C, as a matter of fact, C is more often used than not for these kind of applications. For more information feel free to visit our free online training class on "Motor Control using PWM" at


LCD with 4 bit greyscale

IIRC, a gameboy is cheap with a colour LCD and ARM cpu. A google
search should find lots of sites.

Check out
This is a surplus web phone being sold by some guy (Tim I suppose) out of his house. I haven't had time to play much with mine yet. The cost, $99, of the
phone is at least 1/5 the parts...

Intel SA-1100 StrongARM CPU clocked to 133/206 Mhz
16 MB EDO/DRAM -> 8 MB onboard + one 8 MB 72 pin SODIMM
4 MB BootableFlash on two Am29LV160DB-120EC chips
512k serial DataFlash, on one AT45DB041A-RC
2 3.3v PCMCIA slots
1 serial port, tested at 115.2k
POTS (phone) connections
Sharp 8" diagonal LM8V31 DSTN 640X480x8 Color TouchScreen
LucentDSP UnderRFShield
Infrared Keyboard
receive InfraredPort for the keyboard (Reading codes using code from
the lirc


Marcel wrote:

I`m looking for an LCD with at least 4 bit greyscale and built in
controller, or connectable
to the LCD port of a SA1110 Strongarm. At the moment I`m only lookig for a
few pcs for
prototype development, but for not too many $$

Any suggestions ? Cours CNAM sur l'architecture PC (informatique industrielle)

my own RTOS - how???
It'd appear too small for the task set. I's start with a PC type 8088, or as I found recently a 386-25 in a compactflash case : in german. There are complete preemtive multitasking kernels available, such as the RTKernel : it also comes with source when required. RTOS Implementation des Windischer Threads Package

Librairies Graphiques: GD Graphics Library An ANSI C library for the dynamic creation of images. GD creates PNG and JPEG images, among other formats. GD does not create GIF images. The Qt/Embedded product provides you with all you need to create stunning graphical user interfaces for embedded devices. Qt/Embedded installs and runs with a very small memory footprint on any device running embedded Linux - without using X11.
Embedded systems File Systems: link : USFiles« is a DOS/Windows compatible file system that has been designed to be processor and RTOS independent. USFiles can operate in a stand-alone mode and because it is reentrant, it supports multitasking RTOSs such as our SuperTask!« and ÁITRON compliant TronTask!« products. USFiles also supports standard ANSI C file I/O function calls.
At one point in the not too distant past, both DataLight and AMX were shipping "MS-DOS" file systems for embedded use. I don't know if they're current products. Also, if money is a problem and time isn't, you could extract the filesystem from FreeDOS.
Have a look at RTFiles-32 from On Time:

I am trying to use the GCC compiler as a cross compiler for the M68HC12
by following the instructions at the following website:

Everything goes fine until step 4.2 where I try to do the make command for newlib.

I get the following errors.

cc1: Invalid option `relax'
m6812-elf-gcc: file path prefix `/work/m68hc12/build-newlib/m6812-elf/newlib/' never used
make[5]: *** [__adjust.o] Error 1
make[5]: Leaving directory `/work/m68hc12/build-newlib/m6812-elf/m68hc11/newlib/libc/stdlib'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/work/m68hc12/build-newlib/m6812-elf/m68hc11/newlib/libc'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/work/m68hc12/build-newlib/m6812-elf/m68hc11/newlib'
make[2]: *** [multi-do] Error 1
make[2]: Leaving directory `/work/m68hc12/build-newlib/m6812-elf/newlib'
make[1]: *** [all-multi] Error 2
make[1]: Leaving directory `/work/m68hc12/build-newlib/m6812-elf/newlib'
make: *** [all-target-newlib] Error 2

Has anyone successfully completed the steps in section 4 of the instructions? If so, which distribution did you use? I have

tried both Slackware 7.0 and Redhat 6.1 with the same results. I have also tried different make commands as given below:

make CFLAGS="-g -Os -Wall -mrelax"

make CFLAGS="-g -Os -Wall"

make CFLAGS="-Os -Wall"


Each time I started by rm -r build-newlid, rm -r newlib-1.9.0-m68hc1x and then starting from

tar xzvf newlib-1.9.0.tar.gz in step 4.1but with the same result.

I also tried using the rpms on RedHat 6.1, but they are not compatible with libc 2.1.2.

Any suggestions would be greatly appreciated.

Reply to: (mail checked week nights and weekends)


Motorola will gladly sell you one:

MCUinit ™ Rapid Initialization Software
The MCUinit development tool simplifies and accelerates initialization of 68HC16 and 68300 microcontrollers. It includes a graphical user interface, on-line context-sensitive help, automatic code generation and rule checking, and debugging support when used with the MMDS1632. MCUinit software currently supports the 68HC16Y1, 68HC916Y1, 68HC16Z1, HC16Z2, 68331, 68332, 68F333, 68334, and 68360 microcontroller derivatives. On- chip IMB peripheral modules supported include the QSM, MCCI, TPU, GPT, SIM, SCIM, ADC, and various types of memory, such as SRAM, ROM, and FLASH EEPROM. Clicking on a particular IMB peripheral button opens configuration panels for the module. Users enter settings for the module, such as the clock rate, address range, timer functions, and baud rate by clicking a button or filling in a text box. Once selections are made, the MCUinit tool generates the initialization code in C or in assembly language. The code is fully commented for maintenance purposes, and users may add their own comments.


A company called AiSys ( http://www.aisysinc/) used to have a product called DriveWay for the 68K series. It did all the things you mention and would even write code for drivers for most of the devices. Their web page no longer shows a 68K product, though. I suspect that it wasn't a real hot seller as they wanted $30,000 per copy, though! ;-)
At one time they said that they had some customers that would process code to meet your requirements---at about $5K per job.
That didn't tickle my fancy either!

Looks like MCUInit is your best bet for now.

Retour au sommaire

Retour Ó la page d'accueil

Mise Ó Jour le : 22 septembre, 2014

Email :