]> rtime.felk.cvut.cz Git - mf6xx.git/commitdiff
Diploma thesis text.
authorRostislav Lisovy <lisovy@gmail.com>
Mon, 18 Apr 2011 18:01:44 +0000 (20:01 +0200)
committerRostislav Lisovy <lisovy@gmail.com>
Mon, 18 Apr 2011 18:01:44 +0000 (20:01 +0200)
doc/diploma_thesis/text/dip_text.tex

index 8a620ca2ee990cc24e90c5693f12db99a471a1ec..3763e50078e346a90fb2e9f5f676ca5d0f2cdf55 100644 (file)
@@ -165,10 +165,10 @@ Karta MF624 najde své uplatnění hlavně v laboratorním prostředí -- v př
 
 Karta disponuje následujícícmi funkcemi (v popisu implementace ovladačů se omezím pouze na A/D, D/A převodníky a digitální vstupy/výstupy):
 \begin{itemize}
-\item 8 digitálních vstupů
-\item 8 digitálních výstupů
-\item 8 14bitových A/D převodníků
-\item 8 14bitových D/A převodníků
+\item 8 digitálních vstupů (TTL kompatibilní logické úrovně)
+\item 8 digitálních výstupů (TTL kompatibilní logické úrovně)
+\item 8 14bitových A/D převodníků (rozsah $\pm$10 V)
+\item 8 14bitových D/A převodníků (rozsah $\pm$10 V)
 \item 4 časovače/čítače
 \item 4 vstupy inkrementálních snímačů
 \end{itemize}
@@ -193,7 +193,7 @@ Na straně 11 je k vidění první důležitá tabulka (zde tab. \ref{tab_bar}):
        \hline BADR2 (memory mapped) & Counter/timer chip & 128 & 32 \\ 
        \hline 
        \end{tabular} 
-       \caption{Paměťové regiony, které PCI karta využívá}
+       \caption{Paměťové regiony, které využívá karta MF624}
        \label{tab_bar}
        \end{center}
 \end{table}
@@ -268,10 +268,10 @@ Karta MF624 obsahuje osm 14bitových A/D převodníků s pevně stanoveným rozs
 
 \begin{itemize}
 \item Nejprve se v registru ADCTRL zvolí, které A/D převodníky mají být čteny. 
-Každý z A/D převodníků je reprezentován jedním bitem. Zápisem 1 do daného bitu se nastaví, že bude daný A/D převodník aktivní -- 0 ho deaktivuje.
+Každý z A/D převodníků je reprezentován jedním bitem. Zápisem 1 do daného bitu se nastaví, že bude daný A/D převodník aktivní -- 0 ho deaktivuje. Je možné zvolit více než jeden A/D převodník.
 \item Čtením registru ADSTART se spustí převod na zvolených A/D převod\-nících. Přečtená hodnota se dále nepoužívá.
 \item V případě, že se provedl převod na všech zvolených A/D převodnících, je EOLC bit (17. bit) GPIOC registru nastaven na 0 (jinak je v 1).
-\item Výslednou hodnotu je možné přečíst z registru ADDATA, který je typu FIFO. To znamná, že opětovným čtením jednoho registru vyčteme jednotlivé naměřené hodnoty z aktivovaných A/D převodníků v pořádí od 0 k 7.
+\item Výslednou hodnotu je možné přečíst z registru ADDATA, který je typu FIFO. To znamná, že opětovným čtením jednoho registru jsou vyčítány jednotlivé naměřené hodnoty z měřených A/D převodníků v pořádí od 0 do 7.
 
 Jinou možností je místo čtení registru ADDATA číst některý z jeho \textit{zrcadlených registrů} (celkem je jich 7, v manuálu jsou označeny jako \textit{BADR1 + 0x02} až \textit{BADR1 + 0x0E}). Tyto registry se chovají \textbf{zcela stejně} jako registr ADDATA, pouze leží na jiných adresách. Příklad: pokud byly aktivovány první čtyři A/D převodníky, po převodu je možné výslednou hodnotu vyčíst opakovaným čtením registru ADDATA nebo čtením registru ADDATA, ADDATA1, ADDATA2, ADDATA3 přesně v tomto pořadí. Čtení z registrů v jiném pořadí bude stále vracet hodnoty převodníků 0--4.
 \end{itemize}
