Kevin Hannan Wins the CC Code Challenge (Week 19)

We have a winner of last week’s CC Weekly Code Challenge, sponsored by IAR Systems! We posted a code snippet with an error and challenged the engineering community to find the mistake!

Congratulations to Kevin Hannan of Marietta, Georgia, USA for winning the CC Weekly Code Challenge for Week 19! Kevin will receive a CCGold Issues Archive.

Kevin’s correct answer was randomly selected from the pool of responses that correctly identified an error in the code. Kevin answered:

Line 17: WHERE should be HAVING

2013_code_challenge_19_answer

You can see the complete list of weekly winners and code challenges here.

What is the CC Weekly Code Challenge?
Each week, Circuit Cellar’s technical editors purposely insert an error in a snippet of code. It could be a semantic error, a syntax error, a design error, a spelling error, or another bug the editors slip in. You are challenged to find the error.Once the submission deadline passes, Circuit Cellar will randomly select one winner from the group of respondents who submit the correct answer.

Inspired? Want to try this week’s challenge? Get started!

Submission Deadline: The deadline for each week’s challenge is Sunday, 12 PM EST. Refer to the Rules, Terms & Conditions for information about eligibility and prizes.

Laurent Haas Wins the CC Code Challenge (Week 18)

We have a winner of last week’s CC Weekly Code Challenge, sponsored by IAR Systems! We posted a code snippet with an error and challenged the engineering community to find the mistake!

Congratulations to Laurent Haas of Paris, France for winning the CC Weekly Code Challenge for Week 18! Laurent will receive an IAR Kickstart: KSK-LPC4088-JL.

Laurent’s correct answer was randomly selected from the pool of responses that correctly identified an error in the code. Laurent answered:

Line 19 : Should be “write(*,*) average”

2013_code_challenge_18_answer

You can see the complete list of weekly winners and code challenges here.

What is the CC Weekly Code Challenge?
Each week, Circuit Cellar’s technical editors purposely insert an error in a snippet of code. It could be a semantic error, a syntax error, a design error, a spelling error, or another bug the editors slip in. You are challenged to find the error.Once the submission deadline passes, Circuit Cellar will randomly select one winner from the group of respondents who submit the correct answer.

Inspired? Want to try this week’s challenge? Get started!

Submission Deadline: The deadline for each week’s challenge is Sunday, 12 PM EST. Refer to the Rules, Terms & Conditions for information about eligibility and prizes.

Carol Willing Wins the CC Code Challenge (Week 17)

We have a winner of last week’s CC Weekly Code Challenge, sponsored by IAR Systems! We posted a code snippet with an error and challenged the engineering community to find the mistake!

Congratulations to Carol Willing of Encinitas, California, USA for winning the CC Weekly Code Challenge for Week 17! Carol will receive an Elektor 2012 & 2011 Archive DVD.

Carol’s correct answer was randomly selected from the pool of responses that correctly identified an error in the code. Carol answered:

Line 6: cons will incorrectly create a list of lists; use append instead for correct recursive reversal of list

2013_code_challenge_17_answer

You can see the complete list of weekly winners and code challenges here.

What is the CC Weekly Code Challenge?
Each week, Circuit Cellar’s technical editors purposely insert an error in a snippet of code. It could be a semantic error, a syntax error, a design error, a spelling error, or another bug the editors slip in. You are challenged to find the error.Once the submission deadline passes, Circuit Cellar will randomly select one winner from the group of respondents who submit the correct answer.

Inspired? Want to try this week’s challenge? Get started!

Submission Deadline: The deadline for each week’s challenge is Sunday, 12 PM EST. Refer to the Rules, Terms & Conditions for information about eligibility and prizes.

Website Maintenance Progress

We’d like to thank our members and readers around the globe for their patience while our sites were down for maintenance. During the past few days, our team has been working on building a better site to deliver you the quality informative content you’ve come to expect. Today, we’re happy to announce most of the site is up and the article materials are available. Please bare with us as we complete the final steps in the process.

Are you social? Connect with us!

Thank you!

Regards,

The CC Team

William McNamara Wins the CC Code Challenge (Week 16)

We have a winner of last week’s CC Weekly Code Challenge, sponsored by IAR Systems! We posted a code snippet with an error and challenged the engineering community to find the mistake!

