Ústav radioelektroniky. 14. listopadu 2007

41 

Loading....

Loading....

Loading....

Loading....

Loading....

Full text

(1)

´

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.

(2)

Obsah pˇ

redn´

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´ı

(3)

Obsah pˇ

redn´

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´ı

(4)

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.

(5)

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.

(6)

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

(7)
(8)

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.

(9)

Obsah pˇ

redn´

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´ı

(10)

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?!

(11)

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

(12)

ˇ

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˚ˇ 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,

(13)

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

(14)

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

n1

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−11)·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´ı,

(15)

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,

(16)

r´ıklad uˇ

zit´ı AD pˇ

revodu

ˇ

Reˇsen´ı

I ADCH :L= Vpos−Vneg

Vref ·(2 n−11)·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.

(17)

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

(18)

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

(19)

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

(20)

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.

(21)

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

(22)

Obsah pˇ

redn´

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´ı

(23)

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

(24)

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 ;

(25)

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

(26)

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´ı,

(27)

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/),

(28)

Obsah pˇ

redn´

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´ı

(29)

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,

(30)

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

(31)

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´ı

(32)

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,

(33)

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

(34)

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

(35)

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´ı,

(36)

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

(37)

Obsah pˇ

redn´

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´ı

(38)

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.

(39)

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/

(40)

Obsah pˇ

redn´

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´ı

(41)

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

Figure

Updating...

Related subjects :