\hypertarget{group__demos}{}\doxysubsection{Demo projects}
\label{group__demos}\index{Demo projects@{Demo projects}}
\doxysubsubsection*{Modules}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__asmdemo}{Combining C and assembly source files}}
\item 
\mbox{\hyperlink{group__demo__project}{A simple project}}
\item 
\mbox{\hyperlink{group__largedemo}{A more sophisticated project}}
\item 
\mbox{\hyperlink{group__stdiodemo}{Using the standard I\+O facilities}}
\item 
\mbox{\hyperlink{group__twi__demo}{Example using the two-\/wire interface (\+T\+W\+I)}}
\end{DoxyCompactItemize}


\doxysubsubsection{Detailed Description}
Various small demo projects are provided to illustrate several aspects of using the opensource utilities for the A\+VR controller series. It should be kept in mind that these demos serve mainly educational purposes, and are normally not directly suitable for use in any production environment. Usually, they have been kept as simple as sufficient to demonstrate one particular feature. 

The \mbox{\hyperlink{group__demo__project}{simple project}} is somewhat like the \char`\"{}\+Hello
world!\char`\"{} application for a microcontroller, about the most simple project that can be done. It is explained in good detail, to allow the reader to understand the basic concepts behind using the tools on an A\+VR microcontroller.

The \mbox{\hyperlink{group__largedemo}{more sophisticated demo project}} builds on top of that simple project, and adds some controls to it. It touches a number of avr-\/libc\textquotesingle{}s basic concepts on its way.

A \mbox{\hyperlink{group__stdiodemo}{comprehensive example on using the standard IO facilities}} intends to explain that complex topic, using a practical microcontroller peripheral setup with one R\+S-\/232 connection, and an H\+D44780-\/compatible industry-\/standard L\+CD display.

The \mbox{\hyperlink{group__twi__demo}{Example using the two-\/wire interface (T\+WI)}} project explains the use of the two-\/wire hardware interface (also known as \char`\"{}\+I2\+C\char`\"{}) that is present on many A\+VR controllers.

Finally, the \mbox{\hyperlink{group__asmdemo}{Combining C and assembly source files}} demo shows how C and assembly language source files can collaborate within one project. While the overall project is managed by a C program part for easy maintenance, time-\/critical parts are written directly in manually optimized assembly language for shortest execution times possible. Naturally, this kind of project is very closely tied to the hardware design, thus it is custom-\/tailored to a particular controller type and peripheral setup. As an alternative to the assembly-\/language solution, this project also offers a C-\/only implementation (deploying the exact same peripheral setup) based on a more sophisticated (and thus more expensive) but pin-\/compatible controller.

While the simple demo is meant to run on about any A\+VR setup possible where a L\+ED could be connected to the O\+C\+R1\mbox{[}A\mbox{]} output, the \mbox{\hyperlink{group__largedemo}{large}} and \mbox{\hyperlink{group__stdiodemo}{stdio}} demos are mainly targeted to the Atmel S\+T\+K500 starter kit, and the \mbox{\hyperlink{group__twi__demo}{T\+WI}} example requires a controller where some 24Cxx two-\/wire E\+E\+P\+P\+R\+OM can be connected to. For the S\+T\+K500 demos, the default C\+PU (either an A\+T90\+S8515 or an A\+Tmega8515) should be removed from its socket, and the A\+Tmega16 that ships with the kit should be inserted into socket S\+C\+K\+T3100\+A3. The A\+Tmega16 offers an on-\/board A\+DC that is used in the \mbox{\hyperlink{group__largedemo}{large}} demo, and all A\+V\+Rs with an A\+DC feature a different pinout than the industry-\/standard compatible devices.

In order to fully utilize the \mbox{\hyperlink{group__largedemo}{large}} demo, a female 10-\/pin header with cable, connecting to a 10 k\+Ohm potentiometer will be useful.

For the \mbox{\hyperlink{group__stdiodemo}{stdio}} demo, an industry-\/standard H\+D44780-\/compatible L\+CD display of at least 16x1 characters will be needed. Among other things, the \href{http://ssl.bulix.org/projects/lcd4linux/}{\texttt{ L\+C\+D4\+Linux}} project page describes many things around these displays, including common pinouts. 