Zapojenie mikrokontroléra Atmel AVR ATmega8 a ATmega32 (MISO, MOSI, SCK, RESET, VCC, GND)



Čo potrebujeme (hardvér)

Takže už máme prečítané články Robotika ako hobby a vieme niečo o pamäti FLASH, RAM a EEPROM. Aj datasheety sme si už letmo prezreli a uložili niekde na disk počítača. Na základné zapojenie mikrokontroléra budeme potrebovať kontaktné pole s prepojovacími vodičmi, USB programátor a prepojovací 10-žilový káblik mezdi programátorom a mikrokontrolérom. Aby sme vizuálne overili funkčnosť zapojenia, použijeme aj svetlo emitujúcu diódu LED a rezistor obmedzujúci elektrický prúd prechádzajúci cez LED.

Čo potrebujeme (hardvér)

Asi najlacnejšia možnosť získať uvenené komponenty (a samozrejme aj ďalšie iné) je z elektronického obchodu ebay.com a získate originálnu čínsku elektroniku s originálnymi čínskymi dielmi. Je vhodné porovnať ceny za rôzne množstvá, väčšinou v prepočte na jednotkový kus je lacnejšie väčšie balenie, závisí to však aj od toho, koľko kusov potrebujeme. Za tovar sa platí výhradne pomocou služby PayPal a doba dodania často presiahne jeden mesiac, ale ako sme už spomenuli, je to väčšinou najlacnejšie riešenie. Ďalšou možnosťou je nákup u slovenských predajcov elektrotechnických súčiastok, k tovaru získame záruku a pre organizácie (napr. pre školy) tak dôležitú faktúru. V tomto prípade je tovar výrazne predražený a často naši predajcovia nemajú na sklade to, čo od nich požadujeme.

Kontaktné pole

Kontaktné pole tvorí spojovaciu dosku, ktorá umožňuje pomerne rýchlu montáž a demontáž zapojenia. Súčiastky nie je potrebné spájkovať. Základná predstava, ako to funguje, bude zrejmá z tejto stránky. Kontaktné polia sú vyrábané v rôznych veľkostiach, pre naše účely je vhodné kontaktné pole s 830 kontaktnými bodmi. Kontaktné body spájame prepojovacími vodičmi, ktoré si buď urobíme z nastrihaného tenkého izolovaného drôtu odizolovaním jeho koncov (zelený drôtik v spodnej časti obrázku) alebo vodičmi s koncovkami pre kontaktné pole (okrový (žltohnedý) vodič vľavo).

[] Kontaktné pole s 830 kontaktnými bodmi možno z ebay.com získať od 3.58 USD [Solderless Breadboard 830].
[] Prepojovacie vodiče možno z ebay.com získať od 2.33 USD [Solderless Cable Male to Male].

Mikrokontrolér

Aby sa mikrokontrolér dal zasunúť do kontaktného poľa, je potrebné, aby bol v PDIP púzdre. Takýto typ býva označený PU. V začiatkoch je určite lepšie vyhnúť sa SMD (Surface Mount Device) súčiastkam, najmä ak zapojenie realizujeme na kontaktnom poli.

[] ATmega8 PU možno z ebay.com získať od 1.20 USD [ATmega8 PU].
[] ATmega328 PU možno z ebay.com získať od 3.30 USD [ATmega328 PU Microcontroller].
[] ATmega32 PU možno z ebay.com získať od 4.35 USD [ATmega32 PU].

USB programátor

Pred niekoľkými rokmi by to bol paralelný programátor. V súčasnosti už na počítačoch ťažko nájdeme paralelný port, najdostupnejší sa preto stal USB programátor. Programátor je hardvérové zariadenie, ktoré zabezpečuje komunikáciu medzi počítačom a mikrokontrolérom, pomocou programátora možno uložiť, "napáliť" skompilovaný program (.hex) do FLASH pamäte mikrokontroléra, načítať údaje z EEPROM, nastaviť FUSE bity a pod. Súčasťou programátora je väčšinou už naprogramovaný mikrokontrolér. Vzhľadom na možnosť programovať mikrokontroléry Atmel AVR prostredníctvom ISP (In System Programming), teda priamo v ich zapojení, sa ako najvhodnejšie javí použiť práve ISP programátor. Z cenového hľadiska potom pôjde o programátor AVR ISP USBasp.

AVR ISP USBasp programátor

