<!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> ATmega8DIL01A </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">
        Atmega8DIL01A – modul procesoru Atmega8
      </p>
      <p class=Autor>
        Milan Horkel
      </p>
      <p class="Subtitle">
        Procesorový modul pro práci s&nbsp;procesorem ATMEL Atmega8
        v&nbsp;pouzdru DIL28. 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=420 height=418 src="ATmega8DIL01A_Pictures/image001.jpg"
        alt="Modul procesoru ATmega8">
      </p>
      <p>
        <a href="../ATmega8DIL01A.cs.pdf"><img class="NoBorder"
           src="../../../../../Web/PIC/FileIco_PDF.ico"
           alt="Acrobat">&nbsp;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 DIL28 </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&nbsp;pouzdru DIL28. Kromě ATmega8 lze použít i obvody ATmega48,
        ATmega88, ATmega168, ATmega4P, ATmega88P, ATmega168P, ATmega328P a
        případně další.
      </p>

      <h2> Zapojení modulu </h2>

      <p>
        Modul je napájen přes napájecí konektor J29. 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&nbsp;kondenzátorem C3 slouží jako filtr
        napájení pro A/D převodník v&nbsp;procesoru. Kondenzátor C6 slouží
        k&nbsp;filtraci referenčního napětí.
      </p>

      <p>
        <img img width=804 height=714 src="ATmega8DIL01A_Pictures/image002.png"
         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&nbsp;nastavením interní RC oscilátor s&nbsp;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>

      <p>
        <img width=208 height=162 src="ATmega8DIL01A_Pictures/image003.png"
        alt="Rezervní odpory"> 
        <img width=208 height=162 src="ATmega8DIL01A_Pictures/image004.png"
        alt="Rezervní kondenzátory">
      </p>

      <p>
        Na desce jsou „rezervní“ součástky pro obecné použití.
      </p>

      <h2> Mechanická konstrukce </h2>

      <p>
        Jedná se o standardní modul do stavebnice s&nbsp;upevňovacími rohovými
        sloupky.
      </p>

      <h1> Osazení a oživení </h1>

      <h2> Osazení </h2>

      <p>
        Na desce jsou 3 drátové propojky a musí se osadit jako první (jsou pod
        procesorem).
      </p>

      <p>
        Procesor je možné zapájet přímo nebo osadit patici, nejlépe precizní
        provedení.
      </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&nbsp;precizní
        patice do kterých se pak dá zasunout krystal dle potřeby.
      </p>

      <p>
        SMD tlumivku je možné v&nbsp;nouzi nahradit propojkou nebo tlumivkou
        obyčejnou. Zhorší se tím šum A/D převodníku.
      </p>

      <p>
        <img width=396 height=395 src="ATmega8DIL01A_Pictures/image005.jpg"
        alt="Osazení, strana součástí">
        <img width=396 height=395 src="ATmega8DIL01A_Pictures/image006.jpg"
        alt="Osazení, strana spojů">
      </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> ATmega8-16PU </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..J14, J15..J28 </td>
          <td> JUMP2x14 </td>
        </tr>
        <tr>
          <td> J29, J30 </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>
        <tr>
          <td> 1ks </td>
          <td> Patice DIL28 úzká </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 &lt;avr/io.h&gt;
          #include &lt;avr/delay.h&gt;
          &nbsp;
          // 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
          &nbsp;
          // Hlavni program
          int main()
          &nbsp;
          {
            DDRC |=1;             // Nastav port PCD0 jako vystup
            for(;;)               // Nekonecna smycka
            {
              PORTC |= 1;         // Nastav 1
              xDelay_ms(500);     // Pockej 1/2 sekundy
              PORTC &amp;= ~1;        // Nastav 0
              xDelay_ms(500);     // Pockej 1/2 sekundy
            }
            &nbsp;
            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>