On Mechanical Sympathy

Jackie Stewart was the Formula 1 World Driving Champion in 1969, 1971, and 1973. He raced in the Can-Am series (even here in Edmonton) butting heads with the likes of Bruce McLaren himself. 

One thing that Jackie had going for him was that he was smooth. He became a part of the car, they worked together. He worked hard to understand what the car was telling him, and how to get the car adjusted to work with him. He had Mechanical Sympathy.

In computing, we are given operating systems, compilers, databases, and machines. By getting our own version of mechanical sympathy, we can understand what is happening, and use our knowledge to get the maximum out of our systems.

In this post, Andrei goes a little deeper into mechanical sympathy and gives some links to videos and podcasts for your enjoyment.

Read More

Using Inputs and Outputs to Make a Toy

Having considered digital inputs and outputs, you’ve already seen more than 50% of a toy’s hardware. Oh sure, we should talk about the fancier sensors, motor control, and audio outputs but those are one-offs, specific to a toy’s particular function. Many toys don’t have them or only have one; buttons and lights are enough for some toys...


I’ve mentioned the processors in the toys a few times. I can’t show you what is inside the software (partially because the designers sensibly locked out the ability to read the code from their processors). I can show you how to figure out what is in the software without breaking any laws or copy protection.

Read More

Embedded Wednesdays: Floating Point Numbers

In this week's installation of Embedded Wednesdays, Andrei gives an overview of floating point numbers. He goes over a bunch of practical issues that go along with using floats including truncation, and repeating binary patterns.

If you use floats in your program, it may not be doing what you meant. That slow response may just be because - well, read on...

Read More

Embedded Wednesdays: A Crash Course in C - Part 1 - Integers

After a review of the Embedded Wednesdays classes at ENTS, we identified a need for more information about the C language.

This week Andrei starts a series of posts introducing the C language. In this first post he describes the integer data type and some best practices.

 

Read More

Embedded Systems - from the Guy Who Started It All

Desktop computers constitute approximately 0% of all microprocessor sales by volume. Who knew? Not very many people as it turns out.

In this short video, the inventor of the microprocessor, Ted Hoff, discusses how the average person doesn't understand the role of embedded control.

 

(Intel 4004 image by Thomas Nguyen CC BY-SA 4.0)

Read More

Quadcopter Controller: Buttons and Joysticks

The quadcopter controller has some normal push buttons which work the same way that the karaoke buttons work. The on/off switch is a slide switch (like karaoke’s on/off switch but its action goes side-to-side instead up-and-down), the rest are momentary buttons. From the outside, it may not be obvious that the controller’s flight trimmer inputs are momentary buttons, they look like rocker switches

Read More

ESE101: Picking a Processor Platform

I’ve covered quite a bit in ESE101 so far. It started with a fictional microcontroller and now you understand how a microcontroller uses instructions, registers, and memory to get its job done.

The fictional microprocessor was good enough for introducing the basics, but it’s time to move on to a real microcontroller. Read on to learn more about the microcontroller I’ve chosen, and more interestingly why I chose it.

Also, dev kits may be given away.

Read More

Embedded Wednesdays: Getting Started in Embedded Systems

Andrei Chichak writes the Embedded Wednesdays column, for people who want to get started in embedded systems software. For projects, his posts use the STM32 Discovery dev kits (specifically the STM32F407G-DISC1).  His articles include introductory information such as a crash course in C and getting started with the board as well as more advanced topics like; DMA with ping-pong buffers, SPI and how to use an oscilloscope, current capacity of processor pins and how to NOT let the smoke out, identifier visibility and scope, new features in C like dot dot dot ranges in case statements, and initializers, and how to schedule events in C using Voodoo underflow math

Read More

Embedded Wednesdays: Tools of the Trade

You need to write your first program for an embedded system. Your IT people say that you can have any software you need as long as it is Microsoft Office. Do you have everything you need to do your job? No, you're in big trouble.

Embedded systems programming uses a set of very specialized tools, and if you've never used them before, you can spend a lot of money and not get what you need.

This week on Embedded Wednesdays, we look at the tools used to produce embedded systems firmware. We give an overview of the compilers, debuggers, and IDEs you will be using. After reading this post, and doing some research, you should have the information you need to go to your boss and say "NO, I can't control that cutting laser with an Excel macro. I need this..."

 

Read More

ESE101: Microcontrollers Will Make You Jump Jump

So far in ESE101, I’ve introduced a fictional microcontroller that has three instructions: ADD, SUB, and MOVE. The microcontroller uses three simple steps to run each instruction from memory and then move on to the next instruction in memory.


Until now we assumed instructions would be executed sequentially (in order), but this week we’ll add a few new instructions that will let our microcontroller jump around to whichever instruction it wants to.

Read More

Press All the Buttons!

Confession time: I hate blinking lights. Oh, I know, I read (and wrote!) the last few posts and I like controlling LEDs as much as the next engineer, but I don’t like seeing lights blink. They’re often too bright, too annoying, and too useless. Pushing buttons, on the other hand… well, if the world ends, it might be because I wanted to know what would happen when I pushed some big red button.

 

Read More

ESE101: Immediately!

Our existing ADD, SUB, and MOVE instructions move numbers to and from registers and memory. Let’s add a new source for these instructions called an immediate value.

An immediate value is a number that is hardcoded inside the instruction itself; the immediate value doesn’t come from a register or memory location.

Read on - immediately!

Read More