Na jednej strane AVR ISP USBasp programátora je USB konektor, na druhej strane je 10-pinový konektor s prepojovacím 10-žilovým káblikom, kde je podstatných 6 vodičov (MISO, MOSI, SCK, RESET, VCC, GND). Pre použitie na kontaktnom poli je potrebné si urobiť vlastný prepojovací 10 žilový káblik FLC10/30E so samorezným konektorom FL-10EC, ktorý má 6 vodičov zakončených naspájkovaným pinom z kolíkovej lišty (napr. WWS40G(SL40G1)) a izolovaný teplom zmršťujúcou sa bužírkou, ako vidno na nasledujúcom obrázku. (Alternatívne možno použiť aj pôvodný 10-žilový káblik ukončený konektorom, ktorý bol dodaný s programátorom a prepojovacie vodiče z kontaktného poľa zasunúť priamo do príslušných dierok konektora.)

10-žilový prepojovací káblik do kontaktného poľa

Jednotlivé vodiče sú v poradí od červeného:

Týchto 6 vodičov (MOSI, MISO, SCK, RESET, VCC, GND) potom musíme prepojiť s príslušnými pinmi, nožičkami na mikrokontroléri umiesnenom v kontaktnom poli.

Komponenty na výrobu prepojovacieho káblika je lepšie zohnať si u nás, napríklad aj z pokazených počítačov, elektrozberu, vyhodených dosiek plošných spojov a pod. Nižšie sú uvedené aj odkazy na ebay.com s príslušnými orientačnými cenami na našom trhu. Nasledujúce fotografie zobrazujú výrobu prepojovacieho káblika.

Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma!
Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma!
Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma!
Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma!
Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma!
Zväčši ma! Zväčši ma!

[] Programátor USBasp možno z ebay.com získať od 3.89 USD [ISP AVR Programmer].
[] Konektor FC-10P možno z ebay.com získať od 2.19 USD (5ks) [FC-10P]. U nás zoženieme konektor FL-10EC lacnejšie, asi za 20 centov/kus.
[] 10-žilový káblik možno z ebay.com získať od 1.85 USD (1m) [Ribbon Cable 10]. U nás zoženieme kábel FLC10/30E lacnejšie, asi za 50 centov/meter.
[] Konektor FC-10P aj s 10-žilovým káblikom možno z ebay.com získať od 2.59 USD (2ks) [JTAG Cable 10 Pin]. U nás vyjde lacnejšie kombináciou predchádzajúcich dvoch, t.j. asi 70 centov (bez dopravy).
[] Teplom zmršťujúcu sa bužírku možno z ebay.com získať od 1.29 USD (1m) [Heat Shrink Cable 1.5mm]. U nás zoženieme bužírku teplom zmršťovaciu 1,6/0,8mm lacnejšie, asi za 50 centov/meter.
[] Kolíkovú lištu možno z ebay.com získať od 0.99 USD (3ks(120pinov)) [Single Pin Header Strip].

Hore hájom chodník

Inštalácia xEtreme Burner AVR

Na to, aby sme náš program, napísaný na počítači a skompilovaný do mikrokontrolérom spustiteľného kódu (.hex) mohli uložiť, "napáliť" do mikrokontroléra, potrebujeme nainštalovať softvér xEtreme Burner AVR (existuje viac programov slúžiacich na tento účel, ale pre podmienky základnej školy sa nám práve xEtreme Burner AVR javí ako najvhodnejší, nakoľko už má v sebe integrovaný ovládač pre USPasp programátor a jeho grafické užívateľské prostredie (GUI) je jednoduché a intuitívne).

Kód programu je v mikrokontroléri uložený v pamäti FLASH. Veľkosť výsledného kódu teda musí byť menšia, ako je veľkosť voľnej pamäte FLASH daného mikrokontroléra (ATmega8 má 8kB, ATmega328 a ATmega32 majú 32kB pamäte FLASH, ale to už vieme z ich datasheetov). Pri každom "napálení" kódu sa pôvodný kód vymaže a nahradí novým. Po pripojení napätia na mikrokontrolér alebo po jeho resete (bude vysvetlené neskôr pri zapojení resetovacieho obvodu) sa autoamicky spustí uložený kód.

Inštalačný súbor verzie 1.2 možno stiahnuť zo stránky extremeelectronics.co.in