Congratulations to William McNamara of The Colony, Texas, USA for winning the CC Weekly Code Challenge for Week 16! William will receive a CC T-Shirt and one year digital subscription/renewal.

William’s correct answer was randomly selected from the pool of responses that correctly identified an error in the code. William answered:

Line 5: the “do” needs to be on a separate line or have a semicolon in front of it.

2013_code_challenge_16_answer

You can see the complete list of weekly winners and code challenges here.

What is the CC Weekly Code Challenge?
Each week, Circuit Cellar’s technical editors purposely insert an error in a snippet of code. It could be a semantic error, a syntax error, a design error, a spelling error, or another bug the editors slip in. You are challenged to find the error.Once the submission deadline passes, Circuit Cellar will randomly select one winner from the group of respondents who submit the correct answer.

Inspired? Want to try this week’s challenge? Get started!

Submission Deadline: The deadline for each week’s challenge is Sunday, 12 PM EST. Refer to the Rules, Terms & Conditions for information about eligibility and prizes.

CC279: What’s Ahead in the October Issue

Although we’re still in September, it’s not too early to be looking forward to the October issue already available online.

The theme of the issue is signal processing, and contributor Devlin Gualtieri offers an interesting take on that topic.

Gualtieiri, who writes a science and technology blog, looks at how to improve Improvig Microprocessor Audio microprocessor audio.

“We’re immersed in a world of beeps and boops,” Gualtieri says. “Every digital knick-knack we own, from cell phones to microwave ovens, seeks to attract our attention.”

“Many simple microprocessor circuits need to generate one, or several, audio alert signals,” he adds. “The designer usually uses an easily programmed square wave voltage as an output pin that feeds a simple piezoelectric speaker element. It works, but it sounds awful. How can microprocessor audio be improved in some simple ways?”

Gualtieri’s article explains how analog circuitry and sine waves are often a better option than digital circuitry and square waves for audio alert signals.

Another article that touches on signal processing is columnist Colin Flynn’s look at advanced methods of debugging an FPGA design. It’s the debut of his new column Programmable Logic in Practice.

“This first article introduces the use of integrated logic analyzers, which provide an internal view of your running hardware,” O’Flynn says. “My next article will continue this topic and show you how hardware co-simulation enables you to seamlessly split the verification between real hardware interfacing to external devices and simulated hardware on your computer.”

You can find videos and other material that complement Colin’s articles on his website.

Another October issue highlight is a real prize-winner. The issue features the first installment of a two-part series on the SunSeeker Solar Array Tracker, which won third SunSeekerplace in the 2012 DesignSpark chipKit challenge overseen by Circuit Cellar.

The SunSeeker, designed by Canadian Graig Pearen, uses a Microchip Technology chipKIT Max32 and tracks, monitors, and adjusts PV arrays based on weather and sky conditions. It measures PV and air temperature, compiles statistics, and communicates with a local server that enables the SunSeeker to facilitate software algorithm development. Diagnostic software monitors the design’s motors to show both movement and position.

Pearen, semi-retired from the telecommunications industry and a part-time solar technician, is still refining his original design.

“Over the next two to three years of development and field testing, I plan for it to evolve into a full-featured ‘bells-and-whistles’ solar array tracker,” Pearen says. “I added a few enhancements as the software evolved, but I will develop most of the additional features later.”

Walter Krawec, a PhD student studying Computer Science at the Stevens Institute of Technology in Hoboken, NJ, wraps up his two-part series on “Experiments in Developmental Robotics.”

In Part 1, he introduced readers to the basics of artificial neural networks (ANNs) in robots and outlined an architecture for a robot’s evolving neural network, short-term memory system, and simple reflexes and instincts. In Part 2, Krawec discusses the reflex and instinct system that rewards an ENN.

“I’ll also explain the ‘decision path’ system, which rewards/penalizes chains of actions,” he says. “Finally, I’ll describe the experiments we’ve run demonstrating this architecture in a simulated environment.”

Videos of some of Krawec’s robot simulations can be found on his website.

Speaking of robotics, in this issue columnist Jeff Bachiochi introduces readers to the free robot control programming language RobotBASIC and explains how to use it with an integrated simulator for robot communication.

