Featured Engineer

Interview with Eduardo Viramontes

Eduardo Viramontes

Eduardo Viramontes - Microcontroller Applications Engineer at Freescale Semiconductor; Mexico

How did you get into electronics/ engineering and when did you start?

Ever since I was a child I was obsessed with taking stuff apart and figuring out how it worked. I did it to most my toys and a lot of my dad’s stuff as well. I would always be extra-careful with my dad’s stuff but once I broke his headphones and he got very mad (they were either very expensive, very high-end or he had some sort of attachment to them, I’m not sure), he has reminded me of that incident all of my life, so last year I got him some nice headphones for Christmas, hasn’t mentioned the incident so far. Anyway, my interest in electronics came from the frustration of not being able to figure out how electronics worked. I would figure out as far as simple electric machines, like motors (which I love), I had toys like Meccano and stuff designed to build your own contraptions (my parents eventually figured out that’s the kind of toys I needed) and I learned a lot from them. I had computers at home ever since MS-DOS machines were affordable in Mexico (around 88, but I’m not entirely sure), because my dad was a big technology fan even though he isn’t an engineer. I learned to type away DOS commands, learned some LOGO at computer summer camp (yes, so nerdy, I know), some Basic in high shool and generally became good with computers. So I understood mechanics and computing but not the middle part that made them work together, so that was the challenge. Later on, in high school I went through a phase where I wanted to become a musician, but I eventually sat down to think what I was really good at and then chose electronics based on my childhood frustration.

Why are you in technology?

When I was in high school I loved music (I still do), to the point that I considered making a career out of it. Luckily or not, I wasn’t as good a musician as I was at basic engineering skills. I eventually decided that it made more sense to study engineering and continue to pursue music as a hobby, I still do. But I did condition myself to do engineering in my own terms. The most important of these terms was to do what I called “humanized” engineering. Engineering that makes sense, that serves people and is not only there to show off. I also think engineering can be a form of art and a form of expressing creativity. I have mostly worked on embedded computing in my career. But recently I have come to appreciate more and more the art in analog design, and in mixed-signal integration where analog and digital don’t mess each other up but rather work together harmoniously. There are some awesome circuits out there that truly show this and that are trademarks of their creators. Programming also has art into it, particularly in implementations of specific algorithms, where decisions as apparently simple as a while vs a do-while could have interesting and creative explanations, much like an artist is able (or not) to explain the metaphors he/she uses.

What are your favorite hardware tools that you use?

I wrote a blog post on this some months ago, it’s not really a tool, but I think good connectors are so cool and an integral (and often underestimated) part of good design.

Apart from that the title for my favorite tool is disputed between the oscilloscope (the bigger the screen, the better) and debuggers. Since I work for Freescale the two debuggers that are always on my desk are the P&E Multilink BDM for S08, S12, Coldfire parts and the Segger jLink JTAG debugger for all the new Kinetis parts based on the ARM Cortex M4 parts we’re putting out.

What are your favorite software tools that you use?

Given the type of work I do, it is very practical for me to have a good text and data comparing software. I very frequently have to port code libraries between MCU or even architectures. I also do customizations based on previously written examples, so a good code compare tool is very useful to me. I’m using Beyond Compare 3 and it works great.

I also use code generation tools a lot, particularly Freescale’s Processor Expert. I don’t usually build big full applications with it, but I will use it for initialization to avoid having to go through a whole set of registers each time I need to set up a serial link, for example.

Lastly, there is nothing better than a good debugger. One that’ll allow me to see variables refresh in real time, let me put breakpoints anywhere, even while running, not get completely lost when going into low power modes and with a customizable GUI. My two weapons of choice in the last couple of years have been IAR and CodeWarrior. IAR has a great debugger because it’s fast. CodeWarrior is not as fast (the Eclipse IDE is Java-based and huge) but is oh-so customizable and that’s always a plus.

What is the hardest/trickiest bug you have ever fixed?

This one was probably not the hardest but it was tricky and it taught me a lot about working in embedded systems when I was fresh out of college, where you are never isolated from the real world. I developed an IrDA driver using bit-banging on a small 8-bit MCU. After getting it working and solving a few bugs on testing, I went out and did a beta trial on field. In this case field meant open air, by the way. Everything was working fine until the afternoon, my little IrDA accessory ceased to work. I grew frustrated as everything had been fine earlier. Did the battery run out? Did something burn in the little board? Nope. Along came a field technician and said: I’ve seen this before, it’s the sun. This guy had no engineering title or any experience programming, but he knew this, because he’d seen it so many times with previous generations of the product. I, being a fresh-out engineer with no exposure to sunlight, hadn’t thought of such things as sunlight filtering directly even through the Ir filter window thingy. I went back to the lab and figured out I needed to add something similar to a debouncing algorithm, some retries, some error status messaged and eventually went back to the field and got it right.

