What’s the biggest difference between writing code for your big computer and a microcontroller? OK, the memory and limited resources, sure. But we were thinking more about the need to directly interface with hardware. And for that purpose, one of the most useful, and naturally also dangerous, tools in your embedded toolchest is the interrupt.
Interrupts do exactly what it sounds like they do — they interrupt the normal flow of your program’s operation when something happens — and run another chunk of code (an interrupt service routine, or ISR) instead. When the ISR is done, the microcontroller picks up exactly where it left off in your main flow.
Say you’ve tied your microcontroller to an accelerometer, and that accelerometer has a “data ready” pin that is set high when it has a new sample ready to read. You can wire that pin to an input on the microcontroller that’s interrupt-capable, write an ISR to handle the accelerometer data, and configure the microcontroller’s interrupt system to run that code when the accelerometer has new data ready. And from then on everything accelerometer-related happens automagically! (In theory.)
This is the first part of a three-part series: Interrupts, the Good, the Bad, and the Ugly. In this column, we’ll focus on how interrupts work and how to get the most out of them: The Good. The second column will deal with the hazards of heavyweight interrupt routines, priority mismatches, and main loop starvation: the Bad side of interrupts. Finally, we’ll cover some of the downright tricky bugs that can crop up when using interrupts, mainly due to a failure of atomicity, that can result in logical failures and corrupted data; that’s certainly Ugly.
Continue reading “Embed With Elliot: Interrupts, The Good…”
Sometimes, a hack is just a hack. And sometimes, a hack is nothing but a gold-plated Commodore C64.
Alright, it’s not gold-plated, it’s gilded. For the uninitiated, gilding is the process of gluing gold powder or gold leaf to an object. Gold is amazingly ductile – a tiny nugget 5mm in diameter can be hammered into a sheet of gold leaf that can cover about a half a square meter. It’s extremely thin and delicate and has to be handled very gingerly, and the gilder’s craft is therefore very meticulous. For more on gilding, see this post on signmaking with gold leaf.
[thefuturewas8bit], who runs a vintage Commodore web store, did a great job gilding a C64 case, just because. The attention to detail is fantastic – notice that even the edges of the keyboard cutouts are gilded and burnished. A nice finishing touch is swapping out the stock red power LED for a yellow one – red simply clashes too much. Lest you think there’s nothing to learn from a purely aesthetic hack, [thefuturewas8bit] shares a great tip for removing the metal badges from a plastic case – spray them with freeze-spray from the back to pop off the glue. No need to dig at them with a screwdriver and gouge or bend them. Nice trick.
Any hack can earn extra points for style, and we think that gold works well on the C64. But if gold is a little too overstated for you, you can always try to score a colorful new injection-molded case for your vintage Commodore.
Need to thrash out some wicked 8-bit riffs? There’s only one guitar you should be doing that with, and it’s a Guitar Boy!
[Fibbef], an administrator on BitFixGaming boards built this as an exhibition piece for his 2015 Game Boy Classic build off. He started the build just three months ago and we have to say we’re impressed. It’s a fully functioning Raspberry Pi Game Boy emulator — and a full fledged electric guitar. The A and B buttons double as volume and tone dials for the guitar, while also being push buttons for the Game Boy!
Under the hood is a Raspberry Pi B+ running RetroPie v2.3, with a 5″ LCD display, custom wooden buttons, the entire body is hand made, and a plexiglass shell covers the whole thing.
Continue reading “Introducing The Nintendo Guitar Boy”