Other columnists also take on a number of very practical subjects. Robert Lacoste explains how inexpensive bipolar junction transistors (BJTs) can be helpful in many designs and outlines how to use one to build an amplifier.

George Novacek, who has found that the cost of battery packs account for half the DIY Battery Chargerpurchase price of his equipment, explains how to build a back-up power source with a lead-acid battery and a charger.

“Building a good battery charger is easy these days because there are many ICs specifically designed for battery chargers,” he says.

Columnist Bob Japenga begins a new series looking at file systems available on Linux for embedded systems.

“Although you could build a Linux system without a file system, most Linux systems will have some sort of file system,” Japenga says. “And there are various types. There are files systems that do not retain their data (volatile) across power outages (i.e., RAM drives). There are nonvolatile read-only file systems that cannot be changed (e.g., CRAMFS). And there are nonvolatile read/write file systems.”

Linux provides all three types of file systems, Japenga says, and his series will address all of them.

Finally, the magazine offers some special features, including an interview with Alenka Zajić, who teaches signal processing and electromagnetics at Georgia Institute of Technology’s School of Electrical and Computer Engineering. Also, two North Carolina State University researchers write about advances in 3-D liquid metal printing and possible applications such as electrical wires that can “heal” themselves after being severed.

For more, check out the Circuit Cellar’s October issue.

 

 

Jesper Poulsen Wins the CC Code Challenge (Week 15)

We have a winner of last week’s CC Weekly Code Challenge, sponsored by IAR Systems! We posted a code snippet with an error and challenged the engineering community to find the mistake!

Congratulations to Jesper Poulsen of København, Denmark for winning the CC Weekly Code Challenge for Week 15! Jesper will receive a CCGold Issues Archive.

Jesper’s correct answer was randomly selected from the pool of responses that correctly identified an error in the code. Jesper answered:

Line 23: Should be 0..@list-2 to avoid array overrun when taking $list[$i+1]

2013_code_challenge_15_answer

You can see the complete list of weekly winners and code challenges here.

What is the CC Weekly Code Challenge?
Each week, Circuit Cellar’s technical editors purposely insert an error in a snippet of code. It could be a semantic error, a syntax error, a design error, a spelling error, or another bug the editors slip in. You are challenged to find the error.Once the submission deadline passes, Circuit Cellar will randomly select one winner from the group of respondents who submit the correct answer.

Inspired? Want to try this week’s challenge? Get started!

Submission Deadline: The deadline for each week’s challenge is Sunday, 12 PM ESTRefer to the Rules, Terms & Conditions for information about eligibility and prizes.

CC278: New Issue, New Look, New Media

Over the years, Circuit Cellar editors have learned you simply can’t stand still when your magazine focuses on ever-evolving embedded electronics. So with the September issue, we introduce a dramatic redesign to make the magazine’s look more contemporary and its connection with our website stronger.

The heart of our content is still project pieces and columns. For example, in this issue, Nelson Epp writes about a Rubik’s Cube-solving robot (p. 24), Walter Krawec examines evolving neural networks in robotics (p. 42), and Brian Millier describes how to configure his “Iso-Pi” I/0 board for the Raspberry Pi single-board computer (p. 32).

In addition, our column topics include examining different battery types and their characteristics (p. 48), exploring commodity LED characteristics with a stress tester and an optical output detector (p. 54), and understanding BMP graphical file formats (p. 64).

Speaking of columnists, the September issue introduces a new one—Ayse Coskun, a Boston University assistant professor. Her bimonthly Green Computing column will focus on topics that recognize energy is a “first-order constraint” on any computing system, large or small. So she will be looking at everything from energy-efficient software and hardware-design strategies to electricity cost savings and battery-life extension (p. 60).

Another new feature is CC World (p. 8), which will provide monthly updates on topics of interest to the magazine’s international community of engineers, academics, and students. This month, we touch on the CC Weekly Code Challenge and the designers participating in Elektor-LABS.com, the lab-tested, project-sharing site provided by Elektor International Media (EIM).

But our changes are not simply about what you see on the magazine’s pages. This redesign makes it easier for you to connect our print content to related material at circuitcellar.com.

At the end of each article, you’ll discover an easier way to find project files and supporting documents online. You can either type circuitcellar.com/ccmaterials in your browser or use your smartphone to scan the printed QR code.

