Fun with the Maxim DS5000T microcontroller
A few months ago, I got myself two DS5000T microcontrollers. DS5000T is a popular product from Maxim semiconductors. It is (yet) another microcontroller based on the 8051 core. However, it is much advanced than plain 8051s or even the very popular AT89S52 microcontroller.
A very special word of thanks to Maxim who made the free samples of DS5000T available to me free of cost. In the market they cost about 50 USD each. Without their support I would not have been able to make this project. So thank you, Maxim !
So here is how a DS5000T looks like:
The DS5000T is considered advanced because it has an in built serial bootloader within it as well as its entire RAM contents are backed up even when you do not connect power. This makes it one of the most expensive 8051 based microcontrollers out there today. Because of the serial bootloader, we do not need any specialized programming hardware to burn the microcontroller. All we need to do is connect the microcontroller to a PC serial port and then follow a particular protocol and then send the hex file we wish to burn in it using that particular protocol. The bootloader accepts the data stream through the serial port and performs in-application programming of the device, thereby programming our hex file in it. Oh and did I mention it has an inbuilt real time clock as well ?
When I got these DS5000Ts, I at once set out to create a sort of development board for it. I was lucky to come across this link which gave the complete schematic for just such a thing. So I went ahead and created my board. Here is a snap of it:
On the left hand side, you can see two connectors. The bigger grey one is the RS232 or the serial port connector. The other end of it goes directly to my laptop. Well, not exactly since I do not have a serial port on my laptop. It actually connects to the output of my USB-to-Serial converter.
The smaller white one is the USB which powers the development board. On the top there is a small slider switch which is used to switch the board from programming mode to run mode and vice versa. All these details would be explained in the forthcoming video.
The big black IC that you see at the center is the DS5000T. It is somewhat bigger because of the fact that the DS5000T is completely based on NV RAM which is maintained by a small in built battery. This battery maintains the program as well as data contents for as long as 10 years. So technically, this microcontroller does not have any flash ROM or EEPROM. It contains NV RAM only, all of it. The NV RAM can be partitioned and a part of it can be configured to act as program memory and the other as data memory (8051 has a Harvard architecture). There is a total of 32KB available on the DS5000T and so I can configure the entire 32KB as program without any data or a part of the 32 Kb as program and the remaining part as data. I can also potentially misconfigure it to have 0 Kb program and 32 Kb data. But then the microcontroller would not work at all !
Now comes the biggest problem: I had my development board but no software to burn it. Well, there was this utility from Maxim itself to load hex files into it using the serial bootloader but then it was windows based and did not run on Linux. Being a Linux fanatic, I set out to create a Linux port for that loading software.
Just then it dawned upon me that I could use my earlier ‘gnuProload’ and enhance it so that it could talk to a DS5000T microcontroller as well. In case you have not read my earlier story on ‘gnuProload’ I suggest you do so, primarily because it is a very interesting read and secondly, it would some give you some background about gnuProload itself.
So after a weekend hacking session I was ready with my new version of gnuProload, which I preferred to call version 2.1. I made considerable enhancements in this version. First there was this ‘preferences’ dialog where the user could choose various settings like serial port device, baud rate, microcontroller type etc.. Secondly, I fixed some other bugs and made the operation much more smoother than the previous version. Thirdly, gnuProload settings were now entirely driven from a user config file. Various settings could be changed by changing the config file which was parsed once when gnuProload started up.
I made a screencast to show a demo of gnuProload. It is followed by the actual LED blinking demo wherein you can see how a small assembly program that I have written blinks an LED. Do post in your comments if you like the video
(Clink on the HD button in Youtube if you want a larger, better quality version of the video)
So, that was about me and my DS5000T. Here’s hoping I would create more exciting stuff with my DS5000Ts !
P.S. If you wondering how I created my screencast video then it is actually a combination of audacity, record-my-desktop, gnome-sound-recorder, ffmpeg and Windows Movie Maker. Phew!
P.P.S. Due to problems with the sound quality I was getting with record-mydesktop, I had to record the sound separately and then add it into the main screencast video. This is where audacity and ffmpeg came in handy. Maybe I shall write a small how to do this as well !
Where can I read about pic16f84 microcontroller in your blog ?!
@nitlogic ,
I currently have no plans to do any projects with the PIC. I prefer the AVR much more than the PIC.
Nice post Seem.
BTW, the source code was not too readable in the video. You could post it in this page too for reference.
PS: Nice new blog look