Arduino VGA via Interrupts

Project Info
Author: Chris
Difficulty: Medium
Time Invested: 2 Hours

Take a look at the above
articles before continuing
to read this article.
           For some people, interrupts are a mystical thing that they think they will never understand. To that I say non-sense! And to that effect and to help us also better understand VGA, let's see if we can't output some basic VGA signals like we've done before, but this time using some interrupts!
           In this article we'll explore how to output VGA signals from an Arduino UNO by using the timer interrupt to keep output in sync with the exact timing required by the VGA protocol. The end result will be a very empty 'main' loop in our software and a lot of interrupt code that handles everything else. The Arduino is only running at 16 MHz so doing VGA with interrupts on it is really pushing the limits!

Arduino VGA via Interrupts - Demonstration

Arduino VGA via Interrupts - Project Setup

Purpose & Overview Of This Project
           The purpose of this project is to output VGA signals @ 800x600 resolution in a similar fashion as we've done in past Arduino VGA articles. Tri-color output blue, green and red. While this seems boring to average joe-schmoe jack, getting a reliable and static output to a VGA monitor is the first step to actually being able to output more advanced signals and graphics. The timer interrupt in the Arduino will be used to tell the microcontroller everytime a VGA Hsync is necessary.
           For this project we'll use the Arduino UNO platform for the processing and a small VGA breakout board that I built back in the day for the masochist's video card. Everything else for this project will be theory and software which means not much hardware to connect together but a lot of software to understand and figure out in order to match the VGA protocol.