We hope you enjoy the new look and conveniences.

Ayse Coskun and Green Computing

Green computing can mean different things to different people—and interests.

Environmental organizations tend to embrace the definition of green computing that stresses practices that lead to efficient and eco-friendly use of computing resources.

But businesses are also interested in green computing, particularly when it creates energy efficiencies that reduce their costs.

So, the topic is a hot one. And with that in mind, next month Circuit Cellar will introduce a bimonthly Green Computing column written by Ayse Coskun.

Coskun, who has MS and PhD degrees in Computer Science and Engineering, is an assistant professor in the Electrical and Computer Engineering Department at Boston University. Her research interests include temperature and energy management, 3-D stack architectures, computer architecture, and embedded systems. You can find out even more about her by checking out our interview published in July 2012.

Coskun will address a wide range of topics in her columns. “I will be writing about energy-efficient software and hardware design strategies, opportunities for electricity cost savings and battery-life extension, system-level policies for energy and thermal management, and smart infrastructures for improving efficiency,” she says.

Her September column focuses on energy-efficient cooling strategies for servers, which require striking a balance between cooling energy and leakage power. “You can reduce the cooling energy used by enabling the processor temperatures to rise within safe limits, “ she says.  “However, leakage power increases at high temperatures and can cause excessive energy waste. “

Her column explains how  to experimentally analyze the trade-off between a server’s cooling and leakage and how to use that analysis to design energy-efficient cooling strategies—not only for servers, but for computing systems in general.

For more details, be sure to check out her debut column in the September issue.

An experimental setup for enabling customized fan control for a commercial server.

 

 

Microcontroller-Based, Cube-Solving Robot

Cube Solver in ActionCanadian Nelson Epp has earned degrees in physics and electrical engineering. But as a child, he was stumped by the Rubik’s Cube puzzle. So, as an adult, he built a Rubik’s Cube-solving robot that uses a Parallax Propeller microcontroller and a 52-move algorithm to solve the 3-D puzzle.

Designing and completing the robot wasn’t easy. Epp says he originally used a “gripper”-type robot that was “a complete disaster.” Then he experimented with different algorithms–“human memorizable ones”—before settling on a solution method developed by mathematician Morwen Thistlethwaite. (The algorithm is based on the mathematical concepts of a group, a subgroup, and generator and coset representatives.)

Nelson also developed a version of his Rubik’s Cube solver that used neural networks to analyze the cube’s colors, but that worked only half the time.

So, considering the time he had to spend on project trial and error (and his obligations to work, family, and pets), it took about six years to complete the robot. He writes about the results in the September issue of Circuit Cellar magazine. 

Here, he describes some of the choices he made in hardware components.

“The cube solver hardware uses two external power supplies: 5 VDC for the servomotors and 12 VDC for the remaining circuits. The 12-VDC power supply feeds a Texas Instruments (TI) UA78M33 and a UA78M05 linear regulator. The UA78M05 regulator powers an Electronics123 C3088 camera board. The UA78M33 regulator powers a Maxim Integrated MAX3232 ECPE RS-232 transceiver, a Microchip Technology 24LC256 CMOS serial EEPROM, remote reset circuitry, the Propeller, a SD/MMC card, the camera board’s digital output circuitry, and an ECS ECS-300C-160 oscillator. The images at right show my cube solver and circuit board.
“The ECS-300C-160 is a self-contained dual-output oscillator that can produce clock signals that are binary fractions of the 16-MHz base signal. My application uses the 8- and 16-MHz clock taps. The Propeller is clocked with the 8-MHz signal and then internally multiplied up to 64 MHz. The 16-MHz signal is fed to the camera.

“I used a MAX3232 transceiver to communicate to the host’s RS-232 port. The Propeller’s serial input pin and serial output pin are only required at startup. After the Propeller starts up, these pins can be used to exchange commands with the host. The Propeller also has pins for serial communication to an EEPROM, which are used during power up when a host is not sending a program.

“The cube-solving algorithm uses the coset representative file stored on an SD card, which is read by the Propeller via a SparkFun Electronics Breakout Board for SD-MMC cards. The Propeller interface to the SD card consists of a chip select, data in, data out, data clock, and power. The chip select is fixed into the active state. The three lines associated with data are wired to the Propeller.