Pred inštaláciou je potrebné zasunúť AVR ISP USBasp programátor do USB portu na počítači. Operačný systém bude mať snahu nájsť a nainštalovať ovládač zariadenia, ale neúspešne (obr. č. 1) a v správcovi zariadení možno vidieť zariadenie USBasp bez ovládača (obr. č. 2). Po spustení inštalačného súboru potvrdíme, že programátor je zasunutý v USB porte (obr. č. 3). Pokračujeme v inštalácii (obr. č. 4 až č. 8), potvrdíme inštaláciu ovládača (obr. č. 9) a dokončíme inštaláciu (obr. č. 10 až č. 12). V správcovi zariadení pribudne zariadenie libusb-win32 devices - USBasp.

Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma!
Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma!
Zväčši ma! Zväčši ma! Zväčši ma!
Hore hájom chodník

Zapojenie ATmega8

Mikrokontrolér ATmega8 má 28 nožičiek, pinov v dvoch radoch po 14 v každom. Z datasheetu zistíme označenie jednotlivých pinov. Pin 1 je v rohu vľavo od označenia polkruhom na prednej hrane mikroprocesora.

ATmega8 pinout

Na nasledujúcom obrázku sú vyznačené piny, ktoré nás dnes budú zaujímať a ktoré použijeme. Sú to už nám známe piny z AVR ISP USBasb programátora (MISO, MOSI, SCK, RESET, VCC, GND). Posledné dva piny (VCC, GND) predstavujú napájacie napätie z USB portu, na pine VCC je elektrické napätie +5V a na pine GND je "zem" (akoby mínusový pól batérie). Pin PB0 využijeme na pripojenie LED.

ATmega8 pinout ISP

Na nasledujúcom obrázku je schéma zapojenia, ktoré dnes budeme realizovať. Pri zapájaní treba dať pozor aj na zapojenie LED (dlhšia nožička je Anóda (+) a krašia je Katóda (-)). Ak sa pozrieme na jej schematickú značku, tak strana s "trojuholníčkom" pripomína písmeno A (Anóda) a strana s "čiarkou" písmeno K (katóda). Alebo ešte aj tak, že "čiarka" nám skôr pripomína mínus, teda záporný pól. Ak sa pozrieme na umelohmotný "klobúčik" LED, tak tam, kde je akoby zrezaný, bez pôvodného zaoblenia, tak tam bude mínus (Katóda).

ATmega8 schéma

Na kontaktnom poli nám zapojenie ATmega8 bude vyzerať podobne ako na nasledujúcom obrázku. Dlhšia nožička LED, nezrezaný klobúčik, Anóda (+) bude spojená s pinom PB0 mikrokontroléra. Kratšia nožička LED, zrezaný klobúčik, Katóda (-) bude spojená s rezistorom.

ATmega8 kontaktné pole

Konečne môžeme pristúpiť k činnosti. Na začiatok je dobré si vytlačiť obrázok s označením jednotlivých pinov a farebne si vyznačiť tie, ktoré budeme potrebovať. Na mikrokontroléri nájdeme polkruhové označenie na prednej hrane (na obrázku vyznačené červenou bodkou) a skontrolujeme kde je pin 1.

ATmega8 pin 1

Položíme si pred seba kontaktné pole tak, aby červená čiara + bola bližšie pri nás. Mikrokontrolér zasunieme do kontaktného poľa medzi riadky E a F. Pin 1 (RESET) bude teda v riadku F. Mikrokontrolér zasúvame opatrne, aby sme nepokrivili nožičky. Podobne opatrne postupujeme aj pri vyberaní mikrokontroléra.

ATmega8 v kontaktnom poli

Na modrú čiaru - kontaktného poľa prepojíme GND pin mikrokontroléra (pin 8). Neskôr pri zložitejších obvodoch podobne prepojíme červenú čiaru + s VCC +5V.

ATmega8 prepojenie GND

Postupne pozapájame všetkých šesť káblikov z AVR ISP USBasp programátora (MOSI, MISO, SCK, RESET, VCC, GND). Po zapojení ešte raz skontrolujeme, či sú príslušné piny mikrokontroléra správne prepojené s programátorom.

ATmega8 prepojenie s USBasp programátorom

Pripravíme si LED tak, aby Anóda (+), dlhšia nožička, nezrezaný klobúčik bol vľavo (pripravený k pripojeniu na pin PB0).

ATmega8 LED

Zasunieme LED do kontaktného poľa.

ATmega8 LED LED v kontaktnom poli na PB0

Do kontaktného poľa zasunieme rezistor 1k medzi Katódu (-) LED, kratšia nožička, zrezaný klobúčik a medzi modrú čiaru - GND.

