Programming Pi Games With Bare Metal Assembly

pifoxWhile the most common use for a Raspberry Pi is probably a media center PC or retro game emulator, the Pi was designed as an educational computer meant to be an easy-to-use system in the hands of millions of students. Team 28 at Imperial College London certainly living up to the Raspberry Pi Foundation’s expectations with their bare metal assembly clone of Star Fox, aptly titled PiFox.

This isn’t the first time a college course has taken up the task of developing software for the Pi without an operating system; a few years ago, Cambridge University started that off with a series of bare metal tutorials for the Pi that included drawing graphics on the screen and playing around with USB keyboards. PiFox greatly expands on what those early tutorials could do, reading an NES joystick from the GPIO pins, sound with DMA, and rendering 3D objects.

If you’d like to build PiFox for yourself, or better yet, expand on the existing build, all the code is up on Github. There’s also a Raspberry Pi emulator for Linux, just in case you have an ARM assembly bug you just can’t scratch with a Raspberry Pi.

Continue reading “Programming Pi Games With Bare Metal Assembly”

Retrotechtacular: The Magic of Making Cars in the ’30s

retrotechtacular-manufacturing-chevrolet

We usually shy away from calling things ‘magic’ in our features because, you know… science. But in the case of this Chevrolet manufacturing reel from 1936 the presentation is nothing short of an industrialized version of The Sorcerer’s Apprentice. Well, not in the sense of mischief, but in that there is almost no explanation and the way the footage is laced together you get the strong feeling that, at the time, this type of industrialization was magic; a modern marvel. The techniques and skills of each worked passed down from a master to an apprentice but virtually unknown to the general public.

The clip, which is also embedded below, starts off in the machine shop where mold makers are getting ready to go into assembly line production. From there it’s off to the foundry for part casting and then into the stamping plant where white-hot (perhaps red-hot, but black and white film) metal is shaped by man-mangling presses. The image above follows the cast, stamped, and machined parts onto the assembly line. We like seeing a room full of pistons being QA checked by hand using a width gauge and micrometer.  The film continues through to the finished vehicle and we think you’ll agree there’s more than enough voyeuristic video here to overcome that lack of narration.

Continue reading “Retrotechtacular: The Magic of Making Cars in the ’30s”

Learning Assembly with a Web Based Assembler

AssemblyOnlineVery few people know assembly. [Luto] seeks to make learning assembly just a little bit easier with his “fully functional web-based assembler development environment, including a real assembler, emulator and debugger.”

These days, you can be a microcontroller expert without knowing a thing about assembly. While you don’t NEED to know assembly, it actually can help you understand quite a bit about embedded programming and how your C code actually works. Writing a small part of your code in assembly can reduce code size and speed things up quite a bit. It also can result in some very cool projects, such as using Java to program microcontrollers.

With high quality example code, it is very easy to get started learning assembly. The emulator consists of a microcontroller with 32 registers, hooked up to three LEDs, two buttons, and a potentiometer. This is way better than painfully learning assembly on real hardware. Be sure to check out the online demo! Being able to step through each line of code and clearly see the result help make assembly easier to use and understand. It would be great to see this kind of tool widely adopted in engineering programs.

Have you used assembly in any of your projects? Let us know how it went and why you choose to use assembly

Manual Pick and Place

picknplacePopulating a large surface mount PCB can take forever. [craftycoder] from Freeside Atlanta has built a great looking manual pick and place machine, removing the need for tweezers. No more will passives stick to your tweezers while you are trying to place them on your PCB!

We have seen a lot of pick and place machines in the past few years. What makes this one stand out is its simplicity and the no-nonsense build. This pick and place is built on an MDF platform, uses bearings from Amazon, standard 12 mm rails, and has a small camera for a close-up look at your part placement. Sure it is a manual method, but it beats painstakingly placing each part with tweezers. It would be interesting to see how much this entire build cost; we expect that it was not too expensive. See this thing in action in the video after the break.

We hope this project has inspired you to go out and make something cool! If so, let us know what you have made!
Continue reading “Manual Pick and Place”

Java Grinder Spits Out dsPIC and MSP430 Assembly Code

java-code-grinder

[Michael Kohn] sent in a link to the set of projects he’s been working on lately. The Java Grinder is a project that converts Java code for use on microcontrollers. This actually started back in 2009, when he mentioned that the project was worthless because there were already a ton of Java virtual machines out there. But if he had really thought that he’d never learn anything. We’re glad [Michael] picked this back up and made something out of it.

The image above shows the proof of concept. It’s a box bouncing around the Nokia 6100 screen. He wrote the animation in Java, and used his grinder to turn the code into dsPIC assembly, which was then compiled and flashed onto the microcontroller. That’s not all, he’s also coded a Mandelbrot set generator or the same hardware. As it stands he can also produce assembly code for use on MSP430 chips.

This kind of exploration is great for the brain. We see it as a natural extension of the learning you acquire from Nand2Tetris which walks through the essential text The Elements of Computing Systems. If you’re not familiar, that’s a trip from building your first logic gate, which you plunk together with others to build an ALU, then start coding all the way up to a virtual machine to run on your simulated hardware.

Video of the bouncing box and Mandelbrot set is below.

Continue reading “Java Grinder Spits Out dsPIC and MSP430 Assembly Code”

Happy Birthday, Son. Here’s Your Very Own Claw Machine

mrclawIf [Will Baden] is in the running for Father of the Year, he’s a shoe-in. His son requested a robot-themed birthday party, so [Will] did what any superhero father would do and built him a toy claw machine.

[Will] harvested many of the parts from copy machines: both the 5V and 24V power supplies, the limit switches, 2/3 of the motors, and the 24V solenoid coil in the claw. The carriage is from a commercial printer. He made many of the mounts, including the ones holding the 3 stepper motors from Pololu.

A PIC16F870 is running the show. [Will] programmed it in assembly using Timer2 for stepper pulsing and RB0 interrupt to drop the claw when the button is pushed. He also added a WDT to get out of code trouble if needed. The claw’s solenoid is driven by a ULN2001A Darlington array. [Will] put a kickback diode on the coil so the pulses don’t go farther than they need to. He formed the fingers of the claw by bending pieces of brake line.

Not your kind of claw? Check out these incredible Wolverine claws!

Continue reading “Happy Birthday, Son. Here’s Your Very Own Claw Machine”

Making An ARM Powered MIDI Synthesizer

What you see in the picture above is a hand-made 4-oscillator synthesizer with MIDI input, multi-mode filter and a handful of modulation options. It was built by [Matt], an AVR accustomed electronics enthusiast who made an exception to his habits for this project. The core of the platform is a DIP packaged 32-bit Cortex-M0 ARM processor (LPC1114), stuffed with ‘hand’ written assembly code and compiled C functions. With a 50MHz clock speed, the microcontroller can output samples at 250kHz on the 12bit DAC while being powered by 3 AA batteries.

Reading [Matt]‘s write-up, we discover that the firmware he created uses 4 oscillators (sawtooth or pulse shape) together with a low frequency oscillator (triangle, ramp, square, random shapes). It also includes a 2-pole state-variable filter and the ability to adjust the attack-release envelopes (among others). The system takes MIDI commands from a connected device. We embedded videos of his creation in action after the break.

Continue reading “Making An ARM Powered MIDI Synthesizer”