AVR High performance timing.

Note: For an in-depth discussion on using C++ for high-performance avr programming, see this post.


 What's the point of programming a timing system for our AVR projects?
Good control of time can prove to be a valuable tool under our belts. Focusing on robotics, it can help us with a variety of things including, but not limited to:
- Control of servos and sensors
- Position estimation based on speed encoders
- Led flashing
- Task scheduling
- Code profiling
So proper timing can make our projects more powerful and reliable. Moreover, having an abstraction layer on top of timer hardware will help us prototype faster and will make our code more portable.


Building a Log system for the engine

This is the first in a series of tutorials about programming different pieces of a game engine. I'll be using my own engine, Revolution Engine as a framework for these tutorials, but the code is intended to be easy to adapt to different projects. In this first tutorial we will design and implement a simple but powerful log system for Revolution Engine. The log system is one of the first things you should write for your engine (and for most big projects, in fact).
Let's dive in.