ATmega8 rezistor

Konektor 10-žilového káblika zasunieme do AVR ISP USBasp programátora. Ešte raz radšej všetko skontrolujeme aby sme si nezničili USB port na počítači alebo mikrokontrolér a ak je všetko tak ako má byť, môžeme zasunúť programátor do USB portu počítača.

ATmega8 s USBasp programátorom

Spustíme program eXtreme Burner AVR a z hlavného menu vyberieme Chip - ATmega8. Skontrolujeme výber v stavovom riadku dole.

ATmega8 výber chipu

Načítame všetky informácie z mikrokontroléra buď z hlavného menu Read - All alebo klepnutím na ikonu Read All. Načítajú sa údaje z FLASH aj EEPROM pamäte mikrokontroléra a tiež aj nastavenia FUSE bitov. V prípade že sme zabudli vybrať správny chip, sa zobrazí chybová správa.

ATmega8 Read All

Na nasledujúcich štyroch obrázkoch je zobrazené výrobné (defaultné) nastavenie FUSE bitov pre ATmega8 (low:E1 high:D9). Nový mikrokontrolér je nastavený na interný rezonátor s frekvenciou 1MHz.

Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma!

Skompilovaný súbor (.hex) pre mikrokontrolér musíme najskôr načítať do eXtreme Burner AVR cez hlavné menu File - Open Flash alebo klepnutím na ikonu Open. Do mikrokontroléra ho uložíme, napálime cez hlavné menu Write - Flash. Otvoríme súbor ATmega8A_Default_1s_PB0.hex a zapíšeme do mikrokontroléra. Po zápise by mala LED blikať v 1s intervaloch. Podobne uložme do mikrokontroléra obsah súboru ATmega8A_Default_4s_PB0.hex a opticky skontrolujeme rozdiel. Ak chceme vymazať obsah pamätí mikrokontroléra, tak cez hlavné menu Erase - Chip Erase alebo klepnutím na ikonu Chip Erase.

ATmega8 Read All

Bez použitia externého kryštálu je možné nastavením FUSE bitov zvýšiť frekvenciu mikrokontroléra na 8MHz (low:E4 high:D9). Nové nastavenie FUSE bitov sa zapíše do mikrokontroléra zafajknutím príslušného políčka Write a klepnutím na tlačidlo Write. Nastavme teda tieto FUSE bity a opäť zapíšme predchádzajúce .hex súbory do mikrokontroléra. Ako bliká LED teraz? Prečo? Vráťme FUSE bity do pôvodného, default stavu.

Zväčši ma! Zväčši ma!
Hore hájom chodník

Zapojenie ATmega32

Mikrokontrolér ATmega32 má 40 nožičiek, pinov v dvoch radoch po 20 v každom. Z datasheetu zistíme označenie jednotlivých pinov. Pin 1 je v rohu vľavo od označenia polkruhom na prednej hrane mikroprocesora.

ATmega32 pinout

Na nasledujúcom obrázku sú vyznačené piny, ktoré nás dnes budú zaujímať a ktoré použijeme. Sú to už nám známe piny z AVR ISP USBasb programátora (MISO, MOSI, SCK, RESET, VCC, GND). Posledné dva piny (VCC, GND) predstavujú napájacie napätie z USB portu, na pine VCC je elektrické napätie +5V a na pine GND je "zem" (akoby mínusový pól batérie). Pin PB0 využijeme na pripojenie LED.

ATmega32 pinout ISP

Na nasledujúcom obrázku je schéma zapojenia, ktoré dnes budeme realizovať. Pri zapájaní treba dať pozor aj na zapojenie LED (dlhšia nožička je Anóda (+) a krašia je Katóda (-)). Ak sa pozrieme na jej schematickú značku, tak strana s "trojuholníčkom" pripomína písmeno A (Anóda) a strana s "čiarkou" písmeno K (katóda). Alebo ešte aj tak, že "čiarka" nám skôr pripomína mínus, teda záporný pól. Ak sa pozrieme na umelohmotný "klobúčik" LED, tak tam, kde je akoby zrezaný, bez pôvodného zaoblenia, tak tam bude mínus (Katóda).

ATmega32 schéma

Na kontaktnom poli nám zapojenie ATmega32 bude vyzerať podobne ako na nasledujúcom obrázku. Dlhšia nožička LED, nezrezaný klobúčik, Anóda (+) bude spojená s pinom PB0 mikrokontroléra. Kratšia nožička LED, zrezaný klobúčik, Katóda (-) bude spojená s rezistorom.