Other than that I think I’ve dealt with spurious reset issues on processors more times than I should have. About half of those times it’s been stack overflows and the trick is always in the lower end MCU, that don’t have stack monitors, you need to figure out a way to find how much the stack is filling up.

What is on your bookshelf?

I am from the internet generation, so I don’t really have too many technical books.

As far as other reads, I’m reading Bicycle Diaries by David Byrne, I bike to work and to most places even though it’s a bit dangerous here in Guadalajara since there aren’t enough bike lanes. David Byrne was here some months back and I helped in the organization of the conference where he presented the book and then had a round-table discussion with members of citizens group that I belong to and that are working and fighting for more sustainable transportation and better public space and government representatives. I even got to help Mr. Byrne get out of the theater once the conference ended and the fans came asking for autographs. My book is signed by him ;) After that I’ll be reading “Puedo explicarlo todo” (“I can explain everything”) by Mexican author Xavier Velasco.

Do you have any tricks up your sleeve?

Design your systems so that there are no floating voltage sources with residual power still on once main power is off, this voltage could end up not having a stable reference and damaging something ever-so-slightly so that the damage is not obvious (no magical white smoke comes out) but the device starts behaving erratically.

What has been your favorite project?

Anything related to motor control. I love motors, they’re fun, they move (unlike most electronics) and they have so many essential applications. I recently worked on a refrigerator compressor reference design based on a BLDC (brushless DC) motor and it was particularly challenging because it was sensorless and because compressors have such a weird load, particularly on start-up, where half a turn is very soft and half a turn is loaded (due to the piston moving up and down). This means that the start-up algorithm that is basically guessing how much time it needs to switch between phases and how much voltage to apply needs to be extra well tuned and extra tolerant to errors (but not so much that the algorithm goes out of synch). I burned a lot of FETs doing it.

Do you have any note-worthy engineering experiences?

NEVER work with a board that has AC on top of a conductive bag, it’s called conductive for a reason and you’ll smell it and see it very soon.

What are you currently working on?

Touch sensing. Everything touch sensing, reference designs, testing. Sadly I cannot go into too many details, but touch sensing applications would be the best description.

What direction do you see your business heading in the next few years?

I have not been in the embedded systems industry that long, basically 3 years as a customer and 4 years with Freescale, so I haven’t felt the long ups and downs. Even so, I have gone through one economic downturn and with a company that had to go through a lot to stay afloat. I think this cyclic trend will continue to be a part of this industry, but I worry about the cycles. It used to be that the cycles would take about 10 years, but in the last years it seems the cycles are getting shortes. It probably is to early to say if the current one is going to be bad for the whole industry or not, let’s hope it isn’t.

As far as technology goes, I think my career has mostly mirrored what’s going on in the industry, started in low end 8 bitters and climbing up to higher end devices. Semiconductor vendors are offering increasingly more performance at a lower cost, and at the same time are bundling that with software. This trend will continue and we will see more sw-hw integrating even on the silicon level (sensors and advanced analog). I also expect to see multicore prices start to drop down to a point where, in a few years, we’ll see multicore products in the general embedded and the industrial market and not only in the world of PCs, tablets and smartphones. We’re already seeing that, but in a few years it’s going to be a normal and required skill for embedded engineers to know multicore programming. I gotta start studying.

What challenges do you foresee in our industry?

I see the price of oil and the availability of oil as the big challenge. Remember that oil not only means power, but also materials. I think the semiconductor industry should be behind big recycling movements, particularly in plastic and metals. Our products, particular the consumer products, are filling up the landfills worldwide. Those places will eventually be the new mines of the world and the semiconductor industry should be backing the companies and individuals that are developing technologies to mine through those places and get back the materials in a sustainable way.

Why do you have an embedded systems blog?

Two reasons, one is my “humanized” engineering concept above. I believe that the blog is a great place to communicate in a less formal way than data sheets and reference manuals. Engineering also has some other concepts that are not measurable. Not that we should just start guessing all the answers, but we should constantly question the human value of what technology we are developing. Also, I’ll run into cool technical stuff from time to time and I like to share it and also record it for my own memory.

You can read my blog here.

Previous Spotlights

 
Click Here