-
Notifications
You must be signed in to change notification settings - Fork 0
/
MCU.tex
73 lines (68 loc) · 3.6 KB
/
MCU.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
\section{Mikrokontrolér}
Volba \acs{MCU} byla ovlivněna především autorovými předchozími zkušenostmi
s~architekturou 8-bit AVR. Mikrokontroléry ATmega jsou kompatibilní
s~platformou Arduino\footnote{\url{https://www.arduino.cc/}}, která umožňuje
jednoduchý vývoj firmware v~jazyce C++ bez nutnosti znát všechna specifika
daného MCU. To je v~souladu s~cíli projektu~-- technicky zdatnější uživatel si
může snadno upravit firmware pro své potřeby. Pro vývoj firmware před
dokončením návrhu desky plošných spojů navíc bylo možné využít vývojových desek
Arduino, což vývoj celého zařízení urychlilo.
Kromě rozšířenosti v~amatérských projektech a~dostupnosti vývojových desek ale
zvolený čip \texttt{ATmega328P} nevyniká počtem I/O pinů, výpočetním
výkonem, periferiemi ani cenou. Výhodou je ale jeho dostupnost nejen
v~pouzdrech pro povrchovou montáž (\acs{SMD}), ale i~v~pouzdře s~vývody.
Použití SMD součástky je totiž na amatérsky vyrobeném plošném spoji složitější,
obzvlášť pokud jde o~plošný spoj jednostranný.
\nocite{dshATmega328} % TODO info o MCU
I/O piny jsou děleny do třech portů (Port B, Port C, Port D). Podle toho jsou
piny číslovány~-- například první pin portu B je značen \MCUpin{PB0}. Ve
firmware jsou ale používána čísla pinů frameworku Arduino. K~vzájemnému převodu
těchto dvou způsobů značení slouží tabulka~\vref{tab:MCU pins}.
\begin{table}[htb]
\centering
\caption{%
Číslování pinů MCU ATmega328P dle frameworku Arduino%
%\footnote{\url{https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf}}
}
\label{tab:MCU pins}
% https://www.abclinuxu.cz/tex/poradna/show/325037
\catcode`\-=12
\begin{tabular}{*{3}{l>{\MCUpin\bgroup}l<{\egroup}}}
\toprule
\multicolumn{2}{c}{\texttt{PORTD}}
& \multicolumn{2}{c}{\texttt{PORTB}}
& \multicolumn{2}{c}{\texttt{PORTC}}
\\
\cmidrule(lr){1-2}
\cmidrule(lr){3-4}
\cmidrule(lr){5-6}
Arduino pin & \multicolumn{1}{c}{MCU pin}
& Arduino pin & \multicolumn{1}{c}{MCU pin}
& Arduino pin & \multicolumn{1}{c}{MCU pin}
\\
\midrule
0 & PD0 & 8 & PB0 & A0 & PC0 \\
1 & PD1 & 9 & PB1 & A1 & PC1 \\
2 & PD2 & 10 & PB2 & A2 & PC2 \\
3 & PD3 & 11 & PB3 & A3 & PC3 \\
4 & PD4 & 12 & PB4 & A4 & PC4 \\
5 & PD5 & 13 & PB5 & A5 & PC5 \\
6 & PD6 \\
7 & PD7 \\
\bottomrule
\end{tabular}
\end{table}
Mikrokontrolér je provozován s~externím krystalovým rezonátorem. Pro zachování
kompatibility s~platformou Arduino byla zvolena taktovací frekvence
\SI{16}{\mega\hertz}. V~souladu s~pokyny uvedenými v~datasheetu MCU je krystal
připojen mezi piny \MCUpin{XTAL1} a~\MCUpin{XTAL2}. Z~každého z~těchto pinů je
také přidán keramický kondenzátor o~kapacitě \SI{22}{\pico\farad} do země.
Podle oficiálního schématu
zapojení\footnote{\url{https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf}}
Arduino UNO Rev3 je na těchto vývojových deskách osazován ještě rezistor
o~hodnotě \SI{1}{\mega\ohm} paralelně ke krystalu (u~hlavního MCU
\texttt{ATmega328P-PU} je použit keramický rezonátor, stejný rezistor je ale
i~u~krystalového oscilátoru čipu \texttt{ATmega16U2-MU}). Ten ale není pro
funkci obvodu potřebný a~datasheet MCU neuvádí, že by bylo nutné či vhodné jej
použít~\cite{dshATmega328}.
% https://www.avrfreaks.net/forum/atmega328p-1m-resistor-crystal