ATmega32 kontaktné pole

Konečne môžeme pristúpiť k činnosti. Na začiatok je dobré si vytlačiť obrázok s označením jednotlivých pinov a farebne si vyznačiť tie, ktoré budeme potrebovať. Na mikrokontroléri nájdeme polkruhové označenie na prednej hrane (na obrázku vyznačené červenou bodkou) a skontrolujeme kde je pin 1. Položíme si pred seba kontaktné pole tak, aby červená čiara + bola bližšie pri nás. Mikrokontrolér zasunieme do kontaktného poľa medzi riadky C a G. Pin 1 (PB0) bude teda v riadku G. Mikrokontrolér zasúvame opatrne, aby sme nepokrivili nožičky. Podobne opatrne postupujeme aj pri vyberaní mikrokontroléra.

ATmega32 v kontaktnom poli

Na modrú čiaru - kontaktného poľa prepojíme GND pin mikrokontroléra (pin 11). Neskôr pri zložitejších obvodoch podobne prepojíme červenú čiaru + s VCC +5V.

ATmega32 prepojenie GND

Postupne pozapájame všetkých šesť káblikov z AVR ISP USBasp programátora (MOSI, MISO, SCK, RESET, VCC, GND). Po zapojení ešte raz skontrolujeme, či sú príslušné piny mikrokontroléra správne prepojené s programátorom.

ATmega32 prepojenie s USBasp programátorom

ATmega32 prepojenie s USBasp programátorom detail

Pripravíme si LED tak, aby Anóda (+), dlhšia nožička, nezrezaný klobúčik bol vpravo (pripravený k pripojeniu na pin PB0).

ATmega32 LED

Zasunieme LED do kontaktného poľa.

ATmega32 LED LED v kontaktnom poli na PB0

Do kontaktného poľa zasunieme rezistor 1k medzi Katódu (-) LED, kratšia nožička, zrezaný klobúčik a medzi modrú čiaru - GND.

ATmega32 rezistor

Konektor 10-žilového káblika zasunieme do AVR ISP USBasp programátora. Ešte raz radšej všetko skontrolujeme aby sme si nezničili USB port na počítači alebo mikrokontrolér a ak je všetko tak ako má byť, môžeme zasunúť programátor do USB portu počítača.

ATmega32 s USBasp programátorom

Spustíme program eXtreme Burner AVR a z hlavného menu vyberieme Chip - ATmega32. Skontrolujeme výber v stavovom riadku dole.

ATmega32 výber chipu

Načítame všetky informácie z mikrokontroléra buď z hlavného menu Read - All alebo klepnutím na ikonu Read All. Načítajú sa údaje z FLASH aj EEPROM pamäte mikrokontroléra a tiež aj nastavenia FUSE bitov. V prípade že sme zabudli vybrať správny chip, sa zobrazí chybová správa.

ATmega32 Read All

Na nasledujúcich štyroch obrázkoch je zobrazené výrobné (defaultné) nastavenie FUSE bitov pre ATmega32 (low:E1 high:99). Nový mikrokontrolér je nastavený na interný rezonátor s frekvenciou 1MHz a má zapnutú podporu pre JTAG debugger (Port C nie je možné využívať na bežné vstupno-výstupné piny).

Zväčši ma! Zväčši ma! Zväčši ma! Zväčši ma!

Skompilovaný súbor (.hex) pre mikrokontrolér musíme najskôr načítať do eXtreme Burner AVR cez hlavné menu File - Open Flash alebo klepnutím na ikonu Open. Do mikrokontroléra ho uložíme, napálime cez hlavné menu Write - Flash. Otvoríme súbor ATmega32A_Default_1s_PB0.hex a zapíšeme do mikrokontroléra. Po zápise by mala LED blikať v 1s intervaloch. Podobne uložme do mikrokontroléra obsah súboru ATmega32A_Default_4s_PB0.hex a opticky skontrolujeme rozdiel. Ak chceme vymazať obsah pamätí mikrokontroléra, tak cez hlavné menu Erase - Chip Erase alebo klepnutím na ikonu Chip Erase.

