Posts

Showing posts from July, 2006

Moving code from ESP8266 to ESP32

Image
A while ago I made a mashup of Dan Royer's code CNC 2 Axis Demo with my own code for trapezoidal motion stepper and servo control for ESP8266.

I assumed porting the code to the ESP32 would be trivial, and that was true for the most part: changes like library name being Wifi.h instead of Wifi8266.h were not a problem. UDP now does not like multicharacter writes but you can use print instead. So far so good.

However, when it came to the interrupt code I was stuck with the stepper interrupt causing an exception sometimes. And to make things weirder, the servo interrupt worked flawlessly (both of them had the IRAM_ATTR directive if you ask me).

Going little by little, I could narrow down the culprit to a floating point operation during the interrupt, that would cause problems sometimes but not always. Browsing around I found this post. Where the solution was simple: do not use floats within the interrupt routines but doubles. The reason was the float calculation would be performed by…

Intel is back on top

Image
Although media messages have been a bit confusing, it seems that Intel is regaining customers from AMD. At the same time that AMD is buying ATI (an therefore expanding the number of fronts the company will be fighting), Intel is presenting new versions of their saga of confusing names:

Pentium D
Core Duo
Core 2 Duo

Code names are not helping either as Yonah, Conroe or Merom tell you nothing about the processor (unless you are an Intel engineer).

So will tell you my simplified version: Pentium 4 is dead. Hyperthreading is not bad but having a dual core is better. It means more instructions executed per time unit (faster processing). Trouble is that the thing tends to be hot, hotter as it gets faster. It gets hotter because it uses more power, so computers need these 400W or 500W power supplies to keep all the parts properly sourced of energy.

