diff --git a/articles/2011/avr-led-panel-priklad-casovac-s-prerusenim.md b/articles/2011/avr-led-panel-priklad-casovac-s-prerusenim.md new file mode 100644 index 0000000000000000000000000000000000000000..4d0508d8a825abc620318a27d648ce2d21b24cb9 --- /dev/null +++ b/articles/2011/avr-led-panel-priklad-casovac-s-prerusenim.md @@ -0,0 +1,75 @@ ++++ + +title = "AVR - LED panel - PĹ™Ăklad - ÄŚasovaÄŤ s pĹ™erušenĂm" +perex_e = " + +KompatibilnĂ zapojenĂ: LED panel s ATmega8 + +Ke staĹľenĂ: LED_Casovac-preruseni.c == LED_Casovac-preruseni.pdf == LED_Casovac-preruseni.htm +. +. +" +tags = ["ÄŚlánek"] ++++ + + + +KompatibilnĂ zapojenĂ: LED panel s ATmega8 + +Ke staĹľenĂ: LED_Casovac-preruseni.c == LED_Casovac-preruseni.pdf == LED_Casovac-preruseni.htm +. +. + +* * * + +<title>Untitled</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="generator" content="SynEdit HTML exporter"> <style type="text/css">&amp;lt;!-- body { color: #000000; background-color: #FFFFFF; } .cpp1-assembler { } .cpp1-brackets { } .cpp1-comment { color: #008000; font-style: italic; } .cpp1-float { color: #000080; } .cpp1-hexadecimal { color: #000080; } .cpp1-character { } .cpp1-identifier { } .cpp1-illegalchar { } .cpp1-number { color: #000080; } .cpp1-octal { color: #0000FF; } .cpp1-preprocessor { } .cpp1-reservedword { font-weight: bold; } .cpp1-space { color: #008080; } .cpp1-string { color: #800000; } .cpp1-symbol { } --&amp;gt;</style> + +``` +/* +Popis: +VybranĂ© ledky budou blikat cca 2x za vteĹ™inu + +Ledky kterĂ© majĂ takto blikat jsou vybrány konstantou "LED" a ÄŤas svĂcenĂ je dán +dÄ›liÄŤkou ÄŤasovaÄŤe a šĂĹ™kou jeho registru. +V tomto pĹ™Ăkladu bude pouĹľit ÄŤĂtaÄŤ/ÄŤasovaÄŤ "0" kterĂ˝ má šĂĹ™ku registru 8 bitĹŻ +to znamená Ĺľe poÄŤĂtá do 255. +ÄŚĂtaÄŤ bude mĂt zapnutou dÄ›liÄŤku hodinovĂ©ho signálu s dÄ›litelem 1024. +VĂ˝sledná frekvence tedy bude 1 000 000/1024/255 = 3,8 Hz - pĹ™i kaĹľdĂ©m pĹ™eteÄŤenĂ +budeme negovat stav ledek, takĹľe se rozsvĂtĂ a zhasnou pĹ™ibliĹľnÄ› 2x za sekundu. + +PĹ™eteÄŤenĂ ÄŤĂtaÄŤe zpĹŻsobĂ pĹ™erušenĂ, ve kterĂ©m bude negován stav ledek. +*/ + +#include <avr/io.h> //VloĹľ knihovnu vstupĹŻ a vĂ˝stupĹŻ (PORT, DDR, PIN) +#include <avr/interrupt.h> //VloĹľ knihovnu vektorĹŻ pĹ™erušenĂ (ISR() ) + +#define LED 0b01110101; //Ledky, kterĂ© se majĂ rozsvĂtit pĹ™i stisku tlaÄŤĂtka + +/********************Obsluha pĹ™erušenĂ***********************/ +ISR(TIMER0_OVF_vect) //Vektor pĹ™erušenĂ pĹ™i pĹ™eteÄŤenĂ ÄŤĂtaÄŤe/ÄŤasovaÄŤe "0" +{ +PORTB = ~PORTB; //vyměŠna portu "B" všechny nuly za jedniÄŤky a naopak +} + +/**********************HLAVNĂŤ FUNKCE*************************/ + +int main (void) //hlavnĂ funkce +{ +TIMSK = 0b00000001; //vybereme pĹ™erušenĂ od TC0 +sei(); //povol pĹ™erušenĂ +TCCR0 = 5; //spusĹĄ ÄŤasovaÄŤ "0" s pĹ™eddÄ›liÄŤkou 1024 + +DDRB = 0xff; //(0xff = 0b11111111) -> Piny 0 - 7 portu "B" budou vĂ˝stupnĂ +PORTB = LED; //rozsviĹĄ vybranĂ© ledky + +while (1) // NekoneÄŤná smyÄŤka (dokud 1 = pořád) + { + + ; //nic nedÄ›lej (prázdnĂ˝ pĹ™Ăkaz) + //- zde by mohl bĂ˝t program, kterĂ˝ nebude zdrĹľován blikánĂm + }//Konec cyklu "while (1)" - program skoÄŤĂ zpÄ›t na jeho začátek + +}//konec funkce main() - sem se program nikdy nedostane + //(závorka tu však musĂ bĂ˝t jinak by pĹ™ekladaÄŤ nahlásil chybu) + +``` \ No newline at end of file