. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
MEGA48 / MEGA328 – ADC, UART, LED
20. listopadu 2012 - 8:13 | Pandatron | MEGA48 / MEGA328 – ADC, UART, LED | Komentářů: 4  

MEGA48 / MEGA328 – ADC, UART, LED

V článku jsou představeny základní knihovny pro práci s ADC, UART, LED, tlačítky nebo interními čítači a obsluhou přerušení. Zároveň si krátce přiblížíme strukturu publikovaných knihoven a vůbec první použití vývojových kitů.

Bohatě vybavené vývojové kity Mega48, Mega48X a Mega328 nabízejí využití nejen při výuce a prvních krocích s mikrokontroléry řady AVR, ale své uplatnění naleznou rovněž při vývoji prototypových zařízení, ověřovacích aplikací apod.


Obr. 1: Vývojové kity Mega48, Mega48X a Mega328, dostupné prostřednictvím našeho eShopu

Vývojové kity Mega48, Mega48X a Mega328 jsou určeny pro seznámení se s mikrokontroléry řady AVR a vývoj celé řady jednoduchých i náročnějších aplikací. Jejich základem jsou obvody Atmel ATmega48 a ATmega328 a velké množství externích periferií. Jedná se především o slot pro MicroSD paměťovou kartu, ADC s audio filtrem, 12-bit DAC, RTC, teplotní senzor, 64KB EEPROM, IR přijímač, slot pro USB/UART převodník a řadu dalších periferií.


Obr. 2: Rozmístění a význam pinů vývojových kitů

Základem vývojových kitů jsou jedny z nejrozšířenějších mikrokontrolérů vůbec, obvody Atmel ATmega48 a ATmega328 v provedení TQFP. Obvody jsou zárukou vysoké kompatibility s velkým množstvím aplikací a jejich snadné dostupnosti, pro dokončení vývoje a zahájení výroby finálních zařízení. Nic však nebrání použití celého vývojového kitu jako základu nové aplikace. K tomuto účelu moduly obsahují velké množství externích periferií, zvolených rovněž s ohledem na jejich vysokou oblibu a snadnou dostupnost. Především se jedná o slot pro MicroSD paměťovou kartu, ADC s audio filtrem, 12-bit DAC, RTC, teplotní senzor, 64KB EEPROM, IR přijímač, slot pro USB/UART převodník a řadu dalších periferií.


Obr. 3: Schéma zapojení vývojového kitu MEGA328

Více informací o jednotlivých vývojových kitech, rozdílech a dostupnosti integrovaných periferií naleznete v článku: Vývojové kity Mega48 a Mega328

Ukázkové aplikace a knihovny
Ke každému vývojovému kitu je na internetu k dispozici celá řada ukázkových aplikací a knihoven. Ty ověřené a strukturované do jednotné podoby jsou dostupné na adrese: http://mega.pandatron.cz

Použití vývojových kitů tak nestojí již vůbec nic v cestě. Uvedené ukázkové knihovny a aplikace jsou komentované v českém jazyce (přesto že se v aplikacích z důvodu jejich použití dalšími lidmi po celém světě doporučuje používat výhradně anglický jazyk) a uspořádané tak, aby každá integrovaná či externí periferie měla vlastní zdrojový soubor. Tím je možné každý nový projekt složit jednoduše z těchto základních knihoven a rychle přejít k psaní vlastní aplikace.


Obr. 4: Jednotné nastavení konfiguračních bitů, platné pro všechny uvedené aplikace vývojových kitů Mega48, Mega48x a Mega328

První použití vývojových kitů
Hned v úvodu je třeba zmínit, že všechny dostupné zdrojové kódy jsou záměrně psané s ohledem na jejich snadné použití a dobrou přehlednost i pro méně zdatné vývojáře. Všechny aplikace jsou vyvíjeny s použitím nejrozšířenějšího GCC WinAVR překladače (dostupného zdarma ke stažení v odkazech pod článkem) a při jejich zápisu jsou dodržovány nařízení standardu ANSI C, takže jsou velice snadno použitelné v jiných projektech.

Součástí každého balíku knihoven nebo ukázkové aplikace jsou vždy příslušné soubory se zdrojovými kódy (tedy .c a .h) s komentáři, Makefile, zkompilovaný soubor HEX určený ihned k naprogramování i projektový soubor Presto.ppr s uloženými konfiguračními bity pro software UP nejrozšířenějšího programátoru PRESTO.


Obr. 5:
PRESTO – Univerzální a rychlý USB programátor

Smyslem tohoto článku není krok za krokem seznámení a výuka programování aplikací pro mikrokontroléry. K tomuto účelu je na internetu dostupná celá řada jiných seriálů. Přesto, pro ty z vás, kteří již nějaké zkušenosti s programováním mají, ale potřebují postrčit k procesorům AVR, je zde alespoň základní přehled operací, které je nutné provést:

