One wire reads the keypad from the APRS radio mic

[Shane Burrell] decided to spend some time learning how the keypad on the his Kenwood TM-710A APRS radio mic works. It uses a different technique than you might think. Normally a grid of buttons is scanned as a matrix to detect keypresses, but this hardware actually counts pulses on a serial wire to take each reading.

The stock radio sends a steady digital pulse to the handset and with each pulse the mic pulls the line low. It then uses a 4017 decade counter to see what comes back. If the edge count matches it means nothing is pressed, but a change in the number of pulses returning to the base unit can be used to extrapolate which button has been pressed.

[Shane] went on to implement this control technique using an AVR chip in place of the  radio base unit. He used the data gained from measuring the pulse behavior using an oscilloscope to write the firmware for the project. He filmed a bit of a demo after the break which shows his findings.

We’re not quite sure how this would translate into your own home-brew projects, but the thought of scanning a keypad with two pins of a uC is quite desirable. Sure there is the 555-timer frequency technique, but we’re always down with new ideas.

[Read more…]

TI Launchpad as AVR ISP programmer

[Minifloat] is using his TI Launchpad development board as an In-System Programmer for AVR chips (translated). There are a ton of homebrew AVR programmers out there, and using an Arduino for ISP is quite popular. But recently we searched for a way to use the Launchpad as a programmer and didn’t find one. We’d venture to say this is the first.

There is one hardware modification that must be made. An external clock crystal (32.768 kHz) must be populated on the board. But since it was designed with the feature in mind that’s a pretty quick process. [Minifloat] followed Atmel’s ISP app note, and extended some of the code written for a different programmer to get things up and running. At first the device wouldn’t communicate with AVRdude, but that turns out to be a problem with the initialization conversation. AVRdude polls the connected programmer to see if it supports block mode, and the firmware on the MSP430G2211 wasn’t expecting this query. The problem was fixed and it now works.

It sounds like there are a couple of bugs left in the system. The first time AVRdude accesses the programmer after it has been plugged into the USB port it will fail. Subsequent attempts will succeed until the MSP430 chip is reset, or the USB connection is replugged. But if you’re just getting into the AVR line, this will let you figure out if you want to invest in a proper programmer.

BASIC for some beefy AVR chips

klBASIC is a BASIC interpreter written in C for AVR microcontrollers. [Karl Lunt] developed the project based on an assembly language BASIC interpreter for 68HC11 chips written by [Gordon Doughman]. The transition from assembly to C bulked up the code, so you’ll need a beefy AVR chip in order to store all of it.

The idea is that one AVR chip can run BASIC with just a serial monitor. But like this Arduino BASIC interpreter build, it would be a snap to run this with a keyboard and small LCD screen. We see binaries available for several different AVR devices including ATmega128, ATmega1284, and Xmega128. They range from 1.5k to 16k of program memory. We didn’t find a link to the source code (just these precompiled files) so we inquired with [Karl] to see if that is available. He’s reluctant to release the code because it’s “pretty much a mess” and doesn’t live up to his normal standards. If he codes for a living we can see how that may be embarrassing. If you’d like to lend a hand cleaning up the code, let him know by leaving a comment here and maybe he’ll release it for that purpose.

We find this interesting, but it’s tough to get excited about building one of our own. If this has inspired you, we’d love to hear some of your plans in the comments after the break. Perhaps we’d be prodded into another programming adventure based on your enthusiasm.

Experimenting with 8-bit graphics

[Vinod] has done a lot of work with microcontrollers, but this is his first try at displaying graphics using composite video. He had a small PAL television on hand, and an ATmega32 which just needs a stable clock source and a few resistors to get things going.

There are a lot of other hacks around that use composite video out with microcontrollers. But this is a ground-up approach which will help you understand the concepts behind these graphics. [Vinod] started by calculating the possible resolution. He needs to hold a frame buffer in memory, and since his chip has just 2 kilobytes of SRAM this will be the limiting factor. He settled on a display area of 128 by 64 pixels. This divides evenly by 8 so he’s not wasting any bits, and it totals 1k, leaving half of the SRAM for use in calculating the shapes which populate the buffer. An interrupt service routine runs ever 64 microseconds to feed data for each line of the display.

With the scanning in place, he moved on to fill the frame buffer. Two functions are used, one which sets a pixel the other clears a pixel. He compares these to using a pencil and an eraser. By calling these functions from his main program he is able to draw lines, boxes, and circles. A bit of creative looping and he’ll have animations as well, but that’s a concept for a different post.

HTML based AVR compiler aims to make Arduino development on iOS possible

It’s surprising what lengths people will go to in order to bring functionality to their smart phones. In this case, [Tadpol] wanted a way to develop for his Arduino on an iOS device like an iPad or iPhone. He figures it’s possible to rewrite the IDE as HTML5, but since that’s a pretty large mountain to climb, he started by building a browser-based AVR compiler. It’s an interesting concept, and he’s got a working prototype up on Github for you to test. Perhaps you can throw your hat in the ring and help him with development?

The web interface uses boxes to add to the code. What you see above is three sets of commands which will blink an LED. The project, named Avrian Jump, uses a simple ladder language to feed the compiler, with several different options for output. The most interesting in our mind is a WAV file which can be used to program an AVR from the audio out of your device. That would make programming as simple as connecting the specially modified AVR to your headphone jack. There’s also an ASCII output which allows you to save your programs for later alteration, S19 output for AVRdude programming, and an assembler output for debugging purposes. It’s hard to see where this project might go, but we have to admit that the concept is intriguing.

JTAG dongle pushes code to FPGA after bootup

This gnarly beast has near-magical qualities. [Sprite_TM] patched it together as a dongle which attaches to a JTAG header (we’re fairly certain this is not a standard footprint for that interface though). He uses it to push code to an FPGA after that device boots. Why? Well, there’s several reason, but the most generic answer is that some boards will not boot unless there is a chain of trust that validates the code which will be running.

In this case, [Sprite_TM] is using a knock-off board he acquired from a Chinese supplier. It’s a hardware network terminal (thin client), and as you can see in the video after the break, it works just fine. But that’s pretty boring and he wanted to use it for his own purposes. When he plugs in the dongle and powers up the board the network terminal is nowhere to be found, replaced with the code to play Pac-Man as if were a full arcade cabinet.

The dongle is simply a female DIL header, an ATtiny85, and a flash memory chip. The AVR has a software UART that speaks XSVF, the protocol used to push data to the FPGA. The data to be written is stored in the memory chip, and with that header in place reprogramming the AVR is just a matter of connecting an ISP programmer. Brilliant!

[Read more…]