\section{Popis programu pro procesor}
Mikroprocesor je naprogramován, aby se staral o obsluhu veškerých periferií, komunikaci s řídící jednotkou a zobrazoval údaje na LED zobrazovači. Program je napsán v programovacím jazyce C \cite{herout}. Tento programovací jazyk byl zvolen, protože je program mnohem přehlednější a programování je jednodušší, nežli například v jazyce Assembler (ten už se využívá jen na kritické části kódu). Vývojové prostředí bylo použito AVR Studio verze 4 od firmy ATMEL.

\subsection{Hlavní část programu}
Program ve své hlavní smyčce provádí několik hlavních úkolů, které se opakují pořád dokola. Vývojový diagram programu je na obrázku \ref{board_unit_vyv_diag_main}. 
\begin{figure}[!h]
  \begin{center}  
    \includegraphics[scale=0.80]{obrazky/board_unit/board_unit_vyv_diag_main}
  \end{center}  
  \caption{Vývojový diagram - hlavní smyčka}
  \label{board_unit_vyv_diag_main}
\end{figure}

Pomocí \zk{zkA/D} převodníku je měřeno napětí na čidle světla a podle toho je nastavována \zk{zkPWM} pro signál do posuvných registrů, které řídí \zk{zkLED} displeje. 

Dále je asi jednou za sekundu provedeno dekódování \zk{zkGPS} dat (přijaty byly v~přerušení). Data jsou přijímána ve formátu NMEA, zprávou RMC (Recommended Minimum Navigation Information). Na obrázku \ref{board_unit_gps_rmc} je zobrazena přijímaná zpráva GPS. Ze zprávy je dekódován čas, datum a také je pomocí výpočtu provedeno určení letního nebo zimního času. Poté se data uloží do obvodu reálného času FM31276 \cite{fm31276}, který je zálohován baterií.
\begin{figure}[!h]
  \begin{center}  
    \includegraphics[scale=0.80]{obrazky/board_unit/board_unit_gps_rmc}
  \end{center}  
  \caption{Ukázka paketu GPS (RMC) - převzato z \cite{nmea}}
  \label{board_unit_gps_rmc}
\end{figure}

S periodou asi 3 sekundy je také měřena okolní teplota pomocí čidel DS18B20 \cite{ds1820}. V základním provedení je vždy využíváno jen jedno čidlo.

Jako poslední část programu je kontrola přijmu dat od bezdrátového ovladače (pokud tabule pracuje samostatně) a podle toho úprava měřených dat (čas, skóre, atd.) a následná aktualizace všech zobrazovaných dat v posuvných registrech (aktualizace LCD displejů).

\subsection{Bezdrátová komunikace s řídící jednotkou}
Komunikace s řídící jednotkou probíhá přes XBEE moduly, které jsou nastaveny aby odesílaly API pakety. Ukázka jednoho paketu pro odeslání je na obrázku \ref{board_unit_xbee_api}. Výhoda API paketu je v tom že lze v každém paketu nastavit jinou cílovou adresu a~modul nám dává zpětnou vazbu o přijetí paketu a a počtu pokusů při jeho doručení.
\begin{figure}[!h]
  \begin{center}  
    \includegraphics[scale=0.80]{obrazky/board_unit/board_unit_xbee_api}
  \end{center}  
  \caption{API paket pro odeslání dat - převzato z \cite{xbee_pro}}
  \label{board_unit_xbee_api}
\end{figure}

\subsubsection{Dekódování API paketu}
Na obrázku \ref{vyv_diag_decode_xbee} je zobrazen vývojový diagram pro dekódování API paketu. V přerušení jsou přijaty vždy celé pakety a následně se dekódují. Jako první se zkontroluje adresát jestli se shoduje s uloženými adresami. Potom se rozliší typ paketu, jestli jsou to jen data, změna cílové adresy, odezva na AT příkaz (zjišťování informací o~modulu nebo jeho nastavení) a nebo pouze stavová zpráva o doručení předchozího paketu.
\begin{figure}[!h]
  \begin{center}  
    \includegraphics[scale=0.80]{obrazky/board_unit/board_unit_vyv_diag_decode_xbee}
  \end{center}  
  \caption{Vývojový diagram - dekódování přijatých dat Xbee}
  \label{vyv_diag_decode_xbee}
\end{figure}

\subsubsection{Nastavení adresy s řídící jednotkou} \label{sec:set_xbee_adres}
Každé zařízení (zobrazovač, řídící jednotka, infra závora, atd.) má svoje identifikační číslo, aby bylo možné vyhledat v prostoru vždy pouze požadovaná zařízení. Pokud jsou zařízení vyhledávána je vyslán broadcastový paket s dotazem na vyhledání. Všechny zařízení odpoví svou adresou a identifikačním číslem, a následně může řídící jednotka vybrat zařízení a potvrdit mu, aby si do paměti uložilo adresu řídící jednotky. Nastavené zařízení odešle odpověď o úspěšném nastavení. Tímto způsobem se dají na sportovišti k řídící jednotce přiřazovat různé měřící části. Obrázek vývojového diagramu při nastavování cílové adresy je na obrázku \ref{board_unit_vyv_diag_adres}.
\begin{figure}[!h]
  \begin{center}  
    \includegraphics[scale=0.80]{obrazky/board_unit/board_unit_vyv_diag_adres}
  \end{center}  
  \caption{Vývojový diagram - nastavení adresy}
  \label{board_unit_vyv_diag_adres}
\end{figure}