1) Z následujícího webu si stáhněte WinAVR - AVR-GCC pro Windows
2) Nainstalujte ho podle instrukcí. Z důvodu případné pozdější aktualizace doporučujeme instalovat do adresáře C:\WinAVR\ a po instalaci PC případně restartovat
3) Nainstalujte si příslušný programátor. Pro své snadné, avšak univerzální použití, doporučujeme programátor PRESTO a jeho obslužný software UP
4) Stáhněte si a rozbalte příslušný archiv příkladu z adresy http://mega.pandatron.cz
5) V programu UP volbou Soubor -> Otevřít projekt otevřete z rozbaleného archivu soubor Presto.ppr
6) Stiskem tlačítka Programovat naprogramujte přiložený HEX, nebo zkompilujte vlastní podle instrukcí od bodu 7 dále

7) Při kompilaci vlastní (nebo stažené) aplikace přejděte Příkazovým řádkem (otevřete) adresář s rozbaleným archivem příkladu
8) Kompilaci spusťte zapsáním příkazu: make
9) Pokračujte bodem 6


Obr. 6: Vnitřní blokové schéma obvodů ATmega48 a ATmega328

Na dalších řádcích se již podíváme na samotné příklady a knihovny.

LED flashing
Nejjednodušším příkladem je softwarové blikání LED. Na deskách všech tří vývojových kitů jsou na pinech PC2 a PC3 proti společné zemi umístěny červené diody LED. Kromě funkce inicializace I/O portu jsou tak v aplikaci k dispozici funkce pro rozsvícení i zhasnutí jednotlivých LED a ukázka použití softwarového časovače (časové prodlevy).

Soubor led.c:

void led_port_init (void); Inicializace portu s LED.

void led_port_set (unsigned char value); Rozsvícení daných LED. Např. zápis led_port_set(_BV(LED1_BIT)) rozsvítí LED 1.

void led_port_clear (unsigned char value); Zhasnutí daných LED. Např. zápis led_port_clear(_BV(LED1_BIT)) zhasne LED 1.

void led_port_output (unsigned char value); Přímý zápis hodnoty do portu LED (tedy celého portu PC!).

Uvedený příklad střídavě bliká s LED 1 a LED 2 v intervalu zhruba 200 ms. Funkce _delay_ms(); je deklarována v souboru util/delay.h, který je součástí WinAVR a využívá konstanty frekvence krystalu F_CPU (14 745 600 MHz) ze souboru global.h.


Obr. 7: Hlavní funkce programu

Aplikaci stahujte na adrese http://mega.pandatron.cz

Buttons and LED
Demonstruje použití tlačítek Tl 1 a Tl 2 na vývojových kitech. Tlačítka se spínají proti napájecímu 3V3 a o klidovou úroveň na pinech PD3 a PD5 se starají pull-down rezistory R7 a R8.

Soubor button.c:

void button_port_init (void); Slouží k inicializaci portu (PORTD) tlačítek.

V souboru button.h jsou pak uvedené definice pinů jednotlivých tlačítek, takže pro čtení jejich hodnoty již není potřeba další funkce. Ve zdrojovém souboru (v našem případě main.c) stačí použít například podmínku: if(BUTTON_PIN & _BV(KEY1))…

Uvedený příklad hlídá stav tlačítek Tl 1 a Tl 2 a rozsvěcuje podle nich diody LED 1 a LED 2.


Obr. 8: Hlavní funkce programu

Aplikaci stahujte na adrese http://mega.pandatron.cz

UART
Základním komunikačním rozhraním většiny aplikací je tzv. UART nebo také USART, tedy univerzální sériový asynchronní přijímač/vysílač. Mikrokontroléry na uvedených vývojových kitech (obvody ATmega48 a ATmega328) obsahují ve svém pouzdře jedno rozhraní typu UART. Na deskách vývojových kitů jsou piny sériového portu vyvedeny nejen na postranní pinové lišty, ale také na piny konektoru J11 a dále pak také na slot pro umístění datového převodníku USB / UART (RS232 v TTL úrovních) typu PU232F, dostupného rovněž prostřednictvím našeho e-shopu.

V uvedené aplikaci UART je pro obsluhu sériového rozhraní použit jeden zdrojový soubor uart0.c.

Soubor uart0.c:

void uart0_init (unsigned int bd); Inicializace rozhraní UART s danou rychlostí (bd) z uart0.h a konfigurace přerušení po příjmu znaku (například přes PU232F z PC).

void uart0_transmit (unsigned char data); Odeslání jednoho znaku (data) sériovým rozhraním.

void uart0_command (const char *data); Odeslání povelu, stringu z data a zakončení povelu CR/LF. Vhodné například pro AT příkazy.

ISR(USART0_RX_vect); Vektor přerušení po příjmu znaku.

Uvedený příklad využívá sériového rozhraní pro pravidelné zasílání obvyklého textu HELLO WORLD! (zhruba v intervalech 500 ms). V přerušení, vyvolaném automaticky po příjmu jakéhokoliv znaku ze sériového rozhraní, je vytvořena funkce ECHO (odeslání zpět) a vymazání přijímacího bufferu.


