elomax

[ Techniek ] [ Shop ] [ Site map
Methoden ] [ Toepassing ] Voorbeeld ]

Terug
Omhoog

De A/D converter in de 68HC11

De 68HC11 heeft een 8-bits A/D converter die werkt volgens het 'successive approximation' principe. De converter is voorzien van een multiplexer, waardoor 8 I/O lijnen beschikbaar zijn voor analoge signalen. De converter kan natuurlijk maar één van deze 8 signalen tegelijk converteren.

Ingangsbereik

De analoge ingangen op de 68HC11 hebben een bereik van 0 Volt ... 5 Volt. Aangezien dit bereik is onderverdeeld in 256 stapjes (8 bits), is 1 LSB ongeveer 19.5 milliVolt.

Onder ideale omstandigheden levert een ingangs spanning van 0 Volt een resultaat van 0 op, en een ingangs spanning van ongeveer 5 Volt een resultaat van 255. Eén conversie van één kanaal duurt 16µs.

Kanaalkeuze

De conversies kunnen, afhankelijk van de instelling van de A/D converter, per kanaal geschieden of per groep van 4 kanalen. Beide mogelijkheden kunnen daarnaast nog automatisch herhaald worden zodat altijd de meest recente meting beschikbaar is, of éénmalig uitgevoerd worden.

Conversieresultaat

Het resultaat van de conversies wordt achtergelaten in het ADRx register. Er zijn 4 van deze registers beschikbaar: ADR1, ADR2, ADR3, en ADR4. Bij conversie van één kanaal, worden 4 achtereenvolgende metingen op dit kanaal opgeslagen in de 4 registers. Bij conversie van een groep van 4 kanalen, worden de resultaten van de metingen per kanaal in de registers gezet.

Meetvolgorde

Zoals gezegd kan gekozen worden of de converter één kanaal moet meten, of een groep van 4 kanalen. Deze keuze wordt gemaakt via het MULT bit in het ADCTL register. Wanneer het MULT bit een '0' gemaakt wordt, zal de converter één kanaal 4 keer meten, en de 4 meetwaarden achterlaten in de ADR1, ADR2, ADR3, en ADR4 register (de eerste meting in ADR1, de tweede in ADR2, etc.)

Met het MULT bit in het ADCTL register op '1', wordt een groep van 4 kanalen gemeten. Het resultaat van het eerste kanaal komt in ADR1, het tweede kanaal in ADR2, etc.

In het ADCTL register bevinden zich de CA, CB, CC, en CD bits, waarmee gekozen wordt welke kanalen geconverteerd moeten worden. Met deze bits kunnen 16 kanalen gekozen worden, waarvan er echter maar 8 zijn aangesloten op de pinnen van poort E. De andere 8 kanalen zijn gereserveerd voor toekomstige uitbreidingen van de micro-controller, en voor speciale testdoeleinden.

Wanneer gekozen wordt voor conversie van één kanaal (MULT = '0'), wordt het te meten kanaal gekozen volgens de volgende tabel:

CD

CC

CB

CA

kanaal

poort

0

0

0

0

0

PE0

0

0

0

1

1

PE1

0

0

1

0

2

PE2

0

0

1

1

3

PE3

0

1

0

0

4

PE4

0

1

0

1

5

PE5

0

1

1

0

6

PE6

0

1

1

1

7

PE7

Wanneer gekozen wordt voor conversie van een groep van 4 kanalen (MULT = '1'), wordt de kanaalkeuze gemaakt volgens de volgende tabel:

CD

CC

CB

CA

kanalen

resultaat registers

0

0

0

0

0,1,2,3

ADR1,ADR2,ADR3,ADR4

0

1

0

0

4,5,6,7

ADR1,ADR2,ADR3,ADR4

Continu converteren

Door het SCAN bit in het ADCTL register een '1' te maken, zal de A/D converter continue conversies uitvoeren. Wanneer dit bit een '0' is, wordt één conversieslag uitgevoerd (4 opeenvolgende conversies van één kanaal als MULT '0' is, of een conversie van elk van de 4 kanalen in de geselecteerde groep als MULT een '1' is.)

Conversies starten en stoppen

Conversies worden gestart op het moment dat er naar het ADCTL register wordt geschreven. Wanneer in dit register wordt geschreven terwijl er nog conversies gedaan worden, dan worden deze onmiddellijk onderbroken, en een nieuwe conversie zal gestart worden. Wanneer een complete conversie gedaan is (4 metingen), wordt het CCF bit in het ADCTL register een '1' gemaakt. Dit bit wordt automatisch op '0' gezet elke keer wanneer er naar het ADCTL register wordt geschreven. Eén conversie duurt 16µs, dus het CCF bit wordt een '1', 64µs nadat in het ADCTL register werd geschreven (4 conversies.)

De A/D converter aanzetten

De A/D converter is een apart sub-systeem binnen de micro-controller. Dit systeem wordt niet altijd gebruikt, maar vraagt wel stroom van de voeding. In toepassingen waar de converter niet nodig is, kan het gehele sub-systeem worden uitgezet. Anderzijds is het in toepassingen waar de converter wèl gebruikt wordt, nodig het sub-systeem aan te zetten.

De A/D converter wordt ingeschakeld via het ADPU bit in het OPTION register. De A/D converter is alleen te gebruiken wanneer dit bit een '1' wordt gemaakt.

Een voorbeeld van een subroutine om de A/D converter te besturen is hieronder gegeven.

* bij opstarten van het programma moet de A/D converter aangezet worden:
                 ldab #(adpu+irqe+cr1+cr0)
                 stab option     |zet de a/d converter aan
* initialisatie van de a/d converter
* converter wordt ingesteld op continue conversie van de kanalen PE4..PE7.
* het resultaat van de conversies is beschikbaar in de registers adr1..adr4.
* de waarden in de registers adr1..adr4 zijn geldig zodra
* het ccf bit in het adctl register een '1' is.
* het resultaat van PE4 komt terecht in adr1, van PE5 in adr2, etc.
                ldab #(scan or mult or cc)
                stab adctl      |initialiseer voor continue conversie
                rts

De registers voor de A/D converter

De I/O registers die de instellingen voor de A/D converter bepalen zijn:

ADCTL $1030

ccf

-

scan

mult

cd

cc

cb

ca

 

ADR1 $1031

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

 

ADR2 $1032

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

 

ADR3 $1033

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

 

ADR4 $1034

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

 

OPTION $1039

adpu

csel

irqe

dly

cme

-

cr1

cr0


Vorige ] Volgende ]

© 2005...2008 Elomax [Voorwaarden ]