Getting Started with ARM Using mbed

Even though the Arduino was hardly the first 8 bit microcontroller board to support a bootloader and the C/C++ language, it quickly became the de facto standard for hobby-level microcontrollers as well as a common choice for one-off or prototype projects. I’m sure there are a lot of reasons why this occurred, but in my mind there were three major reasons: price, availability of lots of library and sample code, and the existence of a simplified GUI IDE that you could install in a few minutes. The build process is simple, too, even though if you ever have to actually figure it out, it is quite ugly. For most people, it works, and that makes it not ugly.

I like the ATMega chips. In fact, I had boards based around the ATMega8 and a bootloader way before there was an Arduino. However, they are fairly small parts. It is true that the Arduino infrastructure has grown to support more ATMega chips, many with more memory and I/O and clock speeds. However, 32-bit processors are getting inexpensive enough that for all but the simplest or highest volume projects, you should be thinking about using 32-bit.

If you’ve tried to go that route before, you’ve probably been daunted by the price, especially the price of development tools. Your alternative is to roll your own tool chain which is very doable (and there are some nice scripts out there that will help you). You also need to worry about libraries and how to integrate them. Not to mention, many of the advanced processors require a lot of setup to get, say, an A/D converter turned on. Most processors keep things they aren’t using turned off, and each pin requires setup to select the 4 or 5 things shared on that pin.

All of this has been a barrier to entry. The vendors have all figured this out, though, and many have tried to build tools aimed at breaking up the Arduino market ranging from inexpensive development boards to code-generating wizards, to full blown IDEs. I want to tell you (and show you, in the video below) how you can make the jump from 8-bit to 32-bit much easier than you might think.

Continue reading “Getting Started with ARM Using mbed”

Hacking a Universal Assembler

I have always laughed at people who keep multitools–those modern Swiss army knives–in their toolbox. To me, the whole premise of a multitool is that they keep me from going to the toolbox. If I’ve got time to go to the garage, I’m going to get the right tool for the job.

Not that I don’t like a good multitool. They are expedient and great to get a job done. That’s kind of the way I feel about axasm — a universal assembler I’ve been hacking together. To call it a cross assembler hack doesn’t do it justice. It is a huge and ugly hack, but it does get the job done. If I needed something serious, I’d go to the tool box and get a real assembler, but sometimes you just want to use what’s in your pocket.

Continue reading “Hacking a Universal Assembler”

Hack your C++ with LLVM

Have you ever wanted to analyze or mutate some C or C++ code? You can do some simple pattern matching with regular expressions, but there’s always some special case or another that will break your logic. To do it right, you need to develop an entire parser, perhaps using a formal grammar and a tool like Yacc. That’s a big job, though, just to change all the floats to doubles.

[Adrian Sampson] wrote a blog entry to make you go from “mostly uninterested in compilers to excited to use LLVM to do great work.” LLVM – the Low Level Virtual Machine compiler infrastructure — provides tools for a lot of languages, including CLANG for C and C++. [Adrian] points out a few key differences between LLVM and other compilers and tools you might use for a similar purpose:

  • LLVM uses a consistent intermediate representation that is human-readable
  • It is extremely modular
  • It is both highly hackable and an industrial-strength, well-supported compiler

He points out that compiler tools aren’t just for compiling. You can use them to analyze source code, build simulators, and inject code for security or testing, among other things (speaking of security testing, check out the use of LLVM to analyze binaries for security issues in the video after the break). The high hackability of LLVM is due to its modular nature. By default, a front end chews up the C or C++ code into the intermediate representation. Then multiple passes can modify the representation before handing it off for the next pass. The final pass does actual code generation for the target processor.

Continue reading “Hack your C++ with LLVM”

Cute Countdown Timer Reminds you of Impending Doom

As things get busy, whether it be an upcoming product launch, a pregnancy, or even the release of your favorite game (or movie!) sometimes it’s nice to have a little countdown timer. Not an app on your phone, but a tangible, physical timer to set on your desk. Which is why SevenSeg is such a cute idea.

[Mohit] wanted to design something that was simple, but aesthetically pleasing — he’d seen free-form electronic projects before and wanted to give it a shot. What he came up with is pretty elegant! A seven segment display is connected via 1/32″ brass rods to the controller, a Particle Photon — which is kind of like a Teensy with WiFi for the internet of things. After putting a few resistors in line with the display, and a bit of frustrating bending of wire later, and SevenSeg was complete.

Continue reading “Cute Countdown Timer Reminds you of Impending Doom”

Clocking (or Overclocking) an AVR

Some guys build hot rods in their garage. Some guys overclock their PCs to ridiculously high clock frequencies (ahem… we might occasionally be guilty of this). [Nerd Ralph] decided to push an ATTiny13a to over twice its rated frequency.

It didn’t seem very difficult. [Ralph] used a 44.2 MHz can oscillator and set the device to use an external clock. He tested with a bit-banged UART and it worked as long as he kept the supply voltage at 5V. He also talks about some other ways to hack out an external oscillator to get higher than stock frequencies.

We wouldn’t suggest depending on an overclock on an important or commercial project. There could be long term effects or subtle issues. Naturally, you can’t depend on every part working the same at an untested frequency, either. But we’d be really interested in hear how you would test this overclocked chip for adverse effects.

Now, if you are just doing this for sport, a little liquid nitrogen will push your Arduino to 65 MHz (see the video after the break). We’ve covered pushing a 20MHz AVR to 30MHz before, but that’s a little less ratio than [Ralph] achieved.

Continue reading “Clocking (or Overclocking) an AVR”

Build Your Own Function Generator

[Scullcom] has posted the second part of his function generator build tutorial. [Scullcom] previously posted the first part of this build which covered the XR2206 monolithic function generator IC on which his design is based. In this part [Scullcom] covers the output stages and final assembly.

We’ve covered digital and analog function generator builds before. [Scullcom]’s design complements these well by providing a detailed description of the design he used, and has provided full schematics and code from the Arduino Nano used in this project. The design covers audio frequencies (~40Hz to 30KHz) with square, sine and triangle wave outputs. While the XR2206 can’t compete with modern DDS function generators, if you’re a hacker on a budget and looking for a fun project this may be just the thing for you. And even if you don’t decide to build the one, you might find [Scullcom]’s description of the output stage interesting.

Great project [Scullcom] and we look forward to your next build!

Continue reading “Build Your Own Function Generator”

The Three Dollar Frequency Standard

[Paulie] over on the EEVBlog forums picked up an inexpensive frequency counter on eBay and realized it was just a little bit off. As a result, he decided to build a frequency standard. His build wound up costing him about $3 and he shared the design and the software for it.

The hardware design is very simple: a TCXO (also from eBay), an ATMega8, a pushbutton, and a AA battery with DC to DC converter to power the whole thing. The software does all the work, providing frequencies from 10MHz down to a few hundred hertz (including some common audio test frequencies).

If you haven’t worked with a TCXO before, it is a crystal oscillator that includes a temperature compensation circuit to pull the crystal frequency up or down depending on temperature. Although crystal oscillators are pretty accurate already, adding this temperature compensation improves accuracy over the design temperature dramatically (typically, 10 to 40 times better than a naked crystal oscillator). If you want to learn more about TCXOs, here’s a good write-up.
A TCXO isn’t as good as an OCXO (where the first O stands for Oven). However, OCXOs cost more, are larger, and drain batteries (after all, it is running an oven). You can even hack your own OCXO, but it is going to cost more than $3.

If you want to see the real guts of one TCXO, check out the video.

Continue reading “The Three Dollar Frequency Standard”