“The Propeller uses a camera to determine the cube’s starting permutation. The C3088 uses an Electronics123 OV6630 color sensor module. I chose the camera because its data format and clocking speed was within the range of the Propeller’s capabilities. The C3088 has jumpers for external or internal clocking.”

To read more about Epp’s design journey—and outcomes—check out Circuit Cellar’s September issue. And click here for a video of his robot at work.

 

CC 277: Simulate and Design a Switched Capacitor Filter

Here is Lacoste’s experimental mockup. It’s not pretty, but it’s functional. The clock is at the top. The filter is below.

Circuit Cellar columnist Robert Lacoste doesn’t like to throw away his old magazines—at least the ones that have electronics projects.

And often it’s the lack of microcontrollers in such projects that he finds intriguing. The designs required “clever solutions to implement even simple features, which is always a good source of inspiration,” he says.

Lacoste was recently inspired by a 1981 Elektor magazine article on switched-capacitor filters (part of the old magazine collection in his basement). So, he decided to revisit the topic in his column appearing in Circuit Cellar’s August issue.

“I figured, why not refresh it for a Circuit Cellar Darker Side article, as mastering switched-capacitor filters is now mandatory for plenty of mixed-signal designs?”

Lacoste’s column shows you how to modify a basic low-pass filter into a switched-capacitor filter.

He explains why such a modification can be a good one:

“The most basic form of a low-pass filter is the simple one-pole RC filter… Why can’t we be happy with such simple RC filters? There are two reasons. First, it is often convenient to have a filter with an adjustable cutoff frequency. With a RC filter, you would need to change either the resistor’s or the capacitor’s value. This it is not easy to do if you want to design an inexpensive electronic system. The other reason is more linked to IC technology and CMOS in particular.

“Assume you want to design a filtering chip with a cutoff frequency of about 10 kHz. If you want to use a small and inexpensive capacitor—perhaps no more than 1 nF—you will need a high-value resistor… The problem is that designing a high-value resistor on a silicon chip is complicated (i.e., expensive). Moreover, unlike capacitors, on-chip resistors are difficult to manufacture with tight specifications.”

Lacoste found the solution by looking through few back issues of his magazine collection and a few past decades.

“In the late 1970s, IC designers looked for a way to replace high-value resistors with inexpensive and easy-to-integrate parts (e.g., small capacitor),” he says.

The idea of replacing a resistor with a switched capacitor produced the switched-capacitor architecture Lacoste presents in his August column. As a bonus, his design offers an easy way to adjust switching frequencies.

“Of course, no one is actually designing a switched-capacitor circuit from scratch, as I did for this article,” Lacoste says. “It was only for demonstration purposes. There are plenty of ready-made switched-capacitor chips on the market. Just read their datasheets and use them in your design, more or less as a black box.”

Still, Lacoste says, “the best way to learn is to never be afraid of any technology. Knowing the internals helps you avoid usage mistakes.”

Intrigued? Check out Lacoste’s column in the August issue for more details.

LED Characterization: An Arduino-Based Curve Tracer

Circuit Cellar columnist Ed Nisley doesn’t want to rely solely on datasheets to understand the values of LEDs in his collection. So he built a curve tracer to measure his LEDs’ specific characteristics.

Why was he so exacting?

“Most of the time, we take small light-emitting diodes for granted: connect one in series with a suitable resistor and voltage source, it lights up, then we expect it to work forever,” he says in his July column in Circuit Cellar. “A recent project prompted me to take a closer look at commodity 5-mm LEDs, because I intended to connect them in series for better efficiency from a fixed DC supply and in parallel to simplify the switching. Rather than depend on the values found in datasheets, I built a simple Arduino-based LED Curve Tracer to measure the actual characteristics of the LEDs I intended to use.”

The Arduino Pro Micro clone in this hand-wired LED Curve Tracer controls the LED current and measures the resulting voltage.

Ed decided to share the curve tracer with his Circuit Cellar readers.

“Even though this isn’t a research-grade instrument, it can provide useful data that helps demonstrate LED operation and shows why you must pay more attention to their needs,” he says.

Ed says that although he thinks of his circuit as an “LED Curve Tracer,” it doesn’t display its data.

