Saturday, September 30, 2006

Who says Google is Everything?

I always use Google to search all topics that I get interested. But it is so dissapointing that Google cannot list my personal webpage which I run at home. I did register my page manually using Google webmaster tool. I then used Yahoo to search, and you know what? it could find it!

Thursday, September 28, 2006

Life is getting easier with these Protocols

In hardware, people used to use parallel bus to communicate to other peripherals or devices on the same board. This is costly and more difficult to debug. Now we have these I2C and 1-WIRE protocols. The I2C stands for Inter-IC protocol which requires only 2 lines to connect to other devices (and it is shared line). These two lines (SDA and SCLK) carry data and clock in serial form, similar to SPI. Unlike SPI which in many cases need SC (select chip) pin, the SDA line can be shared with more than one device, because it is half-duplex. The rate spans from 100 kHz to 400 kHz.

1-WIRE is another protocol invented by Dallas Semiconductor. It is slower than I2C, but requires only one line (besides ground) to communicate. The line even can carry power too.

Another protocol is the popular USB. The newer is USB 2.0. It is standardized by IEEE with name IEEE 1284 This bus can also carry power and the speed is much higher than the two above. The speed can go upto 480 MBps (raw bits). The speed of USB 1.0 is 12 Mbps. From programming perspective, it is more diffcult to program than the other two. The protocol is mostly used in the PC world (including Apple Mac OS and Linux).

Firewire is also a good protocol, but seems is now not as popular as USB. Actually, Firewire (known also as I.LINK or IEEE 1394) was the first protocol that passed 100 Mbps rate.

Going down to internal microprocessor, there is HyperTransport from AMD and FrontSide Bus (FSB) from Intel. These protocols mostly used to communicate among modules in the same chip.

There are many other protocols, but seem they are not as popular as the above.

Why Windows Sucks

I am no more fan of Windows (any windows) because of many reasons. The first reason is it is resource-hungry operating system. My office laptop (it is IBM Thinkpad T42p with 2 GB RAM, 80 GB HD) is not as fast as at the first time I got it from IT department. After I installed many softwares, it became slower. I did try to shutdown some uncessary services, but not much help. Blame the growing registry! Many applications still leave artifacts in the registry, although you have uninstalled. Unlike Windows, Linux is still based on old fashioned plaintext of configuration files (but works perfectly!).

Another reason is that there is many copies of DLL files in my computer (either at home or at work). There are some common DLL files located in different folder. There is no concept of creating symbolic link in Windows. If you move the duplicate DLL from one folder to another file, the application from the folder where the DLL missing may not be working. In Linux (or Unix in general), you could just create a symbolic link, then the application will just treat the symbolic file as it is a real file.

Another reason is, it is not designed for automation. It is not common for people to write a script to do automation. Although Win2000 and up have this what so called "command shell, manytimes the Windows command shell is useless).

But, I still cannot get rid of my Windows (sigh). Many applications on my computer are windows-only. From tax reporting tool, games, to development software are still under Windows. Besides, Linux is still immature in its GUI (it is far to be a desktop GUI). I admit, from GUI perspective, Windows is much faster than Linux. This is because Windows is developed with GUI in mind from ground up, while Linux is actually a text based OS with GUI running just as another application in user level environment.

Wednesday, September 27, 2006

Embedded System Kit

