Thursday, 16. December 2004
Work on cwtext
rsbohn
09:22h
Another 4:00 am hackdown. This time I started with a test. Actually I started by installing cygwin. This allowed me to run cvs and download the cwtext project with unix line endings. Cygwin is now installed on a Samba share on my Slackware Linux 9.0 box. While waiting for cygwin to install gcc and make I ssh'ed to slackware and did the building there. How did I get anything done when I only had one computer at home? Anyhow I got a CVS copy of cwtext and started building the test code. Feed the audio generator a series of frequencies, read back the stored frequency, print both out. Oh yeah, spit out a 1 second sine wave (440 Hz) as a sanity check. I added code to get the stored frequency from the generator and ran the first test. The output sine wave was ok, but the frequency table showed big problems in my code. I was actually storing the wavelength (1/frequency), as samples per cycle, in an integer. Since my sample rate was 8000 samples per second I started getting big errors at anything over 1000 Hz. Using a higher sample rate would help, but the real fix was to use a float for the wavelength. I also chose to store frequency rather than wavelength. This works with floats, practically imposible with integers. So now I store the frequency in cycles per sample, 1/8 for 1000 Hz and so on. Build and run, now all my stored frequencies come back as zero. I forgot to cast something to float in the setFrequency. See the changes to pcm.c. With the cast (near line 75) I got the expected numbers, up to 2000Hz. Hmm, 8000/4 = 2000, so my max frequency limit is working too. I could probably get by up to 4000 Hz, some kind of limit at bitrate/4 or bitrate/2. Anyway, the tests pass (well enough for me), so I check in the code, drop in a notice on the sourceforge news feed, and call it a...morning. Back to bed! Test First helped me fix a reported issue, and I knew immediately when I broke the code and when I really fixed it. It wasn't too hard to build the first test. I may have to refactor a bit as I expand the tests, but it is good enough for what I need right now. The other think I think I did right was to modularize the code. I was able to work on the PCM generator without messing up the morse code portions of the project. OK the whole project is a little strange, maybe over-engineered but it does the task with increasingly fewer problems. I'm glad I did it! Get your CWText Project Updates right here.
|
8145 days of detection
mod: 12/3/08, 5:42 AM days of detection... PMOG owner
BiographyRandall Bohn lives in Orem, Utah, USA. He works as a Software Quality Engineer. He is a big fan of the AVR line of microcontrollers. He has been in the computer industry since 1989. Randall is married and has three children. rsbohn can be reached via gmail.com. status
Youre not logged in ... Login
Amazon.com DVD Shop
Amazon.com DVD Shopmenu
search
related
calendar
recent updates
Arduino Starter Kit
MAKE Blog How-to Tuesday posted a challenge: Optimize the sketch code for a pressure sensor bar graph. Here is my second attempt: int gate[] = {10, 20, 50, 100, 200, 32767}; void setup() {DDRB = 0b00111110;} void loop() { int dval = 0; int rval = analogRead(2); for (int x = 0; rval... 12/3/08, 5:42 AM Measuring Supply Voltage
I'm running my latest handheld computer on solar power. It starts up when the sun rises and runs all day. I started wondering how I could measure the voltage coming in from the solar panel. I came up with a way to use a diode and a resistor and the... 7/29/08, 9:53 AM Ten Pin ISP adapter
I've already built a six pin ISP adapter, but my Olmex cards use the ten pin ISP. I put a header on a scrap of perf board, added an LED for the heartbeat, and then connected the ten pin cable. Actually it is a fifteen pin cable, off a joystick... 7/16/08, 10:00 PM Hello 5x7 Style
Wrote a new firmware for the 5x7 display. Now it scrolls out 'hello' over and over again. I'm running it on a solar panel, so it wakes up with the sun and runs all day long. When I built the LED matrix I put resistors on the five columns. I'm starting... 6/17/08, 12:48 PM Provo, Utah
With a walkable downtown and access to two Universities, Provo Utah is a great location. I live next door in Orem. Kipplinger: Provo: Pristine Tech Mecca (Video) (Text) 6/2/08, 10:07 AM Another release of AVRISP sketch
There is a new release of the AVRISP emulation sketch for Arduino: avrisp.02.zip. This one should work with Mega8 and Mega168. mega-isp 5/28/08, 4:48 PM Sorting Out Page Sizes
There is a new release of AVRISP Emulation for Arduino. This is an Arduino firmware that allows you to program other AVR microcontrollers. The new zip file (avrisp.01.zip) should compile on the current Arduino IDE, and I changed the comments that put the wrong labels on the SPI pins. Go ahead... 5/27/08, 11:31 AM Flash Problems
I'm building a project using the AVR ATMega8 microcontroller. Once I got the thing wired up to where I could write firmware to it I found that it was always failing. I made a .hex file full of 0x10 values (256 bytes worth) and tried uploading that to the chip.... 5/16/08, 2:56 PM William's Arduino Board
I'm building an Arduino-compatible board for William. I'm building it on the Evil Mad Scientist MegaXX8 business card. It will have four built-in LEDs and a USB interface. It will also have connectors so he can use it with a breadboard. Perhaps we can connect it to some of his... 5/15/08, 7:26 AM Cybord Signal Detector
Some digital radio signals use Frequency Shift Keying (FSK). This often has one frequency for a Mark and one for a Space. I plan to build a cybord or other chip that will decode an FSK signal, producing three different values: NO_SIGNAL, MARK, and SPACE. The signals would then go... 5/15/08, 7:20 AM |