Problem with comparison.
/Modules/ATmega8/ATmega801A/DOC/HTML/ATmega801A.cs.html |
---|
0,0 → 1,675 |
<!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="321" height="321" src="Pictures/image003.jpg" |
alt="Osazení, strana spojů"> |
<img width="321" height="320" src="Pictures/image004.jpg" |
alt="Osazení, strana součástí"> |
</p> |
<table class="Rospiska"> |
<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> |