“Instead, I create the graphs with data files captured from the Arduino serial port and processed through Gnuplot,” he says. “One advantage of that process is that I can tailor the graphs to suit the data, rather than depend on a single graphic format. One disadvantage is that I must run a program to visualize the measurements. Feel free to add a graphics display to your LED Curve Tracer and write the code to support it!”

He adds that “any circuit attached to an Arduino should provide its own power to avoid overloading the Arduino’s on-board regulator.”

“I used a regulated 7.5 VDC wall wart for both the Arduino Pro Mini board and the LED under test, because the relatively low voltage minimized the power dissipation in the Arduino regulator,” he says. “You could use a 9 VDC or 12 VDC supply.”

To read more about Ed’s curve tracer, check out Circuit Cellar’s July issue.

 

CC 276: MCU-Based Prosthetic Arm with Kinect

In its July issue, Circuit Cellar presents a project that combines the technology behind Microsoft’s Kinect gaming device with a prototype prosthetic arm.

The project team and  authors of the article include Jung Soo Kim, an undergraduate student in Biomedical Engineering at Ryerson University in Toronto, Canada, Nika Zolfaghari, a master’s student at Ryerson, and Dr. James Andrew Smith, who specializes in Biomedical Engineering at Ryerson.

“We designed an inexpensive, adaptable platform for prototype prosthetics and their testing systems,” the team says. “These systems use Microsoft’s Kinect for Xbox, a motion sensing device, to track a healthy human arm’s instantaneous movement, replicate the exact movement, and test a prosthetic prototype’s response.”

“Kelvin James was one of the first to embed a microprocessor in a prosthetic limb in the mid-1980s…,” they add. “With the maker movement and advances in embedded electronics, mechanical T-slot systems, and consumer-grade sensor systems, these applications now have more intuitive designs. Integrating Xbox provides a platform to test prosthetic devices’ control algorithms. Xbox also enables prosthetic arm end users to naturally train their arms.”

They elaborate on their choices in building the four main hardware components of their design, which include actuators, electronics, sensors, and mechanical support:

“Robotis Dynamixel motors combine power-dense neodymium motors from Maxon Motors with local angle sensing and high gear ratio transmission, all in a compact case. Atmel’s on-board 8-bit ATmega8 microcontroller, which is similar to the standard Arduino, has high (17-to-50-ms) latency. Instead, we used a 16-bit Freescale Semiconductor MC9S12 microcontroller on an Arduino-form-factor board. It was bulkier, but it was ideal for prototyping. The Xbox system provided high-level sensing. Finally, we used Twintec’s MicroRAX 10-mm profile T-slot aluminum to speed the mechanical prototyping.”

The team’s goal was to design a  prosthetic arm that is markedly different from others currently available. “We began by building a working prototype of a smooth-moving prosthetic arm,” they say in their article.

“We developed four quadrant-capable H-bridge-driven motors and proportional-derivative (PD) controllers at the prosthetic’s joints to run on a MC9S12 microcontroller. Monitoring the prosthetic’s angular position provided us with an analytic comparison of the programmed and outputted results.”

A Technological Arts Esduino microcontroller board is at the heart of the prosthetic arm design.

The team concludes that its project illustrates how to combine off-the-shelf Arduino-compatible parts, aluminum T-slots, servomotors, and a Kinect into an adaptable prosthetic arm.

But more broadly, they say, it’s a project that supports the argument that  “more natural ways of training and tuning prostheses” can be achieved because the Kinect “enables potential end users to manipulate their prostheses without requiring complicated scripting or programming methods.”

For more on this interesting idea, check out the July issue of Circuit Cellar. And for a video from an earlier Circuit Cellar post about this project, click here.

 

CC275: Build a Signal Frequency Counter

In the June issue of Circuit Cellar, George Adamidis, a physicist and electronics engineer from Greece, shares his design for a 1.5-GHz frequency counter.

His design is based on an 8-bit microcontroller, but his modifications enable using the device as a 28-bit counter.

Here is a picture of the complete project.

“This design began as a Microchip Technology 8-bit PIC learning project. But it became more than that,” Adamidis says in his article. “Although I used an 8-bit PIC, I actually created a 28-bit counter.”

