Documentation master
authorCamil Staps <info@camilstaps.nl>
Tue, 20 Jun 2017 11:21:22 +0000 (11:21 +0000)
committerCamil Staps <info@camilstaps.nl>
Tue, 20 Jun 2017 11:21:22 +0000 (11:21 +0000)
.gitignore
doc/character-set.png [new file with mode: 0644]
doc/doc.tex [new file with mode: 0644]

index 05c771f..f0b1d13 100644 (file)
@@ -1,3 +1,9 @@
 eagle.epf
 
+*.aux
+*.fdb_latexmk
+*.fls
+*.log
+*.out
+
 *.pdf
diff --git a/doc/character-set.png b/doc/character-set.png
new file mode 100644 (file)
index 0000000..82bd1a6
Binary files /dev/null and b/doc/character-set.png differ
diff --git a/doc/doc.tex b/doc/doc.tex
new file mode 100644 (file)
index 0000000..5862b31
--- /dev/null
@@ -0,0 +1,86 @@
+\documentclass[a4paper]{article}
+
+\usepackage[margin=25mm]{geometry}
+\usepackage{pdfpages}
+\usepackage{cleveref}
+\usepackage[hidelinks]{hyperref}
+\usepackage{xcolor}
+
+\title{Liquid Crystal Terminal documentation}
+\author{Camil Staps}
+
+\begin{document}
+
+\pagestyle{empty}
+
+\makeatletter\section*{\@title}\makeatother
+
+\subsection*{Usage}
+Apply 5V to the power jack.
+The outer switch (S2) should be in `USE' state,
+       or communication with other devices is impossible.
+Other devices can control the terminal over UART as described below.
+
+There is a trimmer potentiometer on the LCD board to change the brightness.
+
+\subsection*{Protocol description}
+The devices communicates 8-bit characters over a 115,200 baud UART link.
+All characters are printed directly on the LCD display,
+       with the exception of device control bytes (\verb$0x11$ through \verb$0x14$).
+
+\subsubsection*{Characters}
+HD44780-based LCD displays have a character set similar to ASCII,
+       which can be found at \url{http://www.ekenrooi.net/lcd/lcd0.shtml#charset}.
+Note that bytes \verb$0x00$ through \verb$0x07$ are user-defined characters.
+They are set-up at compile-time in \verb$lcd.ino$ using \verb$createChar$ calls.
+In \verb$lcd.h$, some examples of user-defined characters can be found.
+
+\subsubsection*{LEDs}
+To change the state of an LED, use device control 1 (\verb$0x11$) with an LED specification.
+An LED specification is one byte and should look like below.
+ID1 and ID2 identify the LED, whereas BLINK, RED and GRN indicate its state.
+It is not possible to change the states of multiple LEDs at once;
+       you need to re-issue device control 1.
+
+\begin{center}
+       \begin{tabular}{l c c c c c c c c}
+               Bit      & 7 & 6 & 5   & 4   & 3 &     2 &   1 &   0 \\\hline
+               Value    & 0 & 0 & ID1 & ID2 & 0 & BLINK & RED & GRN \\
+       \end{tabular}
+\end{center}
+
+\subsubsection*{Backlight}
+To change the state of the LCD backlight, use device control 2 (\verb$0x12$) with the backlight state.
+The backlight state is one byte and should be 0, 1 or 2 to set the display, off, on or on flash, respectively.
+When the backlight is set to flash, it turns on for some time and then turns off again.
+
+\subsubsection*{Button (S1)}
+It is not possible to get the button state.
+
+\subsection*{Reprogramming}
+To reprogram, 5V still has to be applied to the device.
+\textcolor{red}{%
+       Switch S2 should be in `PGM' state.
+       Connecting the ICSP connector while S2 is in `USE' state \emph{will} break the device.}
+Remove the Atmega328 chip from an Arduino Uno.
+Connect the ICSP connector (J2; inside the device) to the Arduino board as below.
+It should then be possible to reprogram the device from the Arduino IDE.
+
+\begin{center}
+       \begin{tabular}{l l}
+               ICSP connector & Arduino pin \\\hline
+               Brown          & GND   \\
+               Yellow         & TX    \\
+               Green          & RX    \\
+               Blue           & RESET \\
+       \end{tabular}
+\end{center}
+
+When communicating through an Arduino (during development), make sure to disable RTS and DTR lines.
+These reset the device.
+This is not an issue on the normal interface, where RTS and DTR are ignored.
+On linux, the right settings can be achieved by using \verb$stty -F <PORT> -crtscts -hupcl$.
+
+\includepdf[angle=90]{../schematic/schematic.pdf}
+
+\end{document}