´
Ustav radioelektroniky Vysok´e uˇcen´ı technick´e v Brnˇe
Zpracov´
an´ı analogov´
ych sign´
al˚
u
Programov´
an´ı mikrokontroler˚
u
Mikroprocesorov´a technika, pˇredn´aˇska ˇc. 7
Ing. Fr´yza Tom´aˇs, Ph.D.
Obsah pˇ
redn´
aˇ
sky
Komunikace mezi LCD displejem a mikrokontrol´erem
Zpracov´an´ı analogov´ych sign´al˚u
A/D pˇrevodn´ık Analogov´y kompar´ator
V´yvoj aplikac´ı pro mikrokontrol´ery
Zp˚usoby programov´an´ı mikrokontrol´er˚u
Paraleln´ı programov´an´ı
Programov´an´ı pomoc´ı JTAG
ISP programov´an´ı Zdroje informac´ı
Obsah pˇ
redn´
aˇ
sky
Komunikace mezi LCD displejem a mikrokontrol´erem
Zpracov´an´ı analogov´ych sign´al˚u
A/D pˇrevodn´ık Analogov´y kompar´ator
V´yvoj aplikac´ı pro mikrokontrol´ery
Zp˚usoby programov´an´ı mikrokontrol´er˚u
Paraleln´ı programov´an´ı Programov´an´ı pomoc´ı JTAG ISP programov´an´ı
Zdroje informac´ı
Znakov´
e LCD displeje
I Zobraziteln´a plocha obsahuje bˇeˇznˇe od8×1do40×4znak˚u, bez nebo s podsv´ıcen´ım (nejˇcastˇeji ˇzluto-zelen´e).
I Vˇetˇsina LCD displej˚u obsahuje ˇr´ıdic´ı obvod HD44780 firmy Hitachi (pˇr´ıp. jeho deriv´at); prostˇrednictv´ım tohoto obvodu je moˇzn´e komunikovat s displejem. Tento ˇradiˇc obsahuje
znakovou sadu, instrukce pro ovl´ad´an´ı.
I Komunikace prob´ıh´a pomoc´ı 8 datov´ych sign´al˚u
(DB0−DB7) a je ˇr´ızena 3 ˇr´ıdic´ımi sign´aly (RS,R/W aE)
I RS- Identifikuje instrukci nebo data,
I R/W - Volba ˇcten´ı nebo z´apisu (z pohledu MCU),
I E - Povolovac´ı sign´al.
Datov´
a komunikace mezi LCD a MCU
I Existuj´ı dva z´akladn´ı zp˚usoby datov´e komunikace mezi LCD a MCU, vyuˇz´ıvaj´ıc´ı pln´y (8) nebo redukovan´y (4) poˇcet
datov´ych sign´al˚u.
I 8bitov´a komunikace vyˇzaduje 8 + 3 I/O pin˚u mikrokontrol´er˚u.
I 4bitov´a komunikace: 4 + 3 = 7 I/O pin˚u
I U LCD se vyuˇz´ıv´a horn´ı polovina datov´ych pin˚u DB7 aˇz DB4,
I Rozdˇelen´ı datov´eho slova do dvou nibl˚u; nejprve se vyˇsle horn´ı,
n´aslednˇe doln´ı nibl.
Datov´
a komunikace mezi LCD a MCU
I V´yznam ˇr´ıdic´ıch sign´al˚u
I RS= 0: pˇren´aˇs´ı se instrukce (napˇr. pro smaz´an´ı obsahu
displeje),RS= 1: data (napˇr. text k zobrazen´ı).
I R/W = 0: z´apis dat/instrukc´ı do LCD,R/W = 1: ˇcten´ı z
LCD.
I Kladn´y pulz povolovac´ıho sign´aluE startuje komunikaci mezi
zaˇr´ızen´ımi.
I Znaky jsou zobrazov´any jako matice5×8 (vˇetˇsina znak˚u je menˇs´ıch); jsou v LCD uloˇzeny ve vnitˇrn´ı pamˇeti RAM.
I Znaky adresovan´e 16-31(0x10-0x1f) a128-159
(0x80-0x9f) nelze zobrazit (odpov´ıdaj´ı ˇr´ıdic´ım znak˚um z ASCII tabulky).
I Data, kter´a chceme zobrazit, jsou v LCD uloˇzena v pamˇeti s
oznaˇcen´ım DDRAM (Display Data RAM).
I Je moˇzn´e definovat aˇz 8 uˇzivatelsk´ych znak˚u (adresa0aˇz7).
Ty jsou uloˇzeny v pamˇeti s oznaˇcen´ım CGRAM (Character
Instrukˇ
cn´ı sada ˇ
radiˇ
ce HD44780
Tabulka:Nˇekter´e pˇr´ıkazy HD44780 pro komunikaci s LCD displejem
RS R/W DB7 :DB0 Popis instrukce 0 0 0000 0001 Smaz´an´ı displeje
0 0 0000 001x N´avrat kurzoru na pozici (0,0)
0 0 0000 01IS Nastaven´ı posuvu kurzoru. I: inkrementace pozice kurzoru.S: posuv displeje.
0 0 0000 1DCB Zapnut´ı displeje/kurzoru.D: zapnut´ı displeje.C: zo-brazen´ı kurzoru.B: blik´an´ı kurzoru.
0 0 001L NFxx Nastaven´ı rozliˇsen´ı. L=1(0): nastaven´ı 8(4)bitov´e komunikace. N=1(0): dva(jeden) ˇr´adky displeje. F=1(0): velikost fontu5×10(5×7).
0 0 01 cgram Nastaven´ı adresy CGRAM segmentu. 0 0 1 ddram Nastaven´ı adresy DDRAM segmentu. 1 0 data Z´apis dat do pamˇeti CGRAM nebo DDRAM. 1 1 data Cten´ı dat z pamˇˇ eti CGRAM nebo DDRAM.
Obsah pˇ
redn´
aˇ
sky
Komunikace mezi LCD displejem a mikrokontrol´erem
Zpracov´an´ı analogov´ych sign´al˚u
A/D pˇrevodn´ık Analogov´y kompar´ator
V´yvoj aplikac´ı pro mikrokontrol´ery
Zp˚usoby programov´an´ı mikrokontrol´er˚u
Paraleln´ı programov´an´ı Programov´an´ı pomoc´ı JTAG ISP programov´an´ı
Zdroje informac´ı
AD pˇ
revod
I MCU umoˇzˇnuje zpracov´avat analogov´e sign´aly pomoc´ı A/D pˇrevodn´ıku a kompar´atoru.
I A/D pˇrevodn´ık (Analog to Digital Converter) pˇrev´ad´ı velikost analogov´eho vstupn´ıho napˇet´ı na nbitovou digit´aln´ı hodnotu. I ATmega16: 8kan´alov´y pˇrevodn´ık – piny PA0 aˇz PA7.
I Vstupn´ı ´uroveˇn je br´ana bud’ v˚uˇci zemiGN D, pˇr´ıpadnˇe lze pˇrev´adˇet diferenˇcn´ı hodnotu dvou vstupn´ıch kan´al˚u a to vˇcetnˇe nastaviteln´eho zes´ılen´ı.
I Minim´aln´ı hodnota:0V. Maxim´aln´ı hodnota: napˇet´ı referenˇcn´ıho napˇet´ıVREF.
I Z d˚uvodu niˇzˇs´ıho odbˇeru je AD pˇrevodn´ık defaultnˇe vypnut. Pro pouˇzit´ı je tedy nutn´e ho povolit.
I ATmega16: V´ysledek AD pˇrevodu je reprezentov´an 10 bity v
datov´ych registrech ADCH aADCL ve formˇe dvojkov´eho doplˇnku, protoˇze v´ysledek m˚uˇze b´yt z´aporn´y?!
AD pˇ
revod
I Pˇri ˇcten´ı pˇreveden´e hodnoty z registr˚u je po pˇreˇcten´ı hodnoty z ADCL zak´az´an z´apis do obou datov´ych registr˚u (do doby neˇz je pˇreˇctena tak´e hodnota zADCH).
I A/D pˇrevodn´ık m˚uˇze pracovat z nˇekolika reˇzimech
I Jednoduch´y pˇrevod (Single Conversion). Pˇrevede se jen jeden
vzorek, pot´e je pˇrevod zastaven,
I Automatick´e spouˇstˇen´ı (Auto Triggering). Speci´aln´ı ud´alost
(extern´ı pˇreruˇsen´ı, zmˇena kompar´atoru, pˇreteˇcen´ı, komparace
ˇ
c´ıtaˇce/ˇcasovaˇce,. . .) m˚uˇze zah´ajit AD pˇrevod. Pˇrevod je
zah´ajen n´abˇeˇznou hranou vybran´eho sign´alu; pokud pˇrijde nov´a
n´abˇeˇzn´a hrana a pˇrevod nen´ı dokonˇcen, pak je ignorov´ana.
Umoˇzˇnuje zah´ajen´ı pˇrevodu v konstantn´ıch intervalech,
I Voln´y bˇeh (Free Running). Pˇrevod je prov´adˇen neust´ale.
I Po dokonˇcen´ı AD pˇrevodu je v´ysledek zaps´an do datov´ych registr˚u AD pˇrevodn´ıku, tj. doADCH:L. Je moˇzn´e generovat pˇreruˇsen´ı.
ˇ
Casov´
an´ı A/D pˇ
revodn´ıku
I A/D pˇrevodn´ık potˇrebuje pro 10bitov´y pˇrevod hodinov´y sign´al
o frekvenci od50kHzdo200kHz
I R´ıdic´ı frekvence m˚ˇ uˇze b´yt vˇetˇs´ı, pokud je postaˇcuj´ıc´ı niˇzˇs´ı
rozliˇsen´ı neˇz 10bitov´e,
I A/D pˇrevodn´ık obsahuje pˇreddˇeliˇcku (2,4,8,16,32,64,128) ke
generov´an´ı vhodn´e frekvence, odvozen´e odfCP U.
I Doba dokonˇcen´ı AD pˇrevodu z´avis´ı na zvolen´em reˇzimu, pˇriˇcemˇz pˇrevod prvn´ı hodnoty trv´a d´ele neˇz vˇsechny n´asleduj´ıc´ı. Celkov´a doba pˇrevodu se skl´ad´a z doby navzorkov´an´ı a samotn´eho pˇrevodu
I Navzorkov´an´ı prvn´ıho vzorku vstupn´ıho sign´alu (sample &
hold) trv´a13,5 AD cykl˚u, ostatn´ıch jen1,5 AD cykl˚u.
I Dokonˇcen´ı prvn´ıho pˇrevodu vˇcetnˇe inicializace analogov´ych
obvod˚u trv´a25hodinov´ych cykl˚u AD pˇrevodn´ıku; vˇsechny
ostatn´ı pak jen13(pˇrifADC = 50kHz⇒3,8kSP S,
Doba trv´
an´ı AD pˇ
revodu
209 ATmega16(L)
2466M–AVR–04/06
setting the ADEN bit in ADCSRA. The prescaler keeps running for as long as the ADEN bit is set, and is continuously reset when ADEN is low.
When initiating a single ended conversion by setting the ADSC bit in ADCSRA, the con-version starts at the following rising edge of the ADC clock cycle. See “Differential Gain Channels” on page 211 for details on differential conversion timing.
A normal conversion takes 13 ADC clock cycles. The first conversion after the ADC is switched on (ADEN in ADCSRA is set) takes 25 ADC clock cycles in order to initialize the analog circuitry.
The actual sample-and-hold takes place 1.5 ADC clock cycles after the start of a normal conversion and 13.5 ADC clock cycles after the start of a first conversion. When a con-version is complete, the result is written to the ADC Data Registers, and ADIF is set. In single conversion mode, ADSC is cleared simultaneously. The software may then set ADSC again, and a new conversion will be initiated on the first rising ADC clock edge. When Auto Triggering is used, the prescaler is reset when the trigger event occurs. This assures a fixed delay from the trigger event to the start of conversion. In this mode, the sample-and-hold takes place 2 ADC clock cycles after the rising edge on the trigger source signal. Three additional CPU clock cycles are used for synchronization logic. When using Differential mode, along with Auto triggering from a source other than the ADC Conversion Complete, each conversion will require 25 ADC clocks. This is because the ADC must be disabled and re-enabled after every conversion.
In Free Running mode, a new conversion will be started immediately after the conver-sion completes, while ADSC remains high. For a summary of converconver-sion times, see Table 81.
Figure 101. ADC Timing Diagram, First Conversion (Single Conversion Mode)
MSB of Result LSB of Result ADC Clock
ADSC
Sample & Hold ADIF ADCH ADCL Cycle Number ADEN 1 2 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 2 First Conversion NextConversion
3
MUX and REFS
Update MUX and REFS
Update Conversion
Complete
210 ATmega16(L)
2466M–AVR–04/06
Figure 102. ADC Timing Diagram, Single Conversion
Figure 103. ADC Timing Diagram, Auto Triggered Conversion
Figure 104. ADC Timing Diagram, Free Running Conversion
1 2 3 4 5 6 7 8 9 10 11 12 13 MSB of Result LSB of Result ADC Clock ADSC ADIF ADCH ADCL Cycle Number 1 2
One Conversion Next Conversion
3
Sample & Hold MUX and REFS Update
Conversion
Complete MUX and REFS Update 1 2 3 4 5 6 7 8 9 10 11 12 13 MSB of Result LSB of Result ADC Clock Trigger Source ADIF ADCH ADCL Cycle Number 1 2
One Conversion Next Conversion
Conversion Complete Prescaler Reset ADATE Prescaler Reset Sample & Hold
MUX and REFS Update 11 12 13 MSB of Result LSB of Result ADC Clock ADSC ADIF ADCH ADCL Cycle Number 1 2 One Conversion Next Conversion
3 4
Conversion Complete
Sample & Hold MUX and REFS Update
Vyj´
adˇ
ren´ı v´
ysledku AD pˇ
revodu
I nbitov´y jednoduch´y AD pˇrevod konvertuje vstupn´ı napˇet´ı line´alnˇe meziGN D aVREF v2n kroc´ıch (tj. 0aˇz 2n−1).
I Jednoduch´y pˇrevod:ADCH :L= VIN
VREF ·2
n−1
I VIN: napˇet´ı na zvolen´em vstupn´ım pinu,
I VREF: zvolen´e referenˇcn´ı napˇet´ı.
I Diferenˇcn´ı pˇrevod:
ADCH :L= VP OS−VN EG
VREF ·(2
n−1−1)·GAIN
I VP OS: napˇet´ı na neinvertuj´ıc´ım vstupn´ım pinu,
I VN EG: napˇet´ı na invertuj´ıc´ım vstupn´ım pinu,
I GAIN: zvolen´e zes´ılen´ı,
V´
ybˇ
er sign´
al˚
u pro AD pˇ
revod
I Lze vybrat r˚uzn´e vstupn´ı a referenˇcn´ı sign´aly pro pˇrevod. I Volby referenˇcn´ıho napˇet´ı
I Extern´ı napˇet´ı na pinu AREF,
I Uroveˇ´ n nap´ajec´ıho napˇet´ı,
I Vnitˇrn´ı zdroj reference 2,56V.
I Volby vstupn´ıch kan´al˚u
I Individu´aln´ı vstupy na pinech PA7:0 (ADC7:0),
I Nˇekter´e pˇredvolen´e kombinace dvou vstupn´ıch kan´al˚u se
zes´ılen´ım1×,10×,100×nebo200×.
Pˇr´ıklad
Jakou hodnotu obsahuje registrov´y p´ar ADCH:L, byl-li nastaven
diferenˇcn´ı pˇrevod vstup˚u ADC3 = 300mV a ADC2 = 500mV,
Pˇ
r´ıklad uˇ
zit´ı AD pˇ
revodu
ˇ
Reˇsen´ı
I ADCH :L= Vpos−Vneg
Vref ·(2 n−1−1)·GAIN I ADCH :L= 0,302−,560,50·511·10 =−399 = 0x0271 I ADCH = 0x02 I ADCL= 0x71 Pˇr´ıklad
Navrhnˇete obvodov´e zapojen´ı aplikace, kontroluj´ıc´ı ´uroveˇn vstupn´ıho sign´alu a jej´ı n´aslednou signalizaci pomoc´ı LED diod. Nakreslete v´yvojov´y diagram t´eto aplikace.
Pˇ
r´ıklad uˇ
zit´ı AD pˇ
revodu
I Aplikace kontroluje ´uroveˇn napˇet´ı na pinu PA7 (ADC7) a signalizuje ji pomoc´ı trojice LED diod
I LED1: VIN ∈ h2; 3iV,
I LED2: VIN <2V,
I LED3: VIN >3V.
I Podm´ınky v jazyce C
I if(ADCW<(2/5*1023)) LED2 on;
I if(ADCW>(3/5*1023)) LED3 on;
I . . .
I Promˇenn´aADCW obsahuje celou
Blokov´
e sch´
ema A/D pˇ
revodn´ıku
206 ATmega16(L)
2466M–AVR–04/06
Figure 98. Analog to Digital Converter Block Schematic
Operation The ADC converts an analog input voltage to a 10-bit digital value through successive approximation. The minimum value represents GND and the maximum value represents the voltage on the AREF pin minus 1 LSB. Optionally, AVCC or an internal 2.56V refer-ence voltage may be connected to the AREF pin by writing to the REFSn bits in the ADMUX Register. The internal voltage reference may thus be decoupled by an external capacitor at the AREF pin to improve noise immunity.
The analog input channel and differential gain are selected by writing to the MUX bits in ADMUX. Any of the ADC input pins, as well as GND and a fixed bandgap voltage refer-ence, can be selected as single ended inputs to the ADC. A selection of ADC input pins can be selected as positive and negative inputs to the differential gain amplifier. If differential channels are selected, the differential gain stage amplifies the voltage dif-ference between the selected input channel pair by the selected gain factor. This
ADC CONVERSION COMPLETE IRQ
8-BIT DATA BUS
15 0
ADC MULTIPLEXER
SELECT (ADMUX) ADC CTRL. & STATUSREGISTER (ADCSRA) ADC DATA REGISTER(ADCH/ADCL)
MUX2 ADIE ADATE ADSC ADEN ADIF ADIF
MUX1 MUX0 ADPS2 ADPS1 ADPS0
MUX3
CONVERSION LOGIC
10-BIT DAC
+ -SAMPLE & HOLD COMPARATOR INTERNAL 2.56V REFERENCE MUX DECODER MUX4 AVCC ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 REFS0 REFS1 ADLAR + -CHANNEL SELECTION GAIN SELECTION ADC[9:0] ADC MULTIPLEXER OUTPUT GAIN AMPLIFIER AREF BANDGAP REFERENCE PRESCALER
SINGLE ENDED / DIFFERENTIAL SELECTION GND POS. INPUT MUX NEG. INPUT MUX TRIGGER SELECT ADTS[2:0] INTERRUPT FLAGS START
Analogov´
y kompar´
ator
I Analogov´y kompar´ator porovn´av´a neinvertovan´y vstup AIN0 s
invertovan´ym AIN1 (u ATmega16 piny PB2, PB3).
I Pokud je ´uroveˇn napˇet´ı AIN0>AIN1, v´ystup kompar´atoru
ACO=1 (Analog Comparator Output). Synchronizace v´ystupu
kompar´atoru a ACObitu trv´a 1−2cykly.
I M˚uˇze b´yt generov´ano pˇreruˇsen´ı pˇri pˇreklopen´ı kompar´atoru z 1→0,0→1, nebo pˇri libovoln´e zmˇenˇe.
202 ATmega16(L)
2466M–AVR–04/06 Analog Comparator The Analog Comparator compares the input values on the positive pin AIN0 and nega-tive pin AIN1. When the voltage on the posinega-tive pin AIN0 is higher than the voltage on the negative pin AIN1, the Analog Comparator Output, ACO, is set. The comparator’s output can be set to trigger the Timer/Counter1 Input Capture function. In addition, the comparator can trigger a separate interrupt, exclusive to the Analog Comparator. The user can select Interrupt triggering on comparator output rise, fall or toggle. A block dia-gram of the comparator and its surrounding logic is shown in Figure 97.
Figure 97. Analog Comparator Block Diagram(2)
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.
Special Function IO Register – SFIOR
• Bit 3 – ACME: Analog Comparator Multiplexer Enable
When this bit is written logic one and the ADC is switched off (ADEN in ADCSRA is zero), the ADC multiplexer selects the negative input to the Analog Comparator. When this bit is written logic zero, AIN1 is applied to the negative input of the Analog Compar-ator. For a detailed description of this bit, see “Analog Comparator Multiplexed Input” on page 204. ACBG BANDGAP REFERENCE ADC MULTIPLEXER OUTPUT ACME ADEN (1) Bit 7 6 5 4 3 2 1 0
ADTS2 ADTS1 ADTS0 – ACME PUD PSR2 PSR10 SFIOR
Read/Write R/W R/W R/W R R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0
Komparovan´
e sign´
aly
I Analogov´y kompar´ator umoˇzˇnuje kromˇe porovn´av´an´ı dvou vstupn´ıch sign´al˚u z pin˚u PB2 (AIN0) a PB3 (AIN1) jeˇstˇe dalˇs´ı moˇznosti.
I Neinvertovan´y vstup
I Extern´ı sign´al z pinu PB2,
I Vnitˇrn´ı zdroj napˇet’ov´e ´urovnˇe 1,23V.
I Invertovan´y vstup
I Extern´ı sign´al z pinu PB3,
I Libovoln´y vstupn´ı kan´al A/D pˇrevodn´ıku, tj. sign´al z pinu
PA7:0 (ADC7:0). Konkr´etn´ı vstup nastavuje multiplexer A/D
pˇrevodn´ıku.
Pˇr´ıklad
Navrhnˇete obvodov´e zapojen´ı aplikace, kontroluj´ıc´ı napˇet´ı na nap´ajec´ı baterii. Pokles necht’ je signalizov´an blikaj´ıc´ı LED diodou. Nakreslete v´yvojov´y diagram t´eto aplikace.
Pˇ
r´ıklad uˇ
zit´ı analogov´
eho kompar´
atoru
I Monitorov´an´ı stavu nap´ajec´ı baterie pomoc´ı kompar´atoru. I Jestliˇze AIN1>AIN0, v´ystup
kompar´atoru = 0, LED1 blik´a. I Nastaven´ı odporov´ych dˇeliˇc˚u
I AIN1 = R3+R3R1·5V, AIN1 = 38 38+47·5V = 2,2V, I AIN0 = R4+R4R2·VBAT, AIN0 = 15+2615 ·VBAT, ⇒VBAT = 6V. I Obsluha pˇreruˇsen´ı ANA COMP vect
I Vypnut´ı kompar´atoru,
I Zah´ajen´ı blik´an´ı LED diody
Obsah pˇ
redn´
aˇ
sky
Komunikace mezi LCD displejem a mikrokontrol´erem
Zpracov´an´ı analogov´ych sign´al˚u
A/D pˇrevodn´ık Analogov´y kompar´ator
V´yvoj aplikac´ı pro mikrokontrol´ery
Zp˚usoby programov´an´ı mikrokontrol´er˚u
Paraleln´ı programov´an´ı Programov´an´ı pomoc´ı JTAG ISP programov´an´ı
Zdroje informac´ı
V´
yvoj aplikac´ı pro mikrokontrol´
ery
Obr´azek:Pˇreklad
zdrojov´eho k´odu z jazyka C
I Pˇrevod zdrojov´eho k´odu z jazyka symbolick´ych adres do strojov´eho jazyka konkr´etn´ıho MCU je vˇzdy jednoznaˇcn´y.
I Pˇrekladaˇc z jazyka C hled´a v k´odu zn´am´e posloupnosti a ty nahrazuje sekvenc´ı instrukc´ı
⇒ r˚uzn´e pˇrekladaˇce mohou stejn´y k´od pˇreloˇzit odliˇsnˇe.
I Efektivita pˇreloˇzen´eho k´odu z´avis´ı na kvalitˇe (optimalizaci) pˇrekladaˇce.
I Nekter´e pˇrekladaˇce jazyka C pro
mikrokontrol´ery AVR
I GCC, avr-libc
(http://winavr.sourceforge.net/),
I CodeVisionAVR
Pˇ
rekladaˇ
ce jazyka C pro AVR
I Pˇrestoˇze k´od v jazyce C je pˇrenosn´y mezi zaˇr´ızen´ımi (platformami), kaˇzd´y pˇrekladaˇc m˚uˇze obsahovat speci´aln´ı zp˚usob syntaxe.
I K´od urˇcen´y pro GCC tak nep˚ujde pˇreloˇzit pomoc´ı CodeVisionAVR, apod.
Tabulka:Nˇekter´e rozd´ıly v syntaxi mezi pˇrekladaˇci
Operace GCC, avr-libc CodeVisionAVR
Obsluha pˇreruˇsen´ı ISR(INT0 vect) interrupt [EXT INT0] void ext int0 isr(void) Testov´an´ı bitu/pinu bit is set(reg,bit) reg.bit==1
bit is clear(reg,bit) reg.bit==0 Cyklus s testov´an´ım loop until bit is set(reg,bit) while(reg.bit==1)
loop until bit is clear(reg,bit) while(reg.bit==0) Vloˇzen´ı instrukce asm("sei") ; #asm("sei") ; Pˇriˇrazen´ı hodnoty PORTB = 0x0f ; PORTB = 0x0f ;
V´
yvoj aplikac´ı, simul´
atory
I Postup pˇri v´yvoji aplikac´ı: vytvoˇren´ı zdrojov´eho k´odu aplikace a jej´ı odladˇen´ı v simul´atoru, pˇr´ıp. emul´atoru; hardwarovou ˇc´ast je vhodn´e vyzkouˇset na v´yvojov´e desce.
I Simul´ator
I Simulace chov´an´ı mikrokontrol´eru na odliˇsn´em zaˇr´ızen´ı (typ.
PC),
I Simul´ator mus´ı obsahovat pˇrevod zdrojov´eho k´odu do
strojov´eho jazyka poˇzadovan´eho mikrokontrol´eru,
I Spouˇstˇec´ı a lad´ıc´ı programy: krokov´an´ı programu, breakpointy,
. . .,
I Omezen´e moˇznosti simulace okoln´ıho prostˇred´ı (tlaˇc´ıtka,
pˇreruˇsen´ı,. . .),
I Nepracuje v re´aln´em ˇcase: je moˇzn´e z´ıskat informaci o dobˇe
V´
yvoj aplikac´ı, emul´
ator
I Emul´ator
I Propojen´ı PC + emulaˇcn´ı koncovka s c´ılov´ym
mikrokontrol´erem,
I Obsluˇzn´y software (na PC) obsahuje stejn´e n´aleˇzitosti jako u
simul´atoru + odliˇsn´e spouˇstˇec´ı a lad´ıc´ı n´astroje,
I Umoˇzˇnuje monitorov´an´ı c´ılov´eho mikrokontrol´eru bˇehem ladˇen´ı
(obsah registr˚u, z´asobn´ıku,. . .),
I Je moˇzn´e plnˇe odladit novou aplikaci vˇcetnˇe napˇr. vazby na
okol´ı,
V´
yvoj aplikac´ı, v´
yvojov´
e desky
I V´yvojov´a deska
I Hardwarov´e zaˇr´ızen´ı umoˇzˇnuj´ıc´ı odladˇen´ı aplikace vˇcetnˇe
pˇripojen´ı z´akladn´ıch periferi´ı (LED, tlaˇc´ıtka, LCD, rel´e,. . .),
I M˚uˇze obsahovat patice pro odliˇsn´e mikrokontrol´ery, p´ajiv´e
pole,. . .,
I V z´avislosti na aplikaci, nen´ı potˇreba vytv´aˇret fin´aln´ı zapojen´ı
pˇred odladˇen´ım.
I Univerz´aln´ı deska usnadˇnuje/urychluje v´yvoj nov´e aplikace.
I V´yvojov´a prostˇred´ı zpravidla sdruˇzuj´ı editaˇcn´ı, pˇrekl´adac´ı, lad´ıc´ı, programovac´ı n´astroje do jednoho celku
I AVR Studio (http://www.atmel.com/dyn/products/
tools_card.asp?tool_id=2725),
I CodeVisionAVR (http://www.hpinfotech.ro/),
I ImageCraft (http://www.imagecraft.com/),
I IAR Embedded Workbench (http://www.iar.com/),
Obsah pˇ
redn´
aˇ
sky
Komunikace mezi LCD displejem a mikrokontrol´erem
Zpracov´an´ı analogov´ych sign´al˚u
A/D pˇrevodn´ık Analogov´y kompar´ator
V´yvoj aplikac´ı pro mikrokontrol´ery
Zp˚usoby programov´an´ı mikrokontrol´er˚u
Paraleln´ı programov´an´ı
Programov´an´ı pomoc´ı JTAG
ISP programov´an´ı
Zdroje informac´ı
Zp˚
usoby programov´
an´ı mikrokontrol´
er˚
u
I Programov´an´ı, nebo tzv. download mikrokontrol´er˚u znamen´a nakop´ırov´an´ı vytvoˇren´e aplikace (nejˇcastˇeji ve form´atu Intel
HEX) do programov´e pamˇeti (Flash) mikrokontrol´eru.
(Program´atory umoˇzˇnuj´ı tak´e naˇcten´ı, verifikaci a smaz´an´ı pamˇeti.)
I Z´akladn´ı zp˚usoby downloadu
I Paraleln´ı programov´an´ı,
I Rozhran´ı JTAG (umoˇzˇnuje tak´e ladˇen´ı aplikace v c´ılov´em
MCU),
I S´eriov´e programov´an´ı (ISP In-System Programming) pomoc´ı
SPI rozhran´ı.
I Paraleln´ı programov´an´ı
I Nutn´y vˇetˇs´ı poˇcet vodiˇc˚u. Zpravidla pomoc´ı extern´ıho
program´atoru - vyjmut´ı mikrokontrol´eru ze syst´emu, coˇz je
komplikovan´e, krkolomn´e, nˇekdy nemoˇzn´e,
Paraleln´ı programov´
an´ı
I Paraleln´ı programov´an´ı umoˇzˇnuje z´apis a verifikaci obsahu Flash, EEPROM, SRAM, pamˇet’ov´ych z´amkov´ych bit˚u,
programovateln´ych propojek.
I Vyuˇz´ıv´a vyˇsˇs´ıho programovac´ıho napˇet´ı+12V.
Obr´azek:Paraleln´ı
programov´an´ı ATmega16
Tabulka:V´yznam vodiˇc˚u
Oznaˇcen´ı Popis funkce RDY /BSY 0: busy, 1: ready OE V´ystup povolen W R Z´apis dat
BS1 V´ybˇer bytu 1. 0: LSB, 1: MSB XA0 V´ybˇer akce 0
XA1 V´ybˇer akce 1
P AGEL V´ybˇer pamˇet’ov´e str´anky BS2 V´ybˇer bytu 2. 0: LSB, 1: druh´y
MSB
Paraleln´ı programov´
an´ı, programovateln´
e propojky
273 ATmega16(L)
2466M–AVR–04/06
Programming the Fuse High Bits
The algorithm for programming the Fuse high bits is as follows (refer to “Programming the Flash” on page 269 for details on Command and Data loading):
1. A: Load Command “0100 0000”.
2. C: Load Data Low Byte. Bit n = “0” programs and bit n = “1” erases the Fuse bit.
3. Set BS1 to “1” and BS2 to “0”. This selects high data byte.
4. Give WR a negative pulse and wait for RDY/BSY to go high.
5. Set BS1 to “0”. This selects low data byte.
Figure 131. Programming the Fuses
Programming the Lock Bits The algorithm for programming the Lock bits is as follows (refer to “Programming the Flash” on page 269 for details on Command and Data loading):
1. A: Load Command “0010 0000”.
2. C: Load Data Low Byte. Bit n = “0” programs the Lock bit.
3. Give WR a negative pulse and wait for RDY/BSY to go high.
The Lock bits can only be cleared by executing Chip Erase.
Reading the Fuse and Lock Bits
The algorithm for reading the Fuse and Lock bits is as follows (refer to “Programming the Flash” on page 269 for details on Command loading):
1. A: Load Command “0000 0100”.
2. Set OE to “0”, BS2 to “0” and BS1 to “0”. The status of the Fuse Low bits can
now be read at DATA (“0” means programmed).
3. Set OE to “0”, BS2 to “1” and BS1 to “1”. The status of the Fuse High bits can
now be read at DATA (“0” means programmed).
4. Set OE to “0”, BS2 to “0” and BS1 to “1”. The status of the Lock bits can now be
read at DATA (“0” means programmed).
5. Set OE to “1”. RDY/BSY WR OE RESET +12V PAGEL $40 DATA DATA XX XA1 XA0 BS1 XTAL1 A C $40 DATA XX A C
Write Fuse Low byte Write Fuse high byte
BS2
Obr´azek:Z´apis niˇzˇs´ıho bytu propojek
I DAT A: Pˇr´ıkaz pro z´apis do
propojek: 0b0100 0000.
I XA1 : 0 = 10: Naˇcten´ı pˇr´ıkazu. I BS2 : 1 = 00: V´ybˇer niˇzˇs´ıho
bytu.
I DAT A: Zapisovan´y niˇzˇs´ı byte
propojek.
I W R: Negativn´ı pulz pro z´apis.
I RDY /BSY: Pˇri high opˇet
pˇripraven komunikovat.
I XT AL1: Hodinov´e pulzy ˇr´ıd´ı
Programov´
an´ı pomoc´ı JTAG rozhran´ı
I Programov´an´ı pomoc´ı rozhran´ı JTAG
I Rozhran´ı JTAG (standard IEEE 1149.1) umoˇzˇnuje komunikovat
s mikrokontrol´erem bˇehem ladˇen´ı. Je tak moˇzn´e skenovat
vˇsechny vnitˇrn´ı perif´erie, zjiˇst’ovat/mˇenit obsah registr˚u, apod.,
I V´ykon programu lze krokovat (tj. spouˇstˇet a zastavovat) pˇr´ımo
na ˇcipu,
S´
eriov´
e programov´
an´ı v syst´
emu
Obr´azek:S´eriov´e
programov´an´ı
I S´eriov´e programov´an´ı v syst´emu (ISP)
I Nen´ı nutn´e vyj´ımat mikrokontrol´er ze
syst´emu,
I Neposkytuje moˇznost ladˇen´ı aplikace,
I Vyuˇz´ıv´a se komunikace po s´eriov´em
rozhran´ı SPI (Serial Peripheral Interface),
I Tento zp˚usob dnes obsahuj´ı vˇsechny
mikrokontrol´ery,
I SPI je duplexn´ı, synchronn´ı pˇrenos pomoc´ı
ˇ
ctyˇr vodiˇc˚u:SCK (hod. sign´al),M OSI
(Master Out Slave In),M ISO (Master In
Slave Out),SS (Slave Select).
I Lze programovat programovou a EEPROM
pamˇet’. Hodnota na pinuRESET je
pˇripojena naGN D (na rozd´ıl od
Uˇ
zit´ı SPI komunikace
Obr´azek:Apliace s SPI komunikac´ı
I Dvojice mikrokontrol´er˚u, z nichˇz jeden je definov´an jako Master, druh´y jako Slave (na obr´azku jen jeden z nich).
I Pomoc´ı SPI si pos´ılaj´ı stavy pˇrep´ınaˇc˚u a na LED diod´ach je zobrazuj´ı.
Programov´
an´ı pomoc´ı SPI
I Spojen´ı Master (programuje) a Slave (je programov´ano)
obsahuje dvojici posuvn´ych registr˚u + gener´ator hodin od
nadˇrazen´eho obvodu Master.
I Postup programov´an´ı (komunikace Master→Slave)
1) Zah´ajen´ı komunikaceSS= 0pro poˇzadovan´y podˇr´ızen´y obvod
Slave,
2) Pˇr´ıprava dat k pˇrenosu do posuvn´ych registr˚u,
3) Pˇrenos je ˇr´ızen (synchronizov´an) hodinov´ym sign´alem SCK
od programovac´ıho obvodu Master,
4) Od Master ke Slave prob´ıh´a komunikace vˇzdy po vodiˇci
M OSI,
Od Slave k Master prob´ıh´a komunikace vˇzdy po vodiˇciM ISO,
5) Po odesl´an´ı bytu - zastaven´ı hodin, moˇznost generov´an´ı
pˇreruˇsen´ı,
Programov´
an´ı pomoc´ı SPI
I Instrukce pro SPI programov´an´ı obsahuj´ı 4 byty.
I Pos´ıl´an´ı dat zpravidla od MSB po LSB.
281 ATmega16(L)
2466M–AVR–04/06
SPI Serial Programming Characteristics
For characteristics of the SPI module, see “SPI Timing Characteristics” on page 298.
Figure 138. SPI Serial Programming Waveforms
Programming via the JTAG Interface
Programming through the JTAG interface requires control of the four JTAG specific pins: TCK, TMS, TDI and TDO. Control of the reset and clock pins is not required. To be able to use the JTAG interface, the JTAGEN Fuse must be programmed. The device is default shipped with the fuse programmed. In addition, the JTD bit in MCUCSR must be cleared. Alternatively, if the JTD bit is set, the External Reset can be forced low. Then, the JTD bit will be cleared after two chip clocks, and the JTAG pins are available for programming. This provides a means of using the JTAG pins as normal port pins in running mode while still allowing In-System Programming via the JTAG interface. Note that this technique can not be used when using the JTAG pins for Boundary-scan or On-chip Debug. In these cases the JTAG pins must be dedicated for this purpose. As a definition in this datasheet, the LSB is shifted in and out first of all Shift Registers.
Programming Specific JTAG Instructions
The instruction register is 4-bit wide, supporting up to 16 instructions. The JTAG instruc-tions useful for Programming are listed below.
The OPCODE for each instruction is shown behind the instruction name in hex format. The text describes which Data Register is selected as path between TDI and TDO for each instruction.
The Run-Test/Idle state of the TAP controller is used to generate internal clocks. It can also be used as an idle state between JTAG sequences. The state machine sequence for changing the instruction word is shown in Figure 139.
MSB
MSB
LSB
LSB
SERIAL CLOCK INPUT (SCK) SERIAL DATA INPUT (MOSI)
(MISO)
SAMPLE SERIAL DATA OUTPUT
Obsah pˇ
redn´
aˇ
sky
Komunikace mezi LCD displejem a mikrokontrol´erem
Zpracov´an´ı analogov´ych sign´al˚u
A/D pˇrevodn´ık Analogov´y kompar´ator
V´yvoj aplikac´ı pro mikrokontrol´ery
Zp˚usoby programov´an´ı mikrokontrol´er˚u
Paraleln´ı programov´an´ı Programov´an´ı pomoc´ı JTAG ISP programov´an´ı
Zdroje informac´ı
Zdroje informac´ı
Matouˇsek, D.
Pr´aces mikrokontrol´ery ATMEL AVR; ATmega16.
Ben – technick´a literatura, Praha, 2006, ISBN 80-7300-174-8.
Barnett, R., O’Cull, L., Cox, S.
Embedded C Programming and the Atmel AVR, 2e.
Thomson Delmar Learning, New York, 2007, ISBN 1-4180-3959-4.
Zdroje informac´ı
Atmel Corporation. ATmega16, (listopad 2007). http://www.atmel.com/dyn/products/product_card. asp?part_id=2010 Fleury, P.Peter Fleury’s Home Page, (listopad 2007). http://homepage.hispeed.ch/peterfleury/
C library for use with GCC on AVR.
AVR Libc Home Page, (listopad 2007). http://www.nongnu.org/avr-libc/
Elnec.
Ofici´aln´ı str´anky firmy Elnec, (listopad 2007). http://www.elnec.sk/
Obsah pˇ
redn´
aˇ
sky
Komunikace mezi LCD displejem a mikrokontrol´erem
Zpracov´an´ı analogov´ych sign´al˚u
A/D pˇrevodn´ık Analogov´y kompar´ator
V´yvoj aplikac´ı pro mikrokontrol´ery
Zp˚usoby programov´an´ı mikrokontrol´er˚u
Paraleln´ı programov´an´ı Programov´an´ı pomoc´ı JTAG ISP programov´an´ı
Zdroje informac´ı
Ot´
azky a pˇ
r´ıklady k procviˇ
cen´ı
1. Zobrazte ˇcasov´y pr˚ubˇeh sign´al˚u datov´e a ˇr´ıdic´ı sbˇernice LCD displeje pˇri vysl´an´ı instrukce pro smaz´an´ı displeje. Je
nastavena 8bitov´a komunikace mezi LCD a MCU.
2. Jak´a je ´uroveˇn analogov´eho sign´alu, jestliˇze po AD pˇrevodu je
v registrov´em p´aruADCH:Luloˇzena hodnota0x004fa
referenˇcn´ı napˇet´ıVREF = 2,56V?
3. Charakterizujte v´yhody simul´ator˚u a nev´yhody emul´ator˚u? 4. Nakreslete a popiˇste propojen´ı mikrokontrol´eru a tˇr´ı
podˇr´ızen´ych obvod˚u pomoc´ı SPI sbˇernice. Kolik I/O pin˚u
MCU je zapotˇreb´ı, aby MCU mohlo vˇzdy komunikovat jen s