Obr. 9: Hlavní funkce programu

Reakce na příjem znaku a jeho opětovné odeslání je tak díky využití přerušení velmi rychlá.


Obr. 10: Odeslání přijatého znaku je velmi rychlé

Aplikaci stahujte na adrese http://mega.pandatron.cz

Timer 1 and interrupt
Ukázka použití integrovaných čítačů/časovačů a obsluha přerušení po jejich přetečení.

Soubor timer.c:

void timer1_init (void); Inicializace čítače Timer 1 a povolení přerušení od přetečení.

Soubor int.c:

ISR(TIMER1_OVF_vect); Vektor přerušení od přetečení čítače Timer 1. Po smazání příznaku mění stav diody LED 1.

Příklad v přerušení, vyvolávaném v přesně pravidelných intervalech od čítače Timer 1, mění stav diody LED 1. Výsledkem je střídané blikání diody.


Obr. 11: Hlavní funkce programu

Aplikaci stahujte na adrese http://mega.pandatron.cz

ADC to UART
Integrovaný 8-kanálový, 10-bitový převodník je, dalo by se říci, jednou z hlavních periferií, které obvodu umožňují spojení s okolním analogovým světem. Kromě základního měření a jednorázového převodu analogových hodnot na digitální je k dispozici řada speciálních funkcí, jako je například provoz s redukcí šumu či periodické měření (samplování). Dále je volitelná interní reference a jistě potěší i vysoká linearita převodu, dosahující hodnoty 0,5 LSB. Maximální rychlost snímání je 76,9 kS/s (až 15 kS/s při plném rozlišení) s konfigurovatelnou délkou převodu v rozmezí od 13 do 260 us.

Soubor adc.c:

void adc_init (void); Slouží k inicializaci A/D převodníku a jeho základní konfiguraci.

unsigned int adc_read (unsigned char channel); Čtení a převod hodnoty z daného kanálu a její návrat.

Vlastní příklad uvedené aplikace pracuje tak, že v pravidelných intervalech vyčítá hodnotu z A/D převodníku na kanálech CH6 a CH7, pomocí integrované funkce sprintf ji převádí na text a odesílá na UART (například přes modul PU232F do PC).

Na kanálu CH6 se přitom nachází lineární teplotní senzor MCP9700 a na kanálu CH7 je umístěn jednoduchý audio filter (neplatí pro desku Mega48X). Po připojení vývojového kitu k PC je tak ihned vidět teplota desky. Například hodnota 249 odpovídá zhruba napětí 3,3 / 1024 * 249 = 0,8V. Teplota je v tom případě rovna: (0,8 – 0,5) / 0,01 = 30 °C.


Obr. 12: Hlavní funkce programu

Aplikaci stahujte na adrese http://mega.pandatron.cz

Závěr:
Tolik k první sadě příkladů a jednoduchých knihoven. Všechny příklady jsou volně dostupné k libovolnému dalšímu použití a modifikaci. Jak již bylo uvedeno, součástí všech souborů se zdrojovými kódy jsou komentáře, psané speciálně v českém jazyce, takže kdo má již alespoň základní zkušenosti s programováním, nebude pro něho použití a úpravy příkladů ve svých projektech žádným problémem.

Všechny uvedené vývojové kity jsou dostupné skladem prostřednictvím našich eShopů a to na adresách: MEGA48, MEGA48X a MEGA328. Prodejní cena kitů se pohybuje v rozmezí od 545 do 795 Kč (22 - 32 EUR), v závislosti na typu. Zájemcům je prostřednictvím našich eShopů dostupný rovněž zmíněný Univerzální a rychlý programátor PRESTO.

Podrobný manuál k modulům lze stáhnout z následujícího odkazu: Mega48-328_Manual_cz.pdf

Odkazy & Download:
Vývojový kit MEGA48 v našem eShopu
Vývojový kit MEGA48X v našem eShopu
Vývojový kit MEGA328 v našem eShopu
PRESTO - Rychlý a univerzální USB programátor
Síťový napáječ 5V/1000mA

Uvedené příklady a aplikace
Informace o obvodu ATmega48
Informace o obvodu ATmega328
WinAVR - AVR-GCC pro Windows







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk
Příbuzné články:
Vývojové kity Mega48 a Mega328
MEGA48 / MEGA328 – ADC, UART, LED

Komentáře (4):

Zobrazit starší 30 dnů (4)...

host
4. Dne 24. 03. 2015 v 19:23 zaslal host
otázečka
ahoj, chtěl bych se zeptat jak se vypočíta ta hodnota 95 u
#define BAUD_9600 95[b] [/b]

děkuji za odpověď


Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
PBTM s externí anténou
Modul s BTM-112 od firmy Rayson usnadňuje jeho použití a doplňuje modul o konektor pro připojení externí ziskové antény.
Skladem od 389 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007