Praktická úloha I
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Praktická úloha IPraktická úloha I

 

Praktická úloha I

Google       Google       6. 2. 2007       34 296×

Dodnes jsme vlastně delali jen neúčelné programy sloužící výhradně pro studium procesoru. Dnes si za pomoci předchozích znalostí vytvoříme jednoduchý program, který bude komunikovat s PC a sdělovat mu, jaké klávesy jsou stisknuty.

K tomu využijeme teorie z minulého článku. Program budeme psát v C, opět v CodeVision AVR. Pokud máte projekt z minula, můžete ho použít. Pokud ne, založte si ho podle předchozího dílu. Překontrolujte, zda program komunikuje s PC a až poté se pusťte do dnešního úkolu.

Co vlasně budeme dělat

Na diskusním fóru webu pro elektro-bastlíře jsem zahlédl dotaz, jak udělat s procesorem jednoduchý program, který bude po stisknutí jednoho tlačítka odesílat řetězec DOWN, po stisku druhého UP, po stisku třetího ENTER. Díky znalostem z předchozího dílu by to pro vás neměl být velký problém.

Pokud bychom podobnou aplikaci dělali pro nějakou firmu, zřejmě bychom začali úvahou nad tím, jaký procesor vlastně použít. A to kvůli ceně. Zřejmě by nám stačil některý z procesorů ATtiny, v malém pouzdře s počtem vývodů postačujících přesně naší aplikaci. My se ale s procesory AVR teprve učíme, a proto budeme vyvíjet dnešní úkol na procesoru ATMEGA16.

Potřebujeme 3 vstupní piny:

  • NAHORU – PD7
  • DOLU – PC0
  • ENTER – PC1

Dále potřebujeme jeden výstupní pin pro komunikaci po sériové lince. Procesor ATMEGA16 disponuje pouze jedním obvodem UARTU, a tak nám nezbývá nic jiného, než použít pin TX (PD1). K tomu, aby nam procesor pracoval, ho už stačí už jen napájet a samozřejmě nahrát správný program. A ten si vytvoříme jak v C, tak v assembleru.

Jdeme na to

Můžeme prakticky využít i program z minula. Po menších úpravách bude dělat přesně to, co po něm chceme. Začneme tedy s kódem psaným v C (v tomto případě v CodeVision prostředí). Pokud jste predminulý díl nečetli, doporučuji tak před pokračováním učinit.

Nejprve si ukážeme zdrojový kód z minula:

void main(void)
{

char k;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

while (1)
      {
         k = getchar();
         putchar(k);
      };
}

Tento jednoduchý program čekal na přijetí znaku a následně ten samý odeslal. My upravíme hlavní smyčku na:

        if (!(PIND & 128)) putsf("NAHORU");
        if (!(PINC & 1)) putsf("DOLU");
        if (!(PINC & 2)) putsf("ENTER");    

Tato část nám zajistí, že při stisknutí a držení jakéhokoliv z tlačítek bude odeslán k němu příslušný příkaz. V připadě stisku tlačítek budou příkazy odelslány za sebou. Celý zdrojový kód si můžeme prohlédnout zde:

#include <mega16.h>

// Standard Input/Output functions
#include <stdio.h>

void main(void)
{
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

DDRD &= ~128;
DDRC &= ~3;
PORTD |= 128;
PORTC |=3;

while (1)
      {
        if (!(PIND & 128)) putsf("NAHORU");
        if (!(PINC & 1)) putsf("DOLU");
        if (!(PINC & 2)) putsf("ENTER");                
      };
}

Jak vidíte, v C to je hračka. Je jasné, že je nutné ještě nastavit parametry portů, ale to bude pro vás, kteří procházíte tento seriál krok za krokem, jistě hračka. Podobně tomu bude i při tvorbě programu v assembleru, i když zde bude kód podstatně delší. Dalším problémem bude i napsání vlastní funkce pro odesílání řetězců z programové paměti. Vyzkoušíme si alespoň instrukci LPM.

Kód v assembleru si prohlédneme v příštím díle. Omlouvám se za kratší článek a momentální neaktivitu, ale snad mne dostatečně omlouvá zkouškové období. Chtěl bych vás na závěr požádat o malé hlasování v komentářích pod článkem. Mám mnoho ohlasů, že byste raději chtěli příklady v C psané v jiném (freeware) kompilátoru. Napadá mě WinAVR. Žádám vás proto o vyjádření.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Ondřej KarasAutor se věnuje vývoji řídících a komunikačních systémů a tvorbě podpůrných aplikací.
Web    

Nové články

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Reklama autora

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý