Unable to open some websites on your ADSL internet connection? I came across this problem when I couldn't open irctc.co.in on my BSNL internet connection. This post explains why some websites fail to load on ADSL connections and how to work around the problem.
Thursday, October 23, 2014
Monday, September 29, 2014
Syntax highlighting code in Blogger
So far, I've been using the Courier monospace font to show code in my posts on Blogger. Jekyll has better support for syntax highlighting and a static site with Github pages is the "in thing" these days. Let's see how well Prettify works with Blogger for syntax highlighting.
Saturday, September 27, 2014
On building portable Linux binaries
One of the annoying things about Linux is how hard it is to build binaries that work on all reasonably recent distributions of the operating system. Dynamic linking is favored in Linux for a number of reasons. But it puts the burden on the user to make sure that all dependencies are met, and this can quickly lead to what is popularly called "dependency hell".
Saturday, July 5, 2014
NTSC demystified - Color palette demo with simplified progressive and interlace scanning - Part 7
This final post in the NTSC Demystified series demonstrates color NTSC signal generation using a microcontroller. We're going to get Atmega16, an 8-bit microcontroller, to generate color NTSC video signals without using an NTSC color encoder chip like AD725!
Saturday, June 21, 2014
Flat Hacker News
Threaded conversations in Hacker News (HN) can be a pain at times. It's easy to lose context as you scroll down a long discussion. Jeff Atwood has written about numerous issues with threaded discussions and suggests limiting the level of replies allowed. So, how do we go about doing that without asking the HN maintainers ?
Update: This latest version of the Flat HN bookmarklet is available here.
TL;DR Edition - Drag this link, Flat/Threaded HN, to your bookmarks. Open a discussion on HN and click on the newly created "Flat/Threaded HN" bookmark.
Update: This latest version of the Flat HN bookmarklet is available here.
TL;DR Edition - Drag this link, Flat/Threaded HN, to your bookmarks. Open a discussion on HN and click on the newly created "Flat/Threaded HN" bookmark.
![]() |
| Deeply threaded dicussion |
Sunday, January 26, 2014
On Signal to Noise Ratio (SNR)
A large part of circuit design is about making trade-offs between speed, cost, power consumption and so on while meeting some design specification that can often be traced to Signal to Noise ratio (SNR). Yet, possibly for pedagogical reasons, SNR is often under-emphasized in undergraduate classes. Remember those amplifiers you heard/read about years ago ? This post will demonstrate a canonical application of amplifiers and show you how to measure SNR of a signal captured from an Arduino.
Saturday, December 7, 2013
Interpreting the fourier transform
A friend of mine, who is a designer, asked me how the Fourier transform is interpreted. I'm turning my answer into a blog post in the hope that this might help non EE/math people in dealing with real-world signals.
Monday, March 18, 2013
Templating with web.py for Circuit Design
When describing circuits to computers, have you ever felt that the languages for EDA, be it SPICE or Verilog or whatever are not flexible enough ? Well, I have. Coding regular structures such as adders, ring oscillators, multipliers etc. with popular languages in EDA can be a pain. A couple of weeks ago, I was checking out a synthesized ring oscillator to build a time-to-digital converter (TDC) [1]. Building long chains of inverters by hand is drudgery and SPICE does precious little to help in automation. At first, I tried writing a python program with string manipulations that generates verilog code, but quickly came to realize that its way more natural to have snippets of python inside verilog. Now, that needs a bit of work to get going. Thankfully, web developers solved this problem long ago for programmatically generating HTML. I used web.py 's templating engine to write verilog code that describes a ring oscillator (in case you are surprised by the fact that I used verilog rather than SPICE, the whole idea is to create the TDC with standard cells).
Thursday, June 9, 2011
NTSC demystified - Cheats - Part 6
Throughout this series of articles we've seen a number of "cheats" or non-standard signals which simplify NTSC signal generation. This post summarizes them.
NTSC demystified - Implementation - Part 5
Now that we understand how NTSC color coding works and the math behind it, it's time to think of ways to implement color coding. Knowing the math helps because that knowledge equips us to abuse the system and implement color using simpler/cheaper hardware.
Saturday, May 21, 2011
WAV Player with LPC1768 and SD card
After porting the SD card low-level IO functions that my project team had written for the AVR Atmega 8-bit series about a year ago, integration with elm-chan's FAT FS was seamless. Keeping the connections suggested by Mike, the SD card posed no difficulty at all.
Playing a WAV file with a microcontroller is a "hello world" equivalent when interfacing with the SD card. For this, the motor control PWM peripheral looked ideal since I needed the main PWM peripheral for something else. An RC low pass filter of 330 ohm and 0.1uF is good enough to filter out the PWM frequency and its harmonics while leaving the audio signal intact.
Playing a WAV file with a microcontroller is a "hello world" equivalent when interfacing with the SD card. For this, the motor control PWM peripheral looked ideal since I needed the main PWM peripheral for something else. An RC low pass filter of 330 ohm and 0.1uF is good enough to filter out the PWM frequency and its harmonics while leaving the audio signal intact.
Friday, May 20, 2011
Interfacing with SD card gotcha
Elm-ChaN's tech notes on interfacing with SD card is fantastic. There are, however, some things left unsaid. Today, my colleague Thejasvi and I discovered two aspects not explicit in that tutorial.
1. The way /CS signal should be handled.
Before sending a command, make /CS low. Get the response, data packets ( if any ). Now, it is essential to make /CS high before sending the next command.
2. After one command is complete. That is to say, a command is sent and a response is got (mostly R1 response) , do NOT make /CS high. The card will go out of sync and wont accept new commands properly. After the R1 response is got, send atleast one dummy byte(0xFF) and then make /CS high. Now it is ready to accept new commands. This is probably because the card is completely inactive if no data is transmitted to it as no clock signal goes to it. My conjecture is that it needs a few clocks to resynchronize after a command-response before it can accept a new command. Thus the dummy byte after the R1 response.
1. The way /CS signal should be handled.
Before sending a command, make /CS low. Get the response, data packets ( if any ). Now, it is essential to make /CS high before sending the next command.
2. After one command is complete. That is to say, a command is sent and a response is got (mostly R1 response) , do NOT make /CS high. The card will go out of sync and wont accept new commands properly. After the R1 response is got, send atleast one dummy byte(0xFF) and then make /CS high. Now it is ready to accept new commands. This is probably because the card is completely inactive if no data is transmitted to it as no clock signal goes to it. My conjecture is that it needs a few clocks to resynchronize after a command-response before it can accept a new command. Thus the dummy byte after the R1 response.
Thursday, April 28, 2011
Wednesday, April 27, 2011
NTSC demystified - Nuances and Numbers - Part 3
Ever since I understood how NTSC color worked, I've had a nagging question. How does the TV separate color info (color sub-carier) from the luminance information. If the same color was maintained all throughout the line, then the color carrier can be removed away by narrow band-reject filtering. But when the color changes (phase changes) , then how does the TV distinguish color from luminance which is also possibly changing ?
DSP Library for LPC17xx
NXP has most kindly provided a free assembly coded DSP library for its users. I needed to extract the fundamental frequency of an audio signal and with this library, the job got over in 5 minutes.
Wednesday, April 20, 2011
NTSC demystified - Color Encoding - Part 2
NTSC composite video is a compatible standard. This means that video signal works with older B&W TV Sets as well. So, we're looking to understand how color information is added to the B&W NTSC signal in such a way that Color TV sets can decode the color information while older B&W TV sets ignore the color information. Developing such a signal must have been a formidable task indeed !
Tuesday, April 19, 2011
NTSC demystified - B&W Video and Sync - Part 1
NTSC progressive scanning mode and simpler sync methods are not well documented and this issue is addressed here. Producing video signals by going to lowest hardware level is fun and satisfying. With the number of very capable digital controllers available to hobbyists today, it has become possible to generate analog video signals entirely in software. With the techniques and sync patterns presented here, generating "software video" becomes a much easier task.
Monday, March 28, 2011
LPC1768 ADC has too many glitches
The on-chip ADC in the Atmega lineup was so easy to use compared to the one on LPC1768. Last time I had tried, the Atmega ADC didn't need much filtering to give reasonable results. But the ADC module on LPC1768 seems unusable without filtering.
Thursday, March 10, 2011
UART to USB converter using LPC1768 and AVR 8-bit UART library
While working on a project on the Atmega8 for school, the FT232 chip being used as a UART - USB converter failed. Well, actually its the board that failed, or rather broke...
Saturday, February 19, 2011
LPC17xx Virtual COM port - A USB CDC Class device library
With physical COM ports non-existent in laptops and fast disappearing on desktops, its a matter of immense convenience to embedded programmers if a chip has the USB interface.
Subscribe to:
Posts (Atom)