@@ -316,11 +316,184 @@ Nastavení výstupních hodnot D/A převodníků může probíhat následující
        \hline 0x0000 & -10.0000 V \\ 
        \hline 
        \end{tabular} 
-       \caption{Kódování vstupních hodnot A/D převodníku}
+       \caption{Kódování vstupních hodnot D/A převodníku}
        \label{tab_daval}
        \end{center}
 \end{table}
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+\section{Humusoft MF614}
+\begin{figure}[h!]
+       \begin{center}
+       \includegraphics[width=150mm]{img/mf614.jpg}
+       \caption{Měřící karta Humusoft MF614}
+       \label{mf614}
+       \end{center}
+\end{figure}
+
+Karta Humusoft MF614 má podobné funkce a využití jako karta MF624. Ve skutečnosti se jedná o jeji předchůdkyni. 
+
+Karta disponuje následujícími funkcemi:
+
+\begin{itemize}
+\item 8 digitálních vstupů (TTL kompatibilní logické úrovně)
+\item 8 digitálních výstupů (TTL kompatibilní logické úrovně)
+\item 8 12bitových A/D převodníků (volitelné rozsahy $\pm$10 V, $\pm$5 V, 0--5 V, 0--10 V)
+\item 4 12bitových D/A převodníků (rozsah $\pm$10 V)
+\item 4 časovače/čítače
+\item 4 vstupy inkrementálních snímačů
+\end{itemize}
+
+\subsection{Komunikace s kartou}
+Způsob komunikace s kartou MF614 se mírně liší od MF624.
+
+Po nahlédnutí do manuálu (dostupný ze stránek výrobce: \url{http://www2.humusoft.cz/www/datacq/manuals/mf614um.pdf}) je z tabulky 9 (zde tab. \ref{tab_mf614_bars}) patrné, že karta využívá více regionů, přičemž některé jsou mapovány do paměti, jiné do vstupně-výstupního adresního prostoru. Po prohlédnutí tabulky popisující rozložení registrů (zde tab. \ref{tab_mf614_regs}) je zřejmé, že pro přístup k digitálním vstupům/výstupům a analogovým vstupům/výstupům jsou použity vstupně-výstupní regiony BAR0, BAR2. 
+
+\begin{table}[h!]
+       \begin{center}
+       \begin{tabular}{|c|c|c|}
+       \hline \textbf{Region}          & \textbf{Function}                                             & \textbf{Size (bytes)} \\ 
+       \hline BADR0 (I/O mapped)       & Board programming registers                           & 32 \\ 
+       \hline BADR1 (I/O mapped)       & Reserved                                                                      & 4 \\ 
+       \hline BADR2 (I/O mapped)       & OX9162 local configuration registers          & 32 \\ 
+       \hline BADR3 (memory mapped) & OX9162 local configuration registers     & 4096 \\ 
+       \hline BADR4 (memory mapped) & Board programming registers                              & 4096 \\ 
+       \hline 
+       \end{tabular} 
+       \caption{Paměťové a vstupně-výstupní regiony, které využívá karta MF614}
+       \label{tab_mf614_bars}
+       \end{center}
+\end{table}
+
+
+\begin{table}[h!]
+       \begin{center}
+       \begin{tabular}{|c|c|c|}
+       \hline \textbf{Address} & \textbf{Read} & \textbf{Write} \\ 
+       \hline BADR0 + 0x0 & \textbf{ADLO} -- A/D data low                      & \textbf{ADCTRL} -- A/D control \\ 
+       \hline BADR0 + 0x1 & \textbf{ADHI} -- A/D data high                     &  \\ 
+       \hline BADR0 + 0x2 & \textbf{9513A} -- Data read                                & \textbf{9513A} -- Data write \\ 
+       \hline BADR0 + 0x3 & \textbf{9513A} -- Command read                     & \textbf{9513A} -- Command write \\ 
+       \hline BADR0 + 0x4 &  &  \\ 
+       \hline BADR0 + 0x5 &  &  \\ 
+       \hline BADR0 + 0x6 & \textbf{DIN} -- Digital input                      & \textbf{DOUT} -- Digital output \\ 
+       \hline BADR0 + 0x7 &  &  \\ 
+       \hline BADR0 + 0x8 & \textbf{DALE} -- D/A latch enable          & \textbf{DA0LO} -- D/A 0 data low byte \\ 
+       \hline BADR0 + 0x9 &                                                                            & \textbf{DA0HI} -- D/A 0 data high byte \\ 
+       \hline BADR0 + 0xA &                                                                            & \textbf{DA1LO} -- D/A 1 data low byte \\ 
+       \hline BADR0 + 0xB &                                                                            & \textbf{DA1HI} -- D/A 1 data high byte \\ 
+       \hline BADR0 + 0xC &                                                                            & \textbf{DA2LO} -- D/A 2 data low byte \\ 
+       \hline BADR0 + 0xD &                                                                            & \textbf{DA2HI} -- D/A 2 data high byte \\ 
+       \hline BADR0 + 0xE &                                                                            & \textbf{DA3LO} -- D/A 3 data low byte \\ 
+       \hline BADR0 + 0xF &                                                                            & \textbf{DA3HI} -- D/A 3 data high byte \\ 
+       \hline \ldots & \ldots & \ldots \\      
+       \hline BADR2 + 0x10 & \textbf{STATUS} -- Status register & \\   
+       \hline 
+       \end{tabular} 
+       \caption{Paměťové a vstupně-výstupní regiony, které využívá karta MF614}
+       \label{tab_mf614_regs}
+       \end{center}
+\end{table}
+
+Jednotlivé registry v těchto regionech jsou 8bitové, proto je potřeba při čtení/zápisu používat pouze 8bitové funkce. Např. 16bitové hodnoty jsou rozděleny do dvou 8bitových registrů -- v takovém případě, obsahuje-li registr ve svém názvu písmena \textbf{LO}, jedná se o spodní bajt, zatímco \textbf{HI} značí horní bajt. Vásledná 16bitová hodnota se získá složením dvou 8bitových:
+\begin{verbatim}
+   u8 regAHI, regALO;
+   u16 regA;
+   
+   regA = regALO | (regAHI << 8);
+\end{verbatim}
+
+\subsection{Digitální vstupy a výstupy}
+Pro nastavení hodnoty digitálních výstupů se zapíše požadovaná hodnota do registru DOUT, kde jeden bit odpovídá jednomu digitálnímu výstupu. Pro čtení ditigálních vstupů je potřeba přečíst registr DIN.
+
+\subsection{A/D převodníky}
+Čtení A/D převodníků je u karty MF614 oproti MF624 trochu složitější, hlavně díky tomu, že je u převodníků potřeba nastavit, v jakém rozsahu bude provedeno měření. Je možné vybírat mezi rozsahy -10--10 V, -5--5 V, 0--10 V, 0--5 V. 
+
+K nastavení vlastností A/D převodníků slouží registr ADCTRL (přeložená tab. \ref{tab_mf614_adctrl}). Bity 2:0 slouží k volbě jednoho z osmi A/D převodníků, které budou při příštím měření použity. Dekadická hodnota určující pořadí A/D převodníku je uložena ve třech bitech jako binární číslo (t.j. $0_{10} = 000_{2}$, $1_{10} = 001_{2}$, $2_{10} = 010_{2}$, $3_{10} = 011_{2}$, $4_{10} = 100_{2}$, \ldots). 
+
+Bity 3 a 4 slouží k nastavení použitého rozsahu (způsob nastavení viz tabulka \ref{tab_mf614_rng}).
+
+Bity 5, 6 a 7 nemají žádnou funkci a musí bát nastaveny na 0, 1, 0.
+
+\begin{table}[h!]
+       \begin{center}
+       \begin{tabular}{|c|c|c|}
+       \hline \textbf{Bit} & \textbf{Jméno} & \textbf{Popis} \\ 
+       \hline  7                       &                               & Musí být nastaveno na 0 \\ 
+       \hline  6                       &                               & Musí být nastaveno na 1 \\ 
+       \hline  5                       &                               & Musí být nastaveno na 0 \\ 
+       \hline  4                       & RNG                   & Nastavení měřeného rozsahu A/D převodníku (tab. \ref{tab_mf614_rng}) \\ 
+       \hline  3                       & BIP                   & Nastavení, zda bude měřený rozsah \textit{bipolární} (tab. \ref{tab_mf614_rng}) \\ 
+       \hline  2, 1, 0         & A2, A1, A0    & Výběr A/D převodníku pro příští měření \\ 
+       \hline 
+       \end{tabular} 
+       \caption{Funkce jednotlivých bitů registru ADCTRL}
+       \label{tab_mf614_adctrl}
+       \end{center}
+\end{table}
+
+\begin{table}[h!]
+       \begin{center}
+       \begin{tabular}{|c|c|c|}
+       \hline \textbf{RNG} & \textbf{BIP} & \textbf{Vstupní rozsah [V]} \\ 
+       \hline  0                       &       0                       & 0--5 V \\ 
+       \hline  1                       &       0                       & 0--10 V \\ 
+       \hline  0                       &       1                       & -5--5 V \\ 
+       \hline  1                       &       1                       & -10--10 V \\ 
+       \hline 
+       \end{tabular} 
+       \caption{Volba rozsahu A/D převodníku}
+       \label{tab_mf614_rng}
+       \end{center}
+\end{table}
+
+Vyčtení hodnoty A/D převodníku může probíhat následujícím způsobem:
+
+\begin{itemize}
+\item Nejprve se v registru ADCRTL zvolí, který A/D převodník bude čten a který měřící rozsah bude použit.
+\item Zápis do registru ADCTRL automaticky spouští převod.
+\item Je-li CC bit (2. bit) registru STAT nastaven na 0, převod již byl ukončen.
+\item Data je poté možné přečíst z registru ADLO a ADHI -- jedná se o 8bitové registry, které je potřeba pro získání 12 bitové výsledné hodnoty \textit{složit} dohromady. Je-li nastaven unipolární rozsah měření (t.j. 0--5 V nebo 0--10 V) je měřená hodnota kódována jako binární číslo. V případě bipolárního rozsahu je hodnota kódována pomocí dvojkového doplňku.
+\end{itemize}
+
+\subsection{D/A převodníky}
+Karta MF614 obsahuje 4 D/A převodníky. Ty mají pevně nastavený výstupní rozsah -10--10 V a nevyžadují žádnou konfiguraci.
+
+Nastavení výstupu D/A převodníků může probíhat následujícím způsobem:
+\begin{itemize}
+\item Do registru DA$x$LO a DA$x$HI (kde $x$ může nabývat hodnot 0, 1, 2, 3 a určuje, ke kterému D/A převodníku registr patří) se zapíše hodnota k převodu. 12bitová hodnota je do 8bitových registrů rozdělena takovým způsobem, že 8 LSB je zapsáno do DA$x$LO a zbývající čtyři jsou zapsány do DA$x$HI na 4 nejnižší bity, nepoužité 4 MSB registru DA$x$HI jsou vyplněny nulami.
+
+Hodnota je zapsána v aditivním kódu (tab. \ref{tab_mf614_dac}).
+
+\item Čtením registru DALE se spustí převod všech D/A převodníků.
+\end{itemize}
+
+\begin{table}[h!]
+       \begin{center}
+       \begin{tabular}{|c|c|}
+       \hline \textbf{Digitální hodnota} & \textbf{Analogová hodnota} \\ 
+       \hline 0xFFF & 9.9951 V \\ 
+       \hline 0x800 & 0.0000 V \\ 
+       \hline 0x7FF & -0.0049 V \\ 
+       \hline 0x000 & -10.0000 V \\ 
+       \hline 
+       \end{tabular} 
+       \caption{Kódování vstupních hodnot D/A převodníku}
+       \label{tab_mf614_dac}
+       \end{center}
+\end{table}
+
+\ibox{
+\textbf{MSB} (Most Significant Bit) je označení pro bit s nejvyšší hodnotou v binárním vyjádření čísla. V obvyklém dvojkovém zápisu jde o bit nejvíce vlevo.
+\\~\\
+\textbf{LSB} (Least Significant Bit) je bit s nejnižší hodnotou. Jde o bit nejvíce vpravo.
+
+\begin{center}
+\texttt{1 0 1 0 1 0 1 0}\\
+\texttt{MSB\hspace{2.6cm}LSB}
+\end{center}}
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \chapter{Implementace ovladačů}
 \section{Operační systém GNU/Linux}
@@ -721,7 +894,7 @@ Jak velký je potřeba udělat \textit{posun} pomůže zjistit soubor \texttt{/s
 \begin{verbatim}
 mf624_BAR2 += (BAR2_phys_addr & (sysconf(_SC_PAGESIZE) - 1));
   |                \-- Fyzická adresa
-  \-- Ukazatel vrácený voláním mmap()                 
+   \-- Ukazatel vrácený voláním mmap()                 
 \end{verbatim}
 
 \subsection{Přístup k paměti zařízení}