Intel has moved from 90nm to 65nm which means transistors are now smaller (they have to be if you plan on packing 350 million transistors in a small p…

Advanced Web Publishing Service

This is the name of a new service offered on my university campus. It really is a Plesk-based control panel with a choice of databases and content management tools running on top of Windows 2003 servers.

As I have been running several servers and databases I thought I was well prepared to use this "advanced" new system: I was wrong. While Plesk's control panel looks nice (and you can chose the skins that pleases you the most) it was not very easy for me to manage through all the system. Eventually I was hitting against the wall when trying to import an ASCII file to fill-in a MySQL database table using phpmyadmin (because of wrong default options). I did not like the default management for SQL Server databases was done over (insecure) http connections. For reasons that were not explained PHP scripts returned a 404 Not Found error while at the same time I could not change any of the file access rights and, surprisingly, ASP files worked without any problem. Later on the sy…

New article

Image
I already mentioned in this column that I was waiting for an article I wrote to be published on Circuit Cellar magazine. And there it is in the #193 August issue.

It describes some of my work to get an RFC 2217 serial device server based on a Rabbit Semiconductor 8-bit microcontroller. Some of the problems were mentioned here in the past but I've put together all the details to give readers an understanding of the full process.

My experience with Rabbit cores has been quite successful and I think it is a nice, cheap and low-power platform for not so complex systems' automation. The learning curve is not steep and the development tools work as expected, just keep in mind you need a serial port to get it working (and a real one will be faster than a USB-serial dongle).

World's smallest development kit

Image
I've just got one sample ToolStick devolopment kit. It consists of a USB dongle and a credit card sized CD with the software. As the ToolStick is USB powered there is no new for an external power supply. The drawback is that it only contains a couple of outputs connected to a pair of LEDs so you can check whether your software is working as expected or not.

It is certainly a minimalistic setup and the easiest one to carry around. I'm not sure it can be very useful for general purpose development, but it seems like a cheap tool to be used (and given away) in the the classroom. A ToolStick costs $10.99 plus shipping. If you are happy with just two output LEDs I do not think any other system can beat this one as this one contains a nice Windows IDE and C compiler.

Minix is back

Image
When I was a Computer Science student I've learned some of the Operating System basics with Andy Tanembaum's Minix educational Unix-clone. It was not powerful but it worked on a PC with less than 1 MB of RAM off a floppy disk.

While the aim of Minix, and later on that of Minix 2, was to provide an educational tool, the new version Minix 3 is intended as a microkernel OS for embedded and resource-limitted computers and for applications that require high-reliability too (I like this latter one).

Minix 3 is still a work in progress and ports to other targets different than x86 are underway. But if you want to give a try you can download the CD or USB dongle image so you boot a live system and to perform a hard drive install. While not even close to what you get with a current GNU/Linux or FreeBSD it is still worth trying it out. Full C source is available.

"Paella Valenciana" HOWTO

Image
It is time to get out and have some fun while your computers are powered off. So I propose a radical change just for today: Cooking a typical dish from my area that all of my friends love.

First of all the ingredients you need (I assume you already have a paella pan):


You add some olive oil (to cover 2/3 or the pan surface) and start deep frying the chicken you previously have salted.



Once the chicken is getting brown, spread it to the side of the pan and put the beans in the oil to fry it a bit too (beware not to burn it). Once this is done add the tomato and garlic and fry it too.



Add one spoon of sweet paprika (non hot!) and stir and mix thoroughly. Then add water up to half an inch of the border of the pan (for this to work you have to have quite flat to start with) and add the yellow food colorant too (or safron if you can afford it).



Let the water boil for half an hour so all the ingredients will get fully cooked. Afterwards add the rice (that has to be half the volume of water you …

S.M.A.R.T. HDD temperature, too

Image
When I installed Speedfan software to my children's computers I realized it allowed you to measure the HDD temperatures if they are SMART compatible (which they are). So I thought it would be nice too to have such info on my Ubuntu desktop too.

So I google for a moment to learn that hddtemp allows you exactly that: to measure your SMART-compatible HDD temperature from command line: just install it
sudo apt-get install hddtempand typesudo hddtemp /dev/hda (or any other drive name you have). It works as expected and you may consider to run it as a daemon so you can use the nice Gnome sensors applet that does a very nice job of showing all the temperature (and fan info if you wish) collected by several means, including acpi, lm-sensors and hddtemp. It is not installed by default so you'll have to install it too.

Motherboard temperatures

One of the important things when you plan on overclocking a system is to have an eye on the system temperature. Some systems are providing all data you need through ACPI and it is shown in the /proc/acpi/thermal_zone/ folder.

However my /proc/acpi/thermal_zone/ folder is empty. I thought that this was because a bad ACPI implementation. You know, the BIOS contains a description of the capabilities of the hardware that is handed over to ACPI and it is called dsdt. Sometimes this file is broken and it contains errors but because they only test it against some version of Windows some errors are not fixed.

You can extract your system's dsdt and fix it yourself. Linux boot process can either use the dsdt provided by BIOS or it can use a fixed copy you create on initrd. To do the latter, you need a patched kernel. The kernel that ships Ubuntu's Dapper Drake is already patched to support this feature, so you can store your patched dsdt to /etc/mkinitramfs/ and name it exactly as DSDT.a…

Fired for porn surfing (II)

Some time ago (March 2006) I mentioned I was being asked to write a judicial report. The case was about a big company (supermarket chain) firing a worker for alleged porn surfing using the company laptop.

This week I have learned that my client has won the case and he is either getting his job back or a significant amount of money for leaving the company.

What I do not know yet is if my client will sue the company for building a false and humiliating case against him.

It seems that big players have to stick to the rules too, at least sometimes.

Trying to get some music ...

Image
... into my old Creative DAP Jukebox in Ubuntu on my new machine revealed that USB ports were not working properly. Although they were recognized nothing much happened as if interrupts were not getting to the system, however network card, keyboard and mouse were working and are also interrupt based.

Rebooting the system with the "noapic" keyword as a boot option cured the USB problem. It confirms that it was somehow due to a bad routing of interrupts. I've added this my kernel boot line in /boot/grub/menu.lst to have it as default.

Unfortunately life is always challenging us and this fix of the USB did not solve my problem. Neither Gnomad2 2.8.1 nor Neutrino software were able to talk to my MP3 player (though I have successfully communicated with it and an Ubuntu-based laptop at home). Because I've just downloaded the latest version of Knoppix that my friend Victor Alonso kindly translates into Spanish. I decided to give it a go to see if it included newer versions of …

uli526x annoyances

Image
When testing the Asrock775Twins-HDTV almost everything went ok. The keyword here is "almost". The built-in network card did not work. It seemed like the cable was not detected. As it is a Gigabit Ethernet I was not sure if the link auto-sensing could be creating the trouble (as the computer it is connected to a Fast Ethernet switch).

I had a cheap Realtek 8139 Fast Ethernet card on my desk so I installed and I got the system working. But just to be sure I decided to reconnect the network cable to the previously non-working built-in socket to see if it was still dead. To my amazament this time the interface worked.

Next day I'm getting rid of the Realtek NIC but then here it comes again. The built-in NIC does not work. A "dmesg" command output informs me the "Link is down" so it looks like a cable problem. I install back the Realtek and everything works again, including the built-in NIC.

I'm kind of tired with this fight so I just disable the built-in…

Motherboard replacement

By now, I've replaced three computers' motherboards, two of them were brand new and the third was actually relocated from one box to another. I have used a couple of cheap Pentium D 2.66Ghz to equip the new ones (around 115 Euros each taxes included). The motherboards came with this nice install video. So if you wonder what's all this thing about LGA775 socket you may have a look at it. In case you wonder LGA stands for Land Grid Array and it is type pin-less chip carrier, similar to BGA but where the balls have been replaced by flat conductive pads. So now the pins are on the socket instead of on the chip and you have to exercise caution not to damage them (or you'll need a new motherboard).

As usual the replacement of the motherboard of a computer (and sometimes also the graphics card) is not without problems: All my systems had some version of an AMD K7 processor, so the change meant a new CPU type, new chipset and in one case, new graphics card (as the Asrock775Twin…