<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> ATmega801A </title>
<meta name="keywords" content="stavebnice MLAB modul procesoru ATMEL ATmega8">
<meta name="description" content="Projekt MLAB, modul procesoru ATMEL ATmega8">
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE -->
<link rel="StyleSheet" href="../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl">
<link rel="StyleSheet" href="../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print">
<link rel="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico">
<script type="text/javascript" src="../../../../../Web/JS/MLAB_Menu.js"></script>
<!-- AUTOINCLUDE END -->
</head>
<body lang="cs">
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE -->
<!-- ============== HLAVICKA ============== -->
<div class="Header">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../");
DrawHeader();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE -->
<!-- ============== MENU ============== -->
<div class="Menu">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../");
DrawMenu();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
<!-- ============== TEXT ============== -->
<div class="Text">
<p class="Title">
Atmega801A – modul procesoru Atmega8
</p>
<p class=Autor>
Milan Horkel
</p>
<p class="Subtitle">
Procesorový modul pro práci s procesorem ATMEL Atmega8 v pouzdru
TQFP32. Modul obsahuje procesor a může být osazen krystalem standardní
velikosti nebo hodinkovým krystalem 32768Hz. Modul je dále vybaven
tlačítkem RESET a programovacím konektorem ATMEL ISP 6 PIN.
</p>
<p class="Subtitle">
<img width="324" height="324" src="Pictures/image001.jpg"
alt="Modul procesoru ATmega8">
</p>
<p>
<a href="../ATmega801A.cs.pdf"><img class="NoBorder"
src="../../../../../Web/PIC/FileIco_PDF.ico"
alt="Acrobat"> PDF verze</a>
</p>
<h1> Technické parametry </h1>
<table>
<tr>
<th> Parametr </th>
<th> Hodnota </th>
<th> Poznámka </th>
</tr>
<tr>
<td> Napájení </td>
<td> (1.8V) .. 2.7V .. 5.5V </td>
<td> Dle použitého procesoru </td>
</tr>
<tr>
<td> Procesor </td>
<td> ATmega8 / ATmega8L </td>
<td> Nebo jiný v pouzdru TQFP32 </td>
</tr>
<tr>
<td> Spotřeba </td>
<td> 12mA </td>
<td> Při 8MHz s krystalem </td>
</tr>
<tr>
<td> Rozměry </td>
<td> 51x51x15mm </td>
<td> Výška nad nosnou deskou </td>
</tr>
</table>
<h1> Popis konstrukce </h1>
<h2> Úvodem </h2>
<p>
Jedná se o standardní modul pro procesory AVR firmy ATMEL v pouzdru
TQFP32. Kromě ATmega8 lze použít i obvody ATmega48, ATmega68, ATmega88
a případně další.
</p>
<h2> Zapojení modulu </h2>
<p>
Modul je napájen přes napájecí konektor J33. Dioda D1 slouží jako
ochrana před přepólováním zdroje (předpokládá se, že zdroj má proudové
omezení cca 1A). Tlumivka L1 s kondenzátorem C3 slouží jako filtr
napájení pro A/D převodník v procesoru. Kondenzátor C6 slouží k
filtraci referenčního napětí.
</p>
<p>
<img width="683" height="599" src="Pictures/image002.gif"
alt="Schéma modulu">
</p>
<p>
Zdrojem hodinového kmitočtu procesoru může být:
</p>
<ul>
<li> Vnitřní RC oscilátor (defaultní nastavení nového procesoru, kmitočet 1MHz) </li>
<li>Vnější krystalový oscilátor s krystalem X1 nebo X2 (hodinkový krystal) </li>
<li>Vnější RC oscilátor R3/C5 </li>
<li>Zdroj vnějšího hodinového signálu na vývod XTAL1 </li>
</ul>
<p>
Zdroj hodinového kmitočtu a konfigurace (frekvenční rozsah) oscilátoru
se volí programováním konfiguračního slova procesoru. Nový procesor
přichází s nastavením interní RC oscilátor s nastavením frekvence na
1MHz.
</p>
<p>
Firma ATMEL definovala dvě „standardní“ zapojení programovacího ISP
konektoru. Modul používá menší verzi se 6 vývody.
</p>
<h2> Mechanická konstrukce </h2>
<p>
Jedná se o standardní modul do stavebnice s upevňovacími rohovými
sloupky.
</p>
<h1> Osazení a oživení </h1>
<h2> Osazení </h2>
<p>
Při osazování procesoru použijte minimum pájky. V případě, že nemáte
vhodné vybavení je nejsnazší plošky pro procesor předem pocínovat (co
nejméně) a pak přiložený procesor nejprve přichytit za dvě protilehlé
nožičky. Další pájka se již přidávat nemusí. Zbylé vývody stačí jeden
po druhém připájet. V případě, že je k dispozici jen pistolová páječka
používá se smyčka ze zvonkového drátu (průměr drátu cca 0.8mm).
</p>
<p>
Krystal je možné buď osadit rovnou na desku (pokud víme předem jakou
budeme potřebovat frekvenci) nebo se osadí jen dutinky z precizní
patice do kterých se pak dá zasunout krystal dle potřeby.
</p>
<p>
Na desce jsou 2 krátké drátové propojky.
</p>
<p>
SMD tlumivku je možné v nouzi nahradit propojkou nebo tlumivkou
obyčejnou. Zhorší se tím šum A/D převodníku.
</p>
<p>
<img width="585" height="585" src="Pictures/image003.png"
alt="Osazení, strana spojů">
<img width="587" height="584" src="Pictures/image004.png"
alt="Osazení, strana součástí">
</p>
<table class="Rospiska">
<tr>
<th> Reference </th>
<th> Hodnota </th>
</tr>
<tr>
<th colspan="2"> Odpory </th>
</tr>
<tr>
<td> R1 </td>
<td> 100 </td>
</tr>
<tr>
<td> R2, R101, R102, R103 </td>
<td> 10k </td>
</tr>
<tr>
<td> R3 </td>
<td> neosazuje se </td>
</tr>
<tr>
<th colspan="2"> Keramické kondenzátory </th>
</tr>
<tr>
<td> C4, C5 </td>
<td> 22pF </td>
</tr>
<tr>
<td> C101, C102, C103 </td>
<td> 10nF </td>
</tr>
<tr>
<td> C2, C3, C6, C7 </td>
<td> 100nF </td>
</tr>
<tr>
<th colspan="2"> Elektrolytické kondenzátory </th>
</tr>
<tr>
<td> C1 </td>
<td> 22uF/6.3V </td>
</tr>
<tr>
<th colspan="2"> Indukčnosti </th>
</tr>
<tr>
<td> L1 </td>
<td> 10uH </td>
</tr>
<tr>
<th colspan="2"> Diody </th>
</tr>
<tr>
<td> D1 </td>
<td> 1N4007SMD </td>
</tr>
<tr>
<th colspan="2"> Integrované obvody </th>
</tr>
<tr>
<td> U1 </td>
<td> ATmega8L-8AU </td>
</tr>
<tr>
<th colspan="2"> Krystaly </th>
</tr>
<tr>
<td> X1 </td>
<td> 8MHz </td>
</tr>
<tr>
<td> X2 </td>
<td> #32768Hz </td>
</tr>
<tr>
<th colspan="2"> Mechanické součástky </th>
</tr>
<tr>
<td> J1..J8, J9..J16, J17..J24, J25..J32 </td>
<td> JUMP2x8 </td>
</tr>
<tr>
<td> J33, J35 </td>
<td> JUMP2X3 </td>
</tr>
<tr>
<td> J101+J103+J105, J102+J104+J106, J107+J109+J111, J108+J110+J112 </td>
<td> JUMP3 </td>
</tr>
<tr>
<td> SW1 </td>
<td> P-B1720 </td>
</tr>
<tr>
<th colspan="2"> Konstrukční součástky </th>
</tr>
<tr>
<td> 4ks </td>
<td> Šroub M3x12 křížový s válcovou hlavou </td>
</tr>
<tr>
<td> 4ks </td>
<td> Podložka M3 </td>
</tr>
<tr>
<td> 4ks </td>
<td> Distanční sloupek M3x5 </td>
</tr>
</table>
<h1> Konfigurační slova ATmega8 </h1>
<h2> <span lang="en">Low Fuse Byte</span> </h2>
<table>
<tr>
<th> Bit </th>
<th> Jméno </th>
<th> Default </th>
<th> Význam </th>
</tr>
<tr>
<td> 7 </td>
<td> BODLEVEL </td>
<td> 1 </td>
<td>
<p>
<span lang="en">Brown Out Detect Level</span> – úroveň napětí detekce podpětí
</p>
<p>
0 <span lang="en">reset</span> při 2.4 až 2.9V<br>
1 <span lang="en">reset</span> při 3.7 až 4.5V
</p>
</td>
</tr>
<tr>
<td> 6 </td>
<td> BODEN </td>
<td> 1 </td>
<td>
<p>
<span lang="en">Brown Out Detect</span> – detekce podpětí
</p>
<p>
0 aktivována<br>
1 neaktivní
</p>
</td>
</tr>
<tr>
<td> 5 4 </td>
<td> SUT1 <br>
SUT0 </td>
<td> 10 </td>
<td>
<p>
<span lang="en">Start Up Timer</span> – volba zpoždění startu
</p>
<p>
Funkce závisí na režimu hodin CKSEL
</p>
</td>
</tr>
<tr>
<td> 3 2 1 0 </td>
<td> CKSEL3 <br>
CKSEL2 <br>
CKSEL1 <br>
CKSEL0 </td>
<td> 0001 </td>
<td>
<p>
Clock Select – volba zdroje hodin
</p>
<p>
0000 – externí hodiny
</p>
<p>
0001 – interní RC oscilátor 1 MHz<br>
0010 – interní RC oscilátor 2 MHz<br>
0011 – interní RC oscilátor 4 MHz<br>
0100 – interní RC oscilátor 8 MHz
</p>
<p>
0101 – externí RC oscilátor 0.1 až 0.9 MHz<br>
0110 – externí RC oscilátor 0.9 až 3.0 MHz<br>
0111 – externí RC oscilátor 3.0 až 8.0 MHz<br>
1000 – externí RC oscilátor 8.0 až 12.0 MHz
</p>
<p>
101x – <span lang="en">Low Power XTAL</span> 0.4 až 0.9MHz pro CKOPT=1<br>
110x – <span lang="en">Low Power XTAL</span> 0.9 až 3.0MHz pro CKOPT=1<br>
111x – <span lang="en">Low Power XTAL</span> 3.0 až 8.0MHz pro CKOPT=1
</p>
<p>
101x – XTAL nad 1.0 MHz pro CKOPT=0<br>
110x – XTAL nad 1.0 MHz pro CKOPT=0<br>
111x – XTAL nad 1.0 MHz pro CKOPT=0
</p>
</td>
</tr>
</table>
<h2> <span lang="en">High Fuse Byte</span> </h2>
<table>
<tr>
<th> Bit </th>
<th> Jméno </th>
<th> Default </th>
<th> Význam </th>
</tr>
<tr>
<td> 7 </td>
<td> RSTDISBL </td>
<td> 1 </td>
<td>
<p>
<span lang="en">Reset Disable</span> – vypnutí funkce
<span lang="en">reset</span> nožičky PC6/RESET#
</p>
<p>
0 PC6 je běžná IO nožička<br>
1 PC6 je signál RESET#
</p>
</td>
</tr>
<tr>
<td> 6 </td>
<td> WDTON </td>
<td> 1 </td>
<td>
<p>
<span lang="en">Watch Dog Timer</span> – hlídač zaseknutí programu
</p>
<p>
0 <span lang="en">Watch Dog Timer</span> nelze vypnout (je trvale zapnutý)<br>
1 <span lang="en">Watch Dog Timer</span> lze zapnout i vypnout pomocí WDTCR
</p>
</td>
</tr>
<tr>
<td> 5 </td>
<td> SPIEN </td>
<td> 0 </td>
<td>
<p>
<span lang="en">Serial Programming Enable</span> – povolení sériového programování
</p>
<p>
0 sériové programování povoleno<br>
1 sériové programování zakázáno
</p>
</td>
</tr>
<tr>
<td> 4 </td>
<td> CKOPT </td>
<td> 1 </td>
<td>
<p>
Clock Option – režim oscilátoru
</p>
<p>
0 výkonový výstup (například pro rychlé krystaly)<br>
1 malý rozkmit signálu (menší spotřeba)
</p>
</td>
</tr>
<tr>
<td> 3 </td>
<td> EESAVE </td>
<td> 1 </td>
<td>
<p>
EEPROM Save – úschova obsahu EEPROM při mazání čipu
</p>
<p>
0 Obsah EEPROM se zachovává<br>
1 Obsah EEPROM se nezachovává
</p>
</td>
</tr>
<tr>
<td> 2 1 </td>
<td> BOOTSZ1 <br>
BOOTSZ0 </td>
<td> 00 </td>
<td>
<p>
<span lang="en">Boot Size</span> – velikost paměti programu vyhrazené pro
<span lang="en">Boot Loader</span>
</p>
<p>
11 <span lang="en">Boot</span> oblast 128B (od adresy 0xF80)<br>
10 <span lang="en">Boot</span> oblast 256B (od adresy 0xF00)<br>
01 <span lang="en">Boot</span> oblast 512B (od adresy 0xE00)<br>
00 <span lang="en">Boot</span> oblast 1024B (od adresy 0xC00)
</p>
</td>
</tr>
<tr>
<td> 0 </td>
<td> BOOTRST </td>
<td> 1 </td>
<td>
<p>
<span lang="en">Boot Reset</span> – volba zda se startuje
<span lang="en">Boot Loader</span>
</p>
<p>
0 Po resetu se aktivuje <span lang="en">Boot Loader</span>,
adresa viz BOTTSZ1..0<br>
1 Po resetu program začíná od adresy 0
</p>
</td>
</tr>
</table>
<h2> <span lang="en">Lock Byte</span> </h2>
<table>
<tr>
<th> Bit </th>
<th> Jméno </th>
<th> Default </th>
<th> Význam </th>
</tr>
<tr>
<td> 5 4 </td>
<td> BLB12 <br>
BLB11 </td>
<td> 11 </td>
<td>
<p>
<span lang="en">Boot Lock</span> – zámek oblasti zavaděče (<span lang="en">Boot Loader</span>)
</p>
<p>
11 odemčeno, není omezení<br>
10 zákaz zápisu do paměti zavaděče<br>
01 aplikace nesmí číst zavaděč<br>
00 oba zákazy
</p>
</td>
</tr>
<tr>
<td> 3 2 </td>
<td> BLB02 <br>
BLB01 </td>
<td> 11 </td>
<td>
<p>
<span lang="en">Boot Lock</span> – zámek oblasti uživatelského programu
</p>
<p>
11 odemčeno, není omezení<br>
10 zákaz zápisu do paměti uživatelského programu<br>
01 zavaděč nesmí číst uživatelský program<br>
00 oba zákazy
</p>
</td>
</tr>
<tr>
<td> 1 0 </td>
<td> LB2 <br>
LB1 </td>
<td> 11 </td>
<td>
<p>
Lock – zámek paměti
</p>
<p>
11 paměť je odemčená<br>
10 je zamčená paměť programu i EEPROM<br>
00 je zamčeno vše včetně konfigurační oblasti
</p>
</td>
</tr>
</table>
<h2> <span lang="en">Calibration Bytes</span> </h2>
<p>
Kalibrační bajty jsou celkem 4 za sebou pro 4 frekvence interního RC
oscilátoru. Při resetu se natahuje první z nich do OSCCAL . Kalibrační
bajty nejsou dostupné uživatelskému programu. V případě potřeby se musí
programátorem přečíst a zapsat někam jinam (EEPROM nebo paměti
programu).
</p>
<table>
<tr>
<th> Hodnota </th>
<th> Minimální frekvence </th>
<th> Maximální frekvence </th>
</tr>
<tr>
<td> 0x00 </td>
<td> 50% </td>
<td> 100% </td>
</tr>
<tr>
<td> 0x7F </td>
<td> 75% </td>
<td> 150% </td>
</tr>
<tr>
<td> 0xFF </td>
<td> 100% </td>
<td> 200% </td>
</tr>
</table>
<h2> <span lang="en">Signature Bytes</span> </h2>
<p>
Signatura součástky je 0x1E (ATMEL) 0x93 (8KB FLASH) 0x07 (ATmega8).
</p>
<h1> Ukázkový program </h1>
<p>
Bliknutí LED diodou je základ. Tady je ukázka.
</p>
<p>
<code>
#define F_CPU 1000000UL // 1MHz je deaultni frekvence interniho
// RC oscilatoru
#include <avr/io.h>
#include <avr/delay.h>
// Spozdeni o libovolny pocet ms
void xDelay_ms(unsigned int Time)
{
for(;Time!=0;Time--)
_delay_ms(1); // Knihovni procedura ma velmi omezen
} // maximalni cas spozdeni
// Hlavni program
int main()
{
DDRC |=1; // Nastav port PCD0 jako vystup
for(;;) // Nekonecna smycka
{
PORTC |= 1; // Nastav 1
xDelay_ms(500); // Pockej 1/2 sekundy
PORTC &= ~1; // Nastav 0
xDelay_ms(500); // Pockej 1/2 sekundy
}
return 0;
}
</code>
</p>
<p>
A takto se naprogramuje do součástky:
</p>
<p>
<samp>avrdude -p m8 -c picoweb -P lpt1 -U flash:w:BLIK_ATmega8.hex:a -E noreset</samp>
</p>
<p>
Zbývá připojit logickou sondu na vývod PC0.
</p>
</div>
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
<!-- ============== PATIČKA ============== -->
<div class="Footer">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../");
DrawFooter();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
</body>
</html>