My new embedded development kit arrived 2 weeks ago. It is based on ColdFire V2 5213 microcontroller made by Freescale. The development kit is made by Netburner ( The reason I chose this uC was because it is 32-bit microcontroller and it was cheap ($99+tax+s/h) from NetBurner.

The package came with IDE software, debugger, loader, DB9 RS232 cable and adapter. The card is quite small compare to Rabbit RCM3000 I have been using. Amazingly, the core itself is made into 40 DIP so fits into regular 40 DIP. When we are ready for mass produce, just use the same module and insert it into the socket.

I was thinking to get the higher end (MOD52??) which has ethernet connection, but the price was too high for my pocket so I decided just go ahead with MOD5213. I was thinking that I may put an ethernet module (from somewhere) later once I get familiar with the system.

The software is based on GNU GCC, so it is free and opensource. The module even comes with RTOS. Loading the software is easy. Just run the software "serialload", select the proper COM port and baudrate, select the S19-format file to load, click OK and ..that's it. The software works on Win95 as well as Win2000 or WinXP. Because my other newer laptops don't have RS232 port, I use my old Toshiba laptop (it is really old, it's only Pentium 100 MHz with 16 MB RAM and 1.5 GB hard disk). The software works perfectly, well, except it it so slow. It took many seconds just to compile a few lines of code.

There are many examples that come in the CD, but only a few for MOD5123. The rest are for higher end MOD5xxx modules (the ones that have ethernet port). Many of these I-cannot-run softwares use TCP/IP for communication (e.g., making an embedded-system web server, SMTP client, TFTP etc.)

The uC itself is really cool. Features such as 12-bit 8 channel ADC, General Purpose I/O (GPIO), I2C connection, CAN connection, UART/QSPI, DMA, one 32-bit timer and three 16-bit timers are included in the chip.

A few days ago I ordered some components from They have some very good deal stuff, such as 100 resistors with various resistance for $2.95, 50 linear ICs for $4.95, 50 various transistors for $4.95, and 16x4 LCD for $12.9 and so on. I ordered many of these and perhaps in the next few weeks will come so I can start doing my projects. I've not decided what project I should do first, but very likely to connect the LCD display, connect some sensors to the ADC inputs and do some measurements.

I will post again once there is some progress.

Wednesday, September 13, 2006

74XX Logic IC

Different kind of 74 logic device Families:

TTL (74xx) True TTL
74L Low power
74S Schottky
74H High speed
74LS Low power - Schottky
74AS Advanced - Schottky
74ALS Advanced - Low power - Schottky
74F(AST) Fast - (Advanced - Schottky)
74C CMOS...................check Vcc levels
74HC (U) High speed - CMOS (Unbuffered output)
74HCT High speed - CMOS - TTL inputs
74AHC Advanced - High speed - CMOS
74AHCT Advanced - High speed - CMOS - TTL inputs
74FCT (-A) Fast - CMOS - TTL inputs (speed variations)
74FCT (-T, -AT) Fast - CMOS - TTL inputs (speed variations)
74AC Advanced - CMOS
74ACT Advanced - CMOS - TTL inputs
74FACT AC, ACT (Q) series
74ACQ Advanced - CMOS - Quiet outputs
74ACTQ Advanced - CMOS - TTL inputs - Quiet outputs

Bus Driver Families

74ABT Advanced - BiCMOS - Technology
74ABTE ABT - Enhanced Transceiver Logic
74ABTH Advanced - BiCMOS - Technology - bus Hold
74BCT BiCMOS - TTL inputs
74BTL Backplane - Transceiver - Logic
74GTL Gunning - Transceiver - Logic

Low Voltage Families

74ALB Advanced - Low Voltage - BiCMOS
74LV (U) Low - Voltage (Unbuffered output)
74LVC (R) (U) LV - CMOS (damping Resistor)(Unbuffered output)
74LVCH Low - Voltage - CMOS - bus Hold
74ALVC Advanced - Low - Voltage - CMOS
74LVT (R) (U) LV - TTL (damping Resistor(Unbuffered output)
74LVTZ Low - Voltage - TTL - High Impedance power-up
74ALVC (R) ALV - CMOS (bus Hold) (damping Resistor)
74ALVCH Advanced - Low - Voltage - CMOS - bus Hold
74LCX LV - CMOS (operates with 3v & 5v supplies)
74VCX LV - CMOS (operates with 1.8v & 3.6v supplies

4000 True CMOS (non-TTL levels)

ECL Device Families:

MEC I 8nS*
MEC III (16XX) 1nS* .......* = Rise & Fall Times
101xx 100 series 10K ECL, 3.5nS*
102xx 200 series 10K ECL, 2.5nS*
108xx 800 series 10K ECL, voltage compensated, 3.5nS*
10Hxxx 10K - High speed, voltage compensated, 1.8nS*
10Exxx 10K - ECLinPS, voltage compensated, 800pS*
100xxx 100K, temperature compensated
100Hxxx 100K - High speed, temperature compensated
100Exxx 100K - ECLinPS, temp, voltage comp., 800pS*