“The device measures signal frequencies from 0.1 Hz to 1.5 GHz and displays them on a 2 × 16 character LCD,” Adamidis continues. “It offers a frequency resolution up to 0.1 Hz for frequencies in the 0.1-Hz-to-100-MHz range and up to 4 Hz for 100-MHz-to-1.5-GHz frequencies. (The display resolution generally differs from the measurement accuracy.) Minimum and maximum hold functions, selection of frequency units, and gate time adjustment are also supported. “

Adamidis says it is “remarkable” that his frequency counter is actually a 28-bit counter.

“It uses a Microchip Technology PIC18F2620 microcontroller, which has only 16-bit internal counters. I used the PIC18F2620’s internal 16-bit Timer0 module (configured as a 16-bit counter), an additional 4-bit NXP Semiconductors 74F161 binary counter, and the PIC18F2620’s internal prescaler (in 1:256 prescale mode) in series to achieve a total of 28 bits.”

This is the 1.5-GHz frequency counter’s block diagram.

 

To read more about  the theory of operation, hardware, and software behind Adamidis’s design, check out this month’s issue of Circuit Cellar.

DIY Single-Board Computers

Countless technological innovations have certainly made the earliest personal  computers long obsolete. As Circuit Cellar contributors Oscar Vermeulen and Andrew Lynch note:  “Today there is no sensible use for an 8-bit, 64-KB computer with less processing power than a mobile phone. “

Nonetheless, there exists a “retrocomputing”  subculture that resurrects older computer hardware and software in DIY projects. It may be sentimental, but it can also be instructive.

In their two-part series beginning in July in Circuit Cellar, Vermeulen and Lynch focus on that strain of retrocomputing that involves designing and building your own computer system from a “bag of chips” and a circuit board.

Part 1 describes a simple single-board CP/M design that uses just one high-capacity RAM chip and is compatible with a serial or PC terminal.

Here is a homebrew N8VEM system with a single-board computer (SBC) and disk/IDE card plugged into the ECB backplane.

“It is easy to create a functional computer on a little circuit board—considering all the information now available on the Internet,” Vermeulen and Lynch say in Part 1.  “These retro machines may not have much practical use, but the learning experience can be tremendously valuable.”

Some “homebrewed” computer creations  can be “stunningly exotic,” according to Vermeulen and Lynch, but most people build simple machines.

“They use a CPU and add RAM, ROM, a serial port, and maybe an IDE interface for mass storage. And most hobbyists run either BASIC (e.g., the 1980s home computers) or use a “vintage” OS such as CP/M.

“Running CP/M, in fact, is a nice target to work toward. A lot of good software ensures your homebrew computer can do something interesting once it is built. As the predecessor of MS-DOS, CP/M also provides a familiar command-line interface. And it is simple. A few days of study are enough to port it to your circuit board.”

But some Circuit Cellar readers may want more from a retrocomputing experience than a one-off project.  In that case, there are online resources that can help, according to the authors.

“Working on your own, it can become progressively more difficult to take the next steps (i.e., building graphics subsystems or using exotic processors) or to add state-of-the-art microcontrollers to create ‘Frankenstein’ systems (i.e., blends of old and new technology that can do something useful, such as automate your home).”

Part 1 of their article introduces a solid online resource for taking retrocomputing to the next level–the N8VEM Google group, which provides a single-board CP/M design meant to engage others.

This is the N8VEM in its $20 stand-alone incarnation.

“N8VEM is not about soldering kits. It is about joining in, trying new things, and picking up skills along the way. These skills range from reading schematics to debugging a computer card that does not operate as intended. The learning curve may be steep at times, but, because the N8VEM mail group is very active, expert help is available if or when you get stuck….

“As the novelty of designing a simple single-board computer (SBC) wears off, you may prefer to focus your energy on exploring graphics systems or ways to hook up 8-bit machines on the Internet. Or, you may want to jump into systems software development and share your experiences with a few hundred others.

“Retrocomputing is not always backward-facing. Making  ‘Frankenstein’ systems by adding modern Parallax Propeller chips or FPGAs to old hardware is a nice way to gain experience in modern digital electronics, too.”

For more, check out the July issue of Circuit Cellar for Part 1 of their series. In Part 2, scheduled for publication in August,  the authors provide a technical look at the N8VEM’s logic design. It also provides a starting point for anyone interested in exploring the N8VEM’s system software and expansion hardware, according to Vermeulen and Lynch.