Bez použitia externého kryštálu je možné nastavením FUSE bitov zvýšiť frekvenciu mikrokontroléra na 8MHz (low:E4 high:99). Nové nastavenie FUSE bitov sa zapíše do mikrokontroléra zafajknutím príslušného políčka Write a klepnutím na tlačidlo Write. Nastavme teda tieto FUSE bity a opäť zapíšme predchádzajúce .hex súbory do mikrokontroléra. Ako bliká LED teraz? Prečo? Vráťme FUSE bity do pôvodného, default stavu.

Zväčši ma! Zväčši ma!
Hore hájom chodník

Optional

Okrem vyššie uvedeného programátora AVR ISP USBasp exisuje aj niekoľko iných programátorov/debuggerov. V prípade, že pracujeme vo vývojovom prostredí AVR Studio (Atmel Studio), môžeme priamo použiť klon AVR ISP mkII programátora zo Slovenska za 13 EUR alebo z ebay.com od 12.59 USD. Ďalšou možnosťou je JTAG debugger z ebay.com od 8.99 USD, mikrokontrolér však musí poskytovať podporu JTAG programovania, napr. ATmega32 a tiež FUSE bity mikrokontroléra musia byť nastavené tak, aby bol JTAG povolený (pozor tiež na správne zapojenie JTAG pinov). Tieto programátory sú však podstatne drahšie ako USBasp. V prípade použitia iného ako AVR ISP USBasp programátora nemá vyznam inštalácia softvéru eXtreme Burner AVR, pretože tento softvér spolupracuje iba s USBasp programátorom.

Pri inštalácii softvéru eXtreme Burner AVR sa nainštalujú aj ovládače pre AVR ISP USBasp programátor vo verzii 1.2.4. V pípade, že potrebujeme aktualizovať ovládač tohto zariadenia, najnovšie (1.2.6. v septembri 2012) možno nájsť na http://sourceforge.net/projects/libusb-win32/. Na stránke http://extremeelectronics.co.in/software/extreme-burner-avr-1-3-beta-test/ sa nachádza beta verzia 1.3 softvéru eXtreme Burner AVR.

Nastavenia FUSE bitov pre konkrétny typ mikrokontroléra online.

Zdrojový kód vzorového programu pre blikanie LED na pine PB0 pre ATmega8 - čas blikania 1s. Kód bol napísaný a skompilovaný vo vývojovom prostredí AVR Studio 4.19 (html kód je generovaný pomocou http://tohtml.com/cpp/)

/*
  Blikanie_LED_1s
  Program opakovane rozsvecuje a zhasina LED na pine PB0

  Kontaktne pole Breadboard: ATmega8, 1MHz interny oscilator
  Default FUSE: E1-D9-XX-FF-9E9E9E9E
*/


#ifndef F_CPU
#define F_CPU 1000000UL
#endif

#include<avr/io.h>
#include<util/delay.h>


int main() {
  DDRB |= 1<<PB0;          // nastavi pin ako vystupny (1)
  
  while(1) {
    _delay_ms(1000);       // caka 1000ms (1s)
    PORTB ^= 1<<PB0;       // vymeni stav na LED (z 0 na 1 a naopak)
  }
}

Zdrojový kód vzorového programu pre blikanie LED na pine PB0 pre ATmega8 - čas blikania 4s:

/*
  Blikanie_LED_4s
  Program opakovane rozsvecuje a zhasina LED na pine PB0

  Kontaktne pole Breadboard: ATmega8, 1MHz interny oscilator
  Default FUSE: E1-D9-XX-FF-9E9E9E9E
*/


#ifndef F_CPU
#define F_CPU 1000000UL
#endif

#include<avr/io.h>
#include<util/delay.h>


int main() {
  DDRB |= 1<<PB0;          // nastavi pin ako vystupny (1)
  
  while(1) {
    PORTB |= 1<<PB0;       // rozsvieti LED (nastavi 1)
    _delay_ms(4000);       // caka 4000ms (4s)
    PORTB &= ~(1<<PB0);    // zhasne LED (nastavi 0)
    _delay_ms(4000);       // caka 4000ms (4s)
  }
}

// lepsie by bolo pouzit iba PORTB ^= 1<<PB0;
// ale nech je vidno aj ako sa nastavuje 0

Schémy zapojení boli vytvorené v programe Eagle 6.1.0. Tento softvér je výborný aj pre návrh vlastných plošných spojov (napr. vlasná vývojová doska s mikrokontrolérom).

Obrázky schematického znázornenia obvodov na kontaktnom poli boli vytvorené v programe Fritzing 0.7.7.

Hore hájom chodník

PaedDr. Karol Pauchly, ZŠ s MŠ Chlebnice, september 2012