Zobrazovací zařízení, zpracování analogových signálů
Transkript
Ústav radioelektroniky Vysoké učenı́ technické v Brně Zobrazovacı́ zařı́zenı́, zpracovánı́ analogových signálů Mikroprocesorová technika a embedded systémy Přednáška 6 doc. Ing. Tomáš Frýza, Ph.D. 25. řı́jna 2011 Obsah přednášky Ovládánı́ zobrazovacı́ch zařı́zenı́ 7segmentový displej Znakové LCD displeje Grafické displeje Zpracovánı́ analogových signálů Připomenutı́ Internı́ A/D převodnı́k AVR Analogový komparátor u AVR Způsoby programovánı́ mikrokontrolérů Ukázka programu v jazyce C pro ATmega16 A/D převodnı́k Obsah přednášky Ovládánı́ zobrazovacı́ch zařı́zenı́ 7segmentový displej Znakové LCD displeje Grafické displeje Zpracovánı́ analogových signálů Připomenutı́ Internı́ A/D převodnı́k AVR Analogový komparátor u AVR Způsoby programovánı́ mikrokontrolérů Ukázka programu v jazyce C pro ATmega16 A/D převodnı́k Ovládánı́ zobrazovacı́ch zařı́zenı́ – přı́mé propojenı́ s MCU I Přı́mé propojenı́: např. LED, 7segmentový displej. PC7 PC2 PA3 PA3 PA4 A1 PA2 PA4 A1 PA2 PA7 PA5 PA7 PA5 A6 PA0 A6 PA0 Obrázek: Zapojenı́ 7segmentového displeje v laboratoři Mikroprocesorové techniky; 6 symbolů. Pozn.: Přı́klad použitı́ 7segmentového displeje 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #i n c l u d e <a v r \ i o . h> #i n c l u d e <a v r \ i n t e r r u p t . h> // h l a v i č k o v ý s o u b o r p r o m i k r o k o n t r o l é r // h l a v i č k o v ý s o u b o r p r o př e r u š e nı́ // p r o t o t y p f u n k c e z o b r a z u jı́ cı́ j e d e n s y m b o l na p ož a d o v a né p o z i c i i n t showSeg ( c har , c h a r ) ; i n t main ( v o i d ) { ... sei ( ) ; while ( 1 ) ; return ( 1 ) ; // // // // h l a v nı́ f u n k c e kód h l a v nı́ f u n k c e g l o b á l nı́ p o v o l e nı́ vš e c h př e r u š e nı́ n e k o n eč n á smyčka // h l a v nı́ f u n k c e v r a cı́ h o d n o t u 1 } ISR ( . . . ){ // o b s l u h a př e r u š e nı́ p ř i př e t e č e nı́ č a s o v a č e ... // kód o b s l u h y př e r u š e nı́ // z o b r a z e nı́ j e d n o h o s y m b o l u ” s y m b o l ” na p o z i c i ” p o s i t i o n ” showSeg ( symbol , position ) ; } i n t showSeg ( c h a r symbol , c h a r position ) { s w i t c h ( symbol ) { case 0: // z o b r a z s y m b o l ”0” ... // d o p l ň t e kód c e l é f u n k c e } return ( 0 ) ; // n á v r a t o v á h o d n o t a f u n k c e } Znakové LCD displeje I Řı́zenı́ komunikace s displejem (znakový, grafický). I Zobrazitelná plocha obsahuje běžně od 8×1 do 40×4 znaků, bez nebo s podsvı́cenı́m (nejčastěji žluto-zelené) – proudový odběr. I Většina LCD displejů obsahuje řı́dicı́ obvod HD44780 firmy Hitachi (přı́p. jeho derivát); prostřednictvı́m tohoto obvodu je možné komunikovat s displejem. Tento ”řadič”obsahuje jak znakovou sadu i instrukce pro ovládánı́. Komunikace probı́há pomocı́ 8 datových signálů (DB0 − DB7) a je řı́zena 3 řı́dicı́mi signály (RS, R/W a E ): I I I I RS – identifikuje, zda se přenášı́ instrukce nebo zobrazitelná data, R/W – volba operace čtenı́ nebo zápisu (z pohledu MCU), E – spouštěcı́ (”vzorkovacı́”) signál. (a) (b) Obrázek: Různé provedenı́ znakových LCD displejů. (c) Datová komunikace mezi LCD a MCU I Existujı́ dva základnı́ způsoby datové komunikace mezi LCD a MCU, využı́vajı́cı́ plný (8bitová komunikace) nebo redukovaný (4bitová komunikace) počet datových signálů. I 8bitová komunikace vyžaduje 8 + 3 I/O pinů mikrokontrolérů. 4bitová komunikace: 4 + 3 I/O pinů: I I I u LCD se využı́vá hornı́ polovina datových pinů DB7 až DB4, rozdělenı́ datového slova do dvou niblů v časovém multiplexu, tj. dva pulzy řı́dicı́ho signálu E . Tabulka: Popis pinů LCD displeje MC1604 (16×4 znaků). Obrázek: Zapojenı́ LCD displeje na vývojové desce ATmega16. Č. pinu Symbol 1 2 3 4 5 6 7-14 15 16 V− V+ V0 RS R/W E DB0–DB7 A C Popis Napájecı́ napětı́ (GND). Napájecı́ napětı́ (+). Kontrast znaků. Výběr instrukce/data. Výběr čtenı́/zápis. Signál Enable. Datové piny. Podsvı́cenı́ – anoda. Podsvı́cenı́ – katoda. Řı́zenı́ komunikace mezi LCD a MCU I Význam hodnot řı́dicı́ch signálů: I I I I RS = 0: přenášı́ se instrukce (např. pro smazánı́ obsahu displeje), RS = 1: data (např. text k zobrazenı́). R/W = 0: zápis dat/instrukcı́ do LCD, R/W = 1: čtenı́ z LCD. sestupná hrana kladného pulzu signálu E startuje komunikaci. Data na sběrnici musı́ být ustálena již před nástupnou hranou. Minimálnı́ doba trvánı́ impulzu? Možnost úspory dalšı́ho pinu – R/W = GND. Přı́klad Nakreslete časové průběhy všech signálů při zápisu instrukce 0b1111 0000 do LCD pomocı́ (a) 8bitové a (b) 4bitové komunikace. I Znaky jsou zobrazovány jako matice 5×8 (většina znaků je menšı́ch); jsou v LCD uloženy ve vnitřnı́ paměti RAM. I Znaky adresované 16–31 (0x10–0x1F) a 128–159 (0x80–0x9F) nelze zobrazit (odpovı́dajı́ řı́dicı́m znakům z ASCII tabulky). I Data, která chceme zobrazit, jsou v LCD uložena v paměti s označenı́m DDRAM (Display Data RAM). I Je možné definovat až 8 uživatelských znaků (adresa 0–7). Tento segment je označován jako CGRAM (Character Generator RAM). Instrukčnı́ sada řı́dicı́ho obvodu HD44780 Tabulka: Vybrané přı́kazy HD44780 pro komunikaci s LCD displejem. RS R/W DB7 : DB0 Popis instrukce 0 0 0 0 0 0 0000 0001 0000 001x 0000 01IS 0 0 0000 1DCB 0 0 001L NFxx 0 0 1 0 0 0 01 cgram 1 ddram data 1 1 0 1 data data 1 1 data Smazánı́ displeje. Návrat kurzoru na pozici (0,0). Nastavenı́ posuvu kurzoru. I: inkrementace pozice kurzoru. S: posuv displeje. Zapnutı́ displeje/kurzoru. D: zapnutı́ displeje. C: zobrazenı́ kurzoru. B: blikánı́ kurzoru. Nastavenı́ rozlišenı́. L=1(0): nastavenı́ 8(4)bitové komunikace. N=1(0): dva(jeden) řádky displeje. F=1(0): velikost fontu 5×10(5×7). Nastavenı́ adresy cgram v CGRAM segmentu. Nastavenı́ adresy v DDRAM segmentu. Zápis dat do paměti CGRAM. Zobrazenı́ znaku z adresy data. Zápis dat do paměti CGRAM nebo DDRAM. Čtenı́ dat z paměti CGRAM. Čtenı́ dat z adresy data. Čtenı́ dat z paměti CGRAM nebo DDRAM. RS = 0 instrukce RS = 1 data Inicializace LCD displeje 1 2 3 4 5 6 7 8 9 I Inicializace komunikace s displejem (základnı́ nastavenı́ řadiče HD44780). I Provést jednou – začátek aplikace. I Pozor na časovánı́ – jednotlivé přı́kazy vyžadujı́ minimálnı́ časové prodlevy. Zpožděnı́ v knihovně realizováno též prostřednictvı́m funkce lcd clrscr(). v o i d lcd_init ( v o i d ) { DDRA = 0 xFE ; _delay_ms ( 16 ) ; lcd_command ( 0 b00100000 lcd_command ( 0 b00101000 lcd_command ( 0 b00000100 lcd_command ( 0 b00001100 } ) ) ) ) ; ; ; ; // // // // // // v i z p ř i p o j e nı́ LCD v l a b o r a t o ř i delay 4 b i t o v á k o m u n i k a c e ; v i z v y b r a n é přı́ k a z y vı́ c e ř á d ků d i s p l e j e n a s t a v e nı́ p o s u v u k u r z o r u z a p n u tı́ d i s p l e j e Znaková sada LCD displeje 0· ·0 ·1 ·2 ·3 ·4 ·5 ·6 ·7 2· 3· 4· 5· 6· 7· A· B· C· D· E· F· Znaková sada LCD displeje I I Znaky se definujı́ v matici 5×8 bodů. Zobrazený pixel bude v této matici obsahovat hodnotu ”1”, body které majı́ být skryty, obsahujı́ ”0”. Jeden znak je tedy reprezentován osmicı́ slov (jedno slovo na řádek). Nový znak má smysl uložit do paměti CGRAM na samém začátku aplikace. 0b01110 0b11111 0b11111 0b11111 0b11111 0b11111 0b11111 0b11111 (a) 100 % 0b01110 0b11111 0b10001 0b10001 0b10001 0b11111 0b11111 0b11111 (b) 40 % 0b01110 0b11111 0b10001 0b10001 0b10001 0b10001 0b10001 0b11111 (c) 0 % Obrázek: Nově definované znaky pro LCD displej – indikátor nabitı́ baterie. 1 2 3 4 5 6 7 8 9 10 11 12 13 lcd_init ( ) ; lcd_clrscr ( ) ; // i n i c i a l i z a c e LCD d i s p l e j e − v i z k n i h o v n a // s m a z á nı́ o b s a h u LCD lcd_command ( 0 b01000000 ) ; lcd_data ( 0 b01110 ) ; lcd_data ( 0 b11111 ) ; lcd_data ( 0 b11111 ) ; lcd_data ( 0 b11111 ) ; lcd_data ( 0 b11111 ) ; lcd_data ( 0 b11111 ) ; lcd_data ( 0 b11111 ) ; lcd_data ( 0 b11111 ) ; lcd_clrscr ( ) ; // přı́ k a z : N a s t a v e nı́ a d r e s y 0 v CGRAM // u l o ž p r v nı́ ř á d e k s y m b o l u od a d r e s y 0 // u l o ž p o s l e d nı́ ř á d e k no véh o s y m b o l u // s m a z á nı́ o b s a h u LCD ( n u t né ) Knihovna v jazyce C pro práci s LCD I Peter Fleury: http://homepage.hispeed.ch/peterfleury/ (Pozn.: Datové piny MUSÍ být namapovány na dolnı́ polovině portu.) Tabulka: Soupis vybraných funkcı́ z knihovny pro LCD. Název funkce Popis funkce lcd lcd lcd lcd lcd lcd lcd Inicializace LCD displeje. Smazánı́ obsahu LCD displeje. Přesun kurzoru na pozici (0,2), tj. 1. sloupec, 3. řádek. Zobrazenı́ znaku ”A”. Zobrazenı́ řetězce znaků ”BMPT”. Zápis 1bytové instrukce do LCD displeje. Zápis 1bytových dat do LCD displeje. init() ; clrscr() ; gotoxy( 0,2 ) ; putc( ’A’ ) ; puts( "BMPT") ; command( 0x40 ) ; data( 0x0A ) ; I LCD pro Arduino: http://www.arduino.cc/en/Tutorial/LCDLibrary. I http://extremeelectronics.co.in/avr-tutorials/ using-lcd-module-with-avrs/ I ... Pozn.: Zobrazenı́ proměnné typu float na LCD I I Nutné přidat knihovny libprintf flt a libm do překladu aplikace. Správné nastavenı́ linkovánı́: -Wl,-u,vfprintf. (a) (b) Obrázek: Přidánı́ knihoven do překladu v prostředı́ AVR Studio. 1 2 3 4 5 6 7 8 9 10 11 12 #i n c l u d e <s t d i o . h> // s t a n d a r d nı́ I /O k n i h o v n a ( n u t né p r o s p r i n t f ) #i n c l u d e ” l c d h . h” // k n i h o v n a p r o LCD ... float temp ; // g l o b á l nı́ proměnná t y p u f l o a t char buffer [ 1 6 ] ; // g l o b . proměnná ř e t ě z c e k z o b r a z e nı́ na d i s p l e j i ... // n a p l n ě nı́ ř e t ě z c e b u f f e r přı́ s l uš n ý m t e x t e m sprintf ( buffer , ” Hodnota = %5.2 f ” , temp ) ; // z o b r a z e nı́ ř e t ě z c e na d i s p l e j i lcd_puts ( buffer ) ; ... Pozn.: Grafické displeje I Odlišné řı́dicı́ obvody: I I Např. DOGM132X-5 od společnosti ELECTRONIC ASSEMBY – monochromatický grafický displej s rozlišenı́m 132×32 pixelů (řadič ST7565R). Grafický displej ATM12864 s rozlišenı́m 128×64 pixelů (řadič KS0108): I Absence znakové sady. Rozdělenı́ obrazu na dvě části (64×64) – každá vlastnı́ řadič. Signály paralelně, kromě CS1 a CS2 – levá, pravá část displeje. (a) (b) Obrázek: Grafický displej ATM12864. Pro komunikaci s řadičem T6963 byl použit mikroprocesor PIC16F690, který má datovou paměť o velikosti 4kB. Další vlastnosti tohoto mikrokontroléru jsou popsány v literatuře [3]. Pro použitý typ displeje je vhodnější větší paměť, protože jeden obrázek přes celý displej zabere 3,84 kB u displejů s rozlišením 240x128. Na obrázku obr. 3 je uvedeno zjednodušené schéma zapojení. Program byl napsán v jazyce C s využitím dema vývojového prostředí Mikroelektronika – MikroC (odkaz ke stáhnutí dema naleznete zde: [4]). Program je přidán na CD k tomuto dokumentu. Pokud nemáte k dispozici displej s řadičem T6963, a přesto byste si chtěli vyzkoušet jakým způsobem se s ním komunikuje, je možné použít program Multisim od firmy NI. Demo (odkaz ke stáhnutí dema naleznete zde:) obsahuje ukázku zapojení a vzorový program přímo s tímto řadičem. Pozn.: Dotykový panel (touch screen) 2 Displej s dotykovým panelem I Dělenı́ podle druhu zı́skánı́ informace o poloze 2.1 Úvod I Dotykové panely se dnes používají k ovládání stále častěji a uživateli mnohdy zjednoduší a zpříjemní řízení různých programů. DP můžeme rozdělit podle druhu získávané informace na analogové a digitální. U analogových DP je k určení místa dotyku třeba použít AD převodník. Je možné zakoupit I speciální obvody určeny přímo pro DP, např: ADS 7864E od firmy TI. U digitálních DP se místo dotyku určí maticovým způsobem obdobně jako u klávesnic, tedy skenováním řádků a sloupců. Analogové: je nutné použı́t A/D převodnı́k, přı́p. speciálnı́ obvod. Např. ADS7864E (12-Bit, 6-Channel Simultaneous Sampling ADC), fy TI, Digitálnı́: skenovánı́ řádků a sloupců – identické s maticovou klávesnicı́, Ukázka: Grafický displej PG240128WRF-ATA-H-Y7 (řadič T6963c) s 10×5 dotykovými poli @ 15 odporového I/O pinů (digitálnı́ jsem vyzkoušel ovládání digitálního DP, který informace). je výrobcem COL5 COL4 COL3 COL2 COL1 ROW1 ROW2 ROW3 ROW4 ROW5 COL6 COL7 COL8 COL9 COL10 NC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 U4 VDD 1 2 3 4 5 6 7 8 9 10 VDD VSS RA5 RA4 RA3 RA0 RA1 RA2 RC5 RC4 RC3 RC6 RC7 RC0 RC1 RC2 RB7 RB4 RB5 RB6 20 GND GND VDD 19 18 17 16 15 14 13 12 11 PIC16F690 GND GND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 VSS VDD V0 C/D RD WR D0 D1 D2 D3 D4 D5 D6 D7 CE RESET VEE MD2 FS1 NC Prakticky T 6963C instalován na displej firmy Powertrip: PG240128WRF-ATA-H-Y7 (viz. obr. 1). Jedná se o Obr. 3:ovládá Schéma zapojení mikrokontroléru PIC16F690 ke grafickému displeji PG240128WRF. černobílý grafický displej v provedení FSTN s bílým podsvícením (CCFL), displej inteligentní řadič T6963. Rozlišení displeje je 240 x 128 bodů a rozlišení DP je 10 xNa5obrázku bodů.obr. 4 je zobrazen displej, na kterém je testován DP. Aktivní je na DP TOUCH 10k VDD pouze poslední řádek a umožňuje stisknout „tlačítka“ T1 až T8 (T9 a T10 není aktivní). Při stisku daného tlačítka se slovy zobrazí číslo tlačítka, které bylo stisknuto. „Tlačítko 8“ (T8) má navíc funkci vypínání grafické části, to znamená, že při stisku T8, zmizí nápis UREL a po stisku, kteréhokoli jiného tlačítka se opět tento nápis zobrazí. Obr. 1: Grafický displej PG240128WRF-ATA-H-Y7. Obr. 4: Displej PG240128WRF při testování dotykového panelu. (a) (b) 6 (c) Obrázek: Aplikace s grafickým displejem: (a, b) PG240128WRF-ATA-H-Y7, (c) 3,2”(http: //www.ebay.com/itm/3-2-TFT-LCD-Module-Display-Touch-Panel-PCB-adapter-/ 200475566068?pt=LH_DefaultDomain_0&hash=item2ead465ff4). I Ukázky aplikacı́ s grafickými displeji např.: I I I I Samostatné projekty http://www.urel.feec.vutbr.cz/~fryza/ DP, Kulig DP, Marcoň Stránky předmětu Mikropočı́tače pro přı́strojové aplikace, dr. Fedra http://www.urel.feec.vutbr.cz/MIA/ 3 Obsah přednášky Ovládánı́ zobrazovacı́ch zařı́zenı́ 7segmentový displej Znakové LCD displeje Grafické displeje Zpracovánı́ analogových signálů Připomenutı́ Internı́ A/D převodnı́k AVR Analogový komparátor u AVR Způsoby programovánı́ mikrokontrolérů Ukázka programu v jazyce C pro ATmega16 A/D převodnı́k Připomenutı́ A/D převodu I Převzato z materiálů semináře DSP Primer firmy Xilinx, 22. května 2011, Praha. A/D převod s pomocı́ AVR I MCU umožňuje zpracovávat vstupnı́ analogové signály pomocı́ A/D převodnı́ku (Analog to Digital Converter) a komparátoru (Analog Comparator). I ATmega16: 8kanálový, 10bitový převodnı́k – piny PA0 až PA7. Hodnota ve formě dvojkového doplňku (viz přednáška Čı́selné reprezentace v MPT ). Vstupnı́ úroveň je brána bud’ vůči GND, přı́padně lze převádět diferenčnı́ hodnotu dvou vstupnı́ch kanálů a to včetně nastavitelného zesı́lenı́. I I I Minimálnı́ hodnota: 0 V. Maximálnı́ hodnota: napětı́ referenčnı́ho napětı́ VREF . A/D převodnı́k může pracovat z několika režimech: I I I I jednoduchý převod (Single Conversion). Převede se hodnota jediného vzorku, poté je převod zastaven, automatické spouštěnı́ (Auto Triggering). Speciálnı́ událost (např. externı́ přerušenı́, změna hodnoty komparátoru, přetečenı́ časovače, komparace časovače/čı́tače, . . .) může zahájit A/D převod. Převod je zahájen náběžnou hranou vybraného signálu; pokud přijde nová náběžná hrana a převod nenı́ dokončen, pak je ignorována. (Umožňuje zahájenı́ převodu v konstantnı́ch intervalech.), tzv. volný běh (Free Running). Převod je prováděn neustále – jeden je ukončen, druhý spuštěn. Po dokončenı́ A/D převodu je výsledek zapsán do datových registrů A/D převodnı́ku, tj. do ADCH:L; možnost generovat přerušenı́ – viz vektory přerušenı́. Figure 98. Analog to Digital Converter Block Schematic Blokové schéma A/D převodnı́ku ADC CONVERSION COMPLETE IRQ INTERRUPT FLAGS ADTS[2:0] 0 TRIGGER SELECT ADC[9:0] ADC DATA REGISTER (ADCH/ADCL) ADPS0 ADIF ADPS2 ADPS1 ADEN ADSC ADATE MUX1 MUX3 15 ADC CTRL. & STATUS REGISTER (ADCSRA) MUX0 MUX2 MUX4 ADLAR REFS1 REFS0 ADC MULTIPLEXER SELECT (ADMUX) ADIE ADIF 8-BIT DATA BUS AVCC PRESCALER START GAIN SELECTION CHANNEL SELECTION MUX DECODER CONVERSION LOGIC INTERNAL 2.56V REFERENCE SAMPLE & HOLD COMPARATOR AREF 10-BIT DAC + GND BANDGAP REFERENCE ADC7 SINGLE ENDED / DIFFERENTIAL SELECTION ADC6 ADC5 ADC MULTIPLEXER OUTPUT POS. INPUT MUX ADC4 ADC3 + ADC2 ADC1 ADC0 NEG. INPUT MUX GAIN AMPLIFIER Časovánı́ A/D převodnı́ku ATmega16 I internı́ A/D převodnı́k potřebuje pro 10bitový převod hodinový signál o frekvenci od 50 kHz do 200 kHz: I I řı́dicı́ frekvence může být většı́, pokud je postačujı́cı́ nižšı́ rozlišenı́ než 10bitové, A/D převodnı́k obsahuje předděličku (2, 4, 8, 16, 32, 64, 128) ke generovánı́ vhodné frekvence, odvozené od frekvence hodinového signálu jádra MCU (fCPU ). I Doba dokončenı́ A/D převodu závisı́ na zvoleném režimu, přičemž převod prvnı́ hodnoty trvá déle než všechny následujı́cı́ – inicializace vnitřnı́ch obvodů jednotky. I Celková doba převodu se skládá z doby navzorkovánı́ a samotného převodu. sion completes, while ADSC remains high. For a summary of conversion times, see Table 81. Doba trvánı́ A/D převodu Figure 101. ADC Timing Diagram, First Conversion (Single Conversion Mode) Next Conversion First Conversion Cycle Number 1 2 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 2 3 ADC Clock ADEN ADSC ADIF MSB of Result ADCH LSB of Result ADCL MUX and REFS Update Sample & Hold Conversion Complete MUX and REFS Update Obrázek: Doba převodu prvnı́ho vzorku. I Navzorkovánı́ prvnı́ho vzorku vstupnı́ho signálu (sample & hold) trvá 13,5 A/D cyklů. I Dokončenı́ prvnı́ho převodu včetně inicializace analogových obvodů trvá 25 hodinových cyklů A/D převodnı́ku (frekvence 50–200 kHz). 209 Doba trvánı́ A/D převodu Figure 102. ADC Timing Diagram, Single Conversion One Conversion Cycle Number 2 1 3 4 5 6 7 8 Next Conversion 10 9 11 12 13 1 2 3 ADC Clock ADSC ADIF ADCH MSB of Result ADCL LSB of Result Sample & Hold MUX and REFS Update Conversion Complete MUX and REFS Update Figure 103. ADC TimingDoba Diagram, Autodruhého Triggered Obrázek: převodu a Conversion následujı́cı́ch vzorků. One Conversion Cycle Number 1 2 3 4 5 6 7 8 9 Next Conversion 10 11 12 I Navzorkovánı́ ostatnı́ch vzorků trvá jen 1,5 cyklů. ADC Clock I Trigger Dokončenı́ převodu ostatnı́ch vzorků trvá jen 13 cyklů. Source Maximálnı́ vzorkovacı́ frekvence jednoho kanálu je tak: ADATE I I 13 1 2 3,8 kSPS při min. frekvenci fADCmin = 50 kHz a 15,3 kSPS při max. fADCmax = 200 kHz. ADIF I ADCH MSB of Result ADCL LSB of Result Sample & Hold Conversion Prescaler Vyjádřenı́ výsledku A/D převodu I nbitový jednoduchý A/D převod konvertuje vstupnı́ napětı́ lineálně mezi GND a VREF v 2n krocı́ch (tj. hladiny 0 až 2n −1). I Tzv. jednoduchý převod: ADCH:L = I I I VIN · (2n − 1) VREF (1) VIN : převáděná hodnota napětı́ na zvoleném vstupnı́m pinu, VREF : zvolené referenčnı́ napětı́. Diferenčnı́ převod: ADCH:L = I I I I VPOS − VNEG · (2n−1 − 1) · GAIN VREF VPOS : napětı́ na neinvertujı́cı́m vstupnı́m pinu, VNEG : napětı́ na invertujı́cı́m vstupnı́m pinu (viz blokové schéma A/D převodnı́ku), GAIN: zvolené zesı́lenı́, Výsledek ve dvojkovém doplňku (10 bitů, tj. od −512 do +511). (2) Výběr signálů pro A/D převod – viz blokové schéma ADC I I Lze vybrat různé vstupnı́ a referenčnı́ signály pro převod. Volby referenčnı́ho napětı́: I I I I Volby vstupnı́ch kanálů: I I I externı́ napětı́ na pinu AREF, úroveň napájecı́ho napětı́, vnitřnı́ zdroj reference 2,56 V. individuálnı́ vstupy na pinech PA7:0 (ADC7:0), některé předvolené kombinace dvou vstupnı́ch kanálů se zesı́lenı́m 1×, 10×, 100× nebo 200× (viz katalogový list ATmega16). Jednotlivé kanály nelze převádět paralelně – vždy je potřeba vybrat jediný vstupnı́ signál (prostřednictvı́m řı́dicı́ch registrů). Po dokončenı́ jednoho převodu (využitı́ přerušenı́): změnit vstupnı́ kanál a zahájit převod na následujı́cı́m kanále; viz Ukázka programu pro AVR na konci prezentace. 7 6 5 4 3 2 1 0 REFS1 REFS0ADLARMUX4 MUX3 MUX2 MUX1 MUX0 ADMUX Obrázek: Struktura kontrolnı́ho registru ADMUX (ADC Multiplexer Selection Register). 7 6 5 4 3 2 1 0 ADEN ADSCADATE ADIF ADIE ADPS2ADPS1ADPS0 ADCSRA Obrázek: Struktura kontrolnı́ho registru ADCSRA (ADC Control and Status Register A). Přı́klad užitı́ A/D převodu Přı́klad Jakou hodnotu obsahuje registrový pár ADCH:L, je-li nastaven diferenčnı́ převod vstupů ADC 3 = 300 mV a ADC 2 = 500 mV, zesı́lenı́ GAIN = 10× a vnitřnı́ zdroj referenčnı́ho napětı́ VREF = 2,56 V? Řešenı́ ADCH:L = ADCH:L = VPOS −VNEG · (2n−1 VREF 0,3−0,5 · (511) · 10 2,56 − 1) · GAIN ≈ −399 = 0x271 (viz dvojkový doplněk) Analogový komparátor u AVR I Analogový komparátor porovnává neinvertovaný vstup AIN0 s invertovaným AIN1 log Comparator The Analog Comparator (u ATmega16 piny PB2, compares PB3). the input values on the positive pin AIN0 and nega- tive pin AIN1. When the voltage on the positive pin AIN0 is higher than the voltage on I Pokud je napětı́ > Comparator AIN1, výstup (Analog the úroveň negative pin AIN1, AIN0 the Analog Output,komparátoru ACO, is set. The ACO=1 comparator’s output can be set to (Synchronizace trigger the Timer/Counter1 Input Capture function. Inaaddition, the trvá Comparator Output). výstupu komparátoru ACO bitu comparator can trigger a separate interrupt, exclusive to the Analog Comparator. The 1–2 cykly.) user can select Interrupt triggering on comparator output rise, fall or toggle. A block dia- I gram of the comparator and its surrounding logic is shown in Figure 97. Může být generováno přerušenı́ při překlopenı́ komparátoru z 1→0, 0→1, nebo při libovolné změně. Figure 97. Analog Comparator Block Diagram(2) BANDGAP REFERENCE ACBG ACME ADEN ADC MULTIPLEXER OUTPUT (1) Notes: 1. See Table 80 on page 204. 2. Refer to Figure 1 on page 2 and Table 25 on page 58 for Analog Comparator pin placement. Porovnávané signály I I Analogový komparátor umožňuje kromě porovnávánı́ dvou vstupnı́ch signálů z pinů PB2 (AIN0) a PB3 (AIN1), připojenı́ ještě jiných signálů (hodnot). Neinvertovaný vstup: I I I externı́ signál z pinu PB2 nebo, vnitřnı́ zdroj napět’ové úrovně o velikosti 1,23 V. Invertovaný vstup: I I externı́ signál z pinu PB3 nebo, libovolný vstupnı́ kanál A/D převodnı́ku, tj. signály z pinů PA7:0 (ADC7:0). (Konkrétnı́ vstup nastavuje multiplexer A/D převodnı́ku.) Přı́klad Navrhněte obvodové zapojenı́ aplikace, kontrolujı́cı́ napětı́ na napájecı́ baterii. Pokles necht’ je signalizován blikajı́cı́ LED diodou. Nakreslete vývojový diagram této aplikace. Přı́klad užitı́ analogového komparátoru I Monitorovánı́ stavu napájecı́ baterie pomocı́ komparátoru. I Jestliže AIN1>AIN0, výstup komparátoru = 0, LED1 bliká. Nastavenı́ odporových děličů: I I I I Obsluha přerušenı́ ANA COMP vect: I I I Obrázek: Aplikace, kontrolujı́cı́ napětı́ na napájecı́ baterii. R3 AIN1 = R3+R1 · 5V , 38 · 5V = 2, 2V , AIN1 = 38+47 R4 AIN0 = R4+R2 · VBAT , 15 AIN0 = 15+26 · VBAT , ⇒ min. napětı́ baterie VBATmin = 6V . vypnutı́ komparátoru, zahájenı́ blikánı́ LED1 pomocı́ č/č 0, ... Obsah přednášky Ovládánı́ zobrazovacı́ch zařı́zenı́ 7segmentový displej Znakové LCD displeje Grafické displeje Zpracovánı́ analogových signálů Připomenutı́ Internı́ A/D převodnı́k AVR Analogový komparátor u AVR Způsoby programovánı́ mikrokontrolérů Ukázka programu v jazyce C pro ATmega16 A/D převodnı́k Způsoby programovánı́ mikrokontrolérů I I Programovánı́, nebo tzv. download mikrokontrolérů znamená nakopı́rovánı́ vytvořené aplikace (nejčastěji ve formátu Intel HEX) do programové paměti (Flash) mikrokontroléru. (Programátory umožňujı́ také načtenı́, verifikaci a smazánı́ paměti.) Základnı́ způsoby downloadu: I I I I paralelnı́ programovánı́, rozhranı́ JTAG (umožňuje také laděnı́ aplikace v cı́lovém MCU), sériové programovánı́ (ISP In-System Programming) pomocı́ SPI rozhranı́ (viz Sériová komunikace). Paralelnı́ programovánı́: I I nutný většı́ počet vodičů. Zpravidla pomocı́ externı́ho programátoru – vyjmutı́ mikrokontroléru ze systému, což je komplikované, krkolomné, někdy nemožné, rychlost downloadu je velká. Sériové programovánı́ v systému I Sériové programovánı́ v systému (ISP: In-System Programming): I I I I I I Obrázek: Připojenı́ sériového programovánı́. obsahujı́ všechny mikrokontroléry, nenı́ nutné vyjı́mat mikrokontrolér ze systému, neposkytuje možnost laděnı́ aplikace, využı́vá se komunikace po sériovém rozhranı́ SPI (Serial Peripheral Interface); viz přednáška Sériové komunikace v MPT, SPI je duplexnı́, synchronnı́ přenos pomocı́ čtyř vodičů: SCK (hod. signál), MOSI (Master Out Slave In), MISO (Master In Slave Out), SS (Slave Select). Lze programovat programovou a EEPROM pamět’. Hodnota na pinu RESET je připojena na GND (na rozdı́l od paralelnı́ho programovánı́). Pozn.: V laboratoři: AVRISP mkII od Atmel. Obrázek: ISP programátor BiProg pro Atmel, Ing. Povalač, http://www.urel.feec.vutbr.cz/ fryza/?Download. Obsah přednášky Ovládánı́ zobrazovacı́ch zařı́zenı́ 7segmentový displej Znakové LCD displeje Grafické displeje Zpracovánı́ analogových signálů Připomenutı́ Internı́ A/D převodnı́k AVR Analogový komparátor u AVR Způsoby programovánı́ mikrokontrolérů Ukázka programu v jazyce C pro ATmega16 A/D převodnı́k Využitı́ A/D převodnı́ku I Aplikace využı́vá 3 kanály internı́ho A/D převodnı́ku mikrokontroléru ATmega16. Mezi kanály se přepı́ná v časovém multiplexu – využı́vá se globálnı́ proměnná chnl. I Řı́dicı́ registry: I I I I ADMUX (ADC Multiplexer Selection Register) – vybránı́ jednoho kanálu, přı́p. referenčnı́ho napětı́, ADCSRA (ADC Control and Status Register) – zapnutı́ A/D převodnı́ku, zahájenı́ převodu, povolenı́ přerušenı́ po dokončenı́ převodu, nastavenı́ předděličky hodinového signálu pro A/D převodnı́k. Direktivy pre-procesoru #define definujı́ řetězce (LEDs, red, . . .), které budou před překladem nahrazeny konkrétnı́m přı́kazem, hodnotou (POTRB, 0b11011111, . . .). Obsluha přerušenı́ po dokončenı́ převodu ISR( ADC vect ): I I I proměnná ADCW obsahuje 10bitovou hodnotu převodu (tj. obsah obou datových registrů ADCH:L); POZOR, proměnnou kterou plnı́me ADCW deklarovat uvnitř obsluhy přerušenı́, nebo jako volatile!! testovánı́m hodnoty proměnné channel se provádı́ podmı́něná obsluha třı́ kanálů; současně se nastavuje následujı́cı́ kanál – registr ADMUX, znovuzahájenı́ převodu – registr ADCSRA, bit ADSC. Přepı́nánı́ mezi kanály A/D převodnı́ku ISR: ADC zpracovánı́ aktuálnı́ho vzorku načtenı́ vzorku ADCW zpracovánı́ kanál==7 + kanál = 6 red LED kanál = 5 yellow LED kanál = 7 green LED − přepı́nánı́ mezi trojicı́ kanálů kanál==6 + − kanál==5 + − start nového A/D převodu zahájenı́ nového A/D převodu konec přerušenı́ Obrázek: Obsluha přerušenı́ po dokončenı́ A/D převodu. Přepı́nánı́ mezi 3 kanály internı́ho A/D převodnı́ku s LED signalizacı́. A/D převodnı́k v jazyce C 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #i n c l u d e <a v r \ i o . h> #i n c l u d e <a v r \ i n t e r r u p t . h> // h l a v i č k o v ý s o u b o r p r o m i k r o k o n t r o l é r // h l a v i č k o v ý s o u b o r p r o př e r u š e nı́ #d e f i n e #d e f i n e #d e f i n e #d e f i n e // // // // LEDs red yellow green PORTB 0 b11011111 0 b10111111 0 b01111111 c h a r channel = 7 ; d i r e k t i v y p r e−p r o c e s o r u č e r v e n á LED d i o d a j e př i p o j e n á na p i n u PB5 ž l u t á LED d i o d a j e př i p o j e n á na p i n u PB6 z e l e n á LED d i o d a j e př i p o j e n á na p i n u PB7 // pomocný i d e n t i f i k á t o r A/D k a n á l u i n t main ( v o i d ) { DDRB = 0 b11100000 ; // d e k l a r a c e v ý s t u p nı́ c h p i nů p r o b a r e v n é LED // v ý b ě r k a n á l u na p i n u PA7 ADMUX |= (1<<MUX2 ) | (1<<MUX1 ) | (1<<MUX0 ) ; // z a p n u tı́ A/D př e v o d nı́ k u , z a h á j e nı́ př e v o d u , p o v o l e nı́ př e r u š e nı́ // př e d d ě l i č k a = 128 ADCSRA |= (1<<ADEN ) | (1<<ADSC ) | (1<<ADIE ) | (1<<ADPS2 ) | (1<<ADP1 ) | (1<<ADP0 ) ; sei ( ) ; while ( 1 ) ; return ( 1 ) ; } // p o k r a č o v á nı́ na d a l šı́ // g l o b á l nı́ p o v o l e nı́ vš e c h př e r u š e nı́ // n e k o n eč n á smyčka // h l a v nı́ f u n k c e v r a cı́ h o d n o t u 1 s t r a n ě A/D převodnı́k v jazyce C – dokončenı́ 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 // p o k r a č o v á nı́ z př e d e š l é s t r a n y ISR ( ADC_vect ) { // o b s l u h a př e r u š e nı́ A/D př e v o d nı́ k u u n s i g n e d i n t adcData ; adcData = ADCW ; ... // n a č t e nı́ 10 b i t o v é h o d n o t y A/D př e v o d u // kód o b s l u h y př e r u š e nı́ ; z p r a c o v á nı́ v z o r k u // r e ž i e př e pı́ n á nı́ m e z i 3 k a n á l y ; v i z u á l nı́ s i g n a l i z a c e pomocı́ LED d i o d i f ( channel == 7 ) { // v ý b ě r k a n á l u na p i n u PA6 ADMUX |= (1<<MUX2 ) | (1<<MUX1 ) | (0<<MUX0 ) ; LEDs = red ; // s i g n a l i z a č nı́ l e d channel = 6 ; } e l s e i f ( channel == 6 ) { // v ý b ě r k a n á l u na p i n u PA5 ADMUX |= (1<<MUX2 ) | (0<<MUX1 ) | (1<<MUX0 ) ; LEDs = yellow ; // s i g n a l i z a č nı́ l e d channel = 5 ; } e l s e i f ( channel == 5 ) { // v ý b ě r k a n á l u na p i n u PA7 ADMUX |= (1<<MUX2 ) | (1<<MUX1 ) | (1<<MUX0 ) ; LEDs = green ; // s i g n a l i z a č nı́ l e d channel = 7 ; } // z a p n u tı́ A/D př e v o d nı́ k u , z a h á j e nı́ n ové ho př e v o d u ADCSRA |= (1<<ADEN ) | (1<<ADSC ) ; }
Podobné dokumenty
varnett škola
bez nebo s podsvı́cenı́m (nejčastěji žluto-zelené).
Většina LCD displejů obsahuje řı́dicı́ obvod HD44780 firmy
Hitachi (přı́p. jeho derivát); prostřednictvı́m tohoto obvodu je
možné ko...
Administrace UNIXu
zdroje se zkoušı́ v pořadı́ uvedeném na řádku, než se
najde “živý”
zdroj začı́najı́cı́ pomlčkou specifikuje jen default
položky pro následujı́cı́ zdroje
default pro všechno se uvádı́ ...
Bloková struktura mikrokontroléru
popisuje jak má čı́slicový systém pracovat a z jakých hlavnı́ch částı́ by se měl skládat:
řı́dicı́ jednotka, paměti, I/O obvody,
zásadnı́ myšlenka von Neumannovy architektury je použi...
Prost edky bezpe nostních systém pro integrovanou výuku VUT
a odpovídá frekvenci příslušného pásu v Ramanově spektru. Aby bylo možné dokonale
zaznamenat změnu frekvence rozptýleného záření je zapotřebí používat pro buzení Ramanova
rozptylu záření monochroma...
Technické vybavenı osobnıch pocıtacu
(f) Jak fungujı́ moduly DIMM – co je to slot, komunikačnı́ kanály (dual channel apod., vı́cekanálový řadič – co dělat, aby bylo vı́ce kanálů opravdu využito), jak probı́há přı́stup na k...
Mikroprocesorová technika, prednáška c. 6
Úroveň na resetovacı́m pinu mikrokontroléru je nižšı́ než práh
VP OT (Power-on reset threshold),
Externı́ reset: přı́tomnost nı́zké úrovně na vstupu Reset
Přetečenı́ ochranného časov...
Bakalárská práce
dosáhnou podobného efektu změnou jejich parametrů. Z hlediska teorie jde o zpětnovazebnı́
systém se dvěma smyčkami. Prvnı́ zpětná vazba funguje jako standardnı́ zpětnovazebnı́ obvod s re...
Rízení sériové komunikace - Mikroprocesorová technika a embedded
(4) internı́ logika přijı́mače kontroluje počet stop bitů v přijatém rámci; pokud ne, nastavı́
se přı́znak chyby rámce (Framing Error Flag).
(5) Dále obvody UART vypočtou paritu přijate...