From be0f19f2b9e4a32e2675b19e1948c454d38026ce Mon Sep 17 00:00:00 2001
From: "Michal, OK1WMR" <ok1wmr@gmail.com>
Date: Wed, 6 Apr 2011 06:33:14 +0200
Subject: [PATCH] =?UTF-8?q?P=C5=99id=C3=A1n=20=C4=8Dl=C3=A1nek=20AVR=20-?=
 =?UTF-8?q?=20LED=20panel=20-=20#2=20Program?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

(Autoexportován z Joomly)
---
 articles/2011/avr-led-panel-2-program.md | 29 ++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100644 articles/2011/avr-led-panel-2-program.md

diff --git a/articles/2011/avr-led-panel-2-program.md b/articles/2011/avr-led-panel-2-program.md
new file mode 100644
index 0000000..e49f6d7
--- /dev/null
+++ b/articles/2011/avr-led-panel-2-program.md
@@ -0,0 +1,29 @@
++++
+
+title = "AVR - LED panel - #2 Program"
+perex_e = "
+
+KompatibilnĂ­ zapojenĂ­: LED panel s ATmega8
+
+Ke staĹľenĂ­: LED_002.c == LED_002.pdf == LED_002.htm
+.
+.
+"
+tags = ["Článek"]
++++
+
+
+
+KompatibilnĂ­ zapojenĂ­: LED panel s ATmega8
+
+Ke staĹľenĂ­: LED_002.c == LED_002.pdf == LED_002.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;amp;amp;amp;amp;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;amp;amp;amp;amp;amp;gt;</style> 
+
+```
+/*V minulém "programu" se nám podařilo rozsvítit vybrané Led diody. Protože sevšak nejednalo o program v pravém slova smyslu, ale o pouhé jednorázové nastavení pinů, pokusíme se nyní toto nastavení v průběhu času pomocí programuměnit. Vytvoříme program, který bude ledky střídavě rozsvěcet a zhasínat.*//*Protože už Led diody nebudou svítit stále, ale pouze určitý čas, budemepotřebovat čekací funkce z knihovny "delay.h" která se nachází v adresáři"util". Tuto knihovnu načteme do programu příkazem:#include <util/delay.h>*//*Blikání je periodická činnost, a bylo by neúčelné vypisovat do nekonečna program typu:rozsviť;čekej;zhasni;čekej;rozsviť;čekej;...Takovýto program by byl velice objemný, a dokázal by bliknout pouze tolikrát,kolikrát bychom mu to napsali. My však chceme, aby ledky blikaly stále.K tomuto účelu se hodí takzvaná nekonečná smyčka. Nekonečná smyčka jeprogramová konstrukce, která zajistí nekonečné opakování instrukcí ve svémtěle.Možnosti jak zapsat nekonečnou smyčku jsou dvě:Buďto jako cyklus for:for(;;){opakované příkazy;}Nebo jako cyklus while:while (1){opakované příkazy;}Použití je víceméně libovolné, protože AVR GCC oba cykly překládá stejně.*///Náš program by tedy mohl vypadat takto:/*Funkce čekání z knihovny delay.h potřebuje vědět, na jaké frekvenci procesorpoběží, protože musí vypočítat, kolik cyklů má procesor počkat, než bude pokračovat dál. Tuto informaci očekává v konstantě "F_CPU", a my jí tedy musíme nadefinovat:*/#define F_CPU 1000000UL  // 1 MHz (základní frekvence)#include <avr/io.h>		//Nahrajeme zase knihovnu vstupů a výstupů (PORT, DDR)#include <util/delay.h>	//Nahrajeme knihovnu čekacích funkcí/* Je vhodné si předem nadefinovat konstanty, které se později objeví v programu.Když pak budeme chtít program upravovat, nemusíme jej celý prohledávat, alestačí pouze přepsat tyto konstanty na začátku.*/#define CEKANI 500		//konstanta "CEKANI" má hodnotu 500 (500 milisekund)	#define STAV1 0b01000101	//ledky které budou svítit nejdřív (1 = svítí)#define STAV2 0b10111010	//ledky, které budou svítit potom.int main (void) //jako vždy - hlavní funkce{DDRB = 0b11111111;	//Piny 0 - 7 budou výstupnífor (;;)	// Nekonečná smyčka	{	PORTB = STAV1;		//Pošleme konstantu STAV1 na nožičky - rozsvítí se LED	_delay_ms (CEKANI);	//Čekání tolik milisekund, kolik je v konstantě CEKANI	PORTB = STAV2;		//Rozsvítíme jiné ledky...	_delay_ms (CEKANI);	//...a opět čekáme (funkce z knihovny delay.h)	}		// ...a zase na začátek! (cyklu for)}	//konec programu - sem se program nikdy nedostane. Bude běhat pořád v 	//cyklu for./*Po nahrání programu do přípravku "ATmega8 - LED panel" budou střídavě blikat LED diody tak, jak je to definováno v konstantě STAV1 a STAV2\. Čas mezi jednotlivými změnami stavu je definován v konstantě CEKANI. Tyto konstanty lze libovolně měnit..*///Pro radioklub OK1KVK naspal Vašek Král
+```
\ No newline at end of file
-- 
GitLab