Running a GUI window manager on an ATMega1284p microcontroller

I have a confession to make. Yes, I must admit that I’ve never thought of running a home-coded GUI window manager on an ATMega1284p microcontroller.

But that’s exactly what Andrew Rossignol did when he designed a Window Manager for an AVR microcontroller.

“I have been experimenting with a uVGA-II VGA controller for the past couple of weeks. It is an amusing piece of hardware that is capable of drawing graphics onto a VGA framebuffer,” Rossignol explained in a recent blog post.

“The VGA controller takes care of line drawing algorithms and helps to hardware accelerate the drawing of geometric primitives (squares, circles, triangles, polygons, lines). Once I realized the power of this hardware I decided to implement a window manager like you would expect on any standard desktop PC, [running] a mouse for user input to the system.”

At this point in time, the default system boots with three applications: Theme Manager, Audio Player and Window Factory. The Theme Manager is used to modify the colors of the system theme, the Audio Player to stream audio files stored on an SD card and the Window Factory to create new windows.

Software? Check out the infographics below for a quick breakdown.


Hardware? Just the basics – an ATmega1284p microcontroller, a uVGA-II VGA controller, a MAX233 level converter and a Microsoft Serial Mouse.

“I have maintained a Git repo on my laptop containing all of this code, [although] I am not 100% happy with it yet. I need to work on the UART driver some more and polish up some documentation before uploading it,” Rossignol added.

2 thoughts on “Running a GUI window manager on an ATMega1284p microcontroller

  1. Pingback: Getting back to basics with Atmel and the Maker movement | Bits & Pieces from the Embedded Design World

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s