Zobrazovací zařízení, zpracování analogových signálů

Komentáře

Transkript

Zobrazovací zařízení, zpracování analogových signálů
Ú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

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...

Více

Administrace UNIXu

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ı́ ...

Více

Bloková struktura mikrokontroléru

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...

Více

Prost edky bezpe nostních systém pro integrovanou výuku VUT

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...

Více

Technické vybavenı osobnıch pocıtacu

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...

Více

Mikroprocesorová technika, prednáška c. 6

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...

Více

Bakalárská práce

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...

Více

Rízení sériové komunikace - Mikroprocesorová technika a embedded

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...

Více