1.3.10 Mikrokontrollere
I prosesser og utstyr som styres og kontrolleres digitalt, er mikrokontrollere meget anvendelige komponenter, som i mindre frittstående enheter som husholdningsmaskiner, hjemmeelektronikk, mobiltelefoner, etc.. Men også i større mobile eller stasjonære systemer, er det aktuelt å benytte mikrokontrollere. Styrken er deres store fleksibilitet og brede anvendelsesområder, rimelige i pris og svært små med hensyn til vekt og volum.
Mikrokontrollere er programmerbare og er i utgangspunktet en mikroprosessor, men der både selve prosessoren (CPU), hukommelse og portkretser er plassert på én og samme brikke. Den er således en komplett liten datamaskin. Noen typer inneholder EPROM og kan reprogrammeres. Portkretsene tilsvarer mikroprosessorsystemets I/O-enhet (Input/Output). Da slipper vi å tenke på databusser og adressebusser mellom prosessor og hukommelse ved prosjektering av kretskortet den skal være plassert i. Det er kun portene vi i så henseende trenger ta hensyn til , pluss klokkeinngang og eventuelle kontrollsignaler. Portene er som regel bidireksjonale, det vil si at de kan brukes både som inn- og utporter.
Det produseres en mengde forskjellige typer og fabrikater. I den videre beskrivelsen har vi valgt å fokusere på Intel 8051-serien, også kalt MCS 51-familien og som har gått for å være verdens mest anvendte. Den er blitt produsert en mengde forskjellige varianter og fabrikater, og har på mange måter vært modell og basis for andre mikrokontrollere. Nyere varianter har betegnelsen 8052, 8951, 8952 etc.
Hva er en mikrokontroller?
En mikrokontroller er et mikroprosessorsystem der både mikroprosessor, RAM og PROM er bygget inn i én og samme IC.
Mikrokontrolleren inneholder også egne teller- og tidskretser (timer).
Kommunikasjonen med omkringliggende enheter går via egne datainnganger/-utganger kalt porter.
Noen mikrokontrollere er utstyrt med EPROM- eller Flash-minne og kan reprogrammeres.
Hvorfor benytte mikrokontrollere?
Mikrokontrollere er billig i innkjøp (fra gjerne under 10 kr per komponent).
Mikrokontrollere erstatter annen digital elektronikk som logiske porter, vipper, tellere og registre.
Mikrokontrollere gjør den fysiske kretsløsningen enklere.
Mikrokontrollere er programmerbare og derfor meget fleksible å bruke og endre.
Mikrokontrollere finnes i en mengde fabrikater og utførelser, som eksempelvis MCS51 (8051/8052), PIC og Atmel.
Hvor benyttes mikrokontrollere?
Mikrokontrollere benyttes nær sagt overalt i utstyr og enheter der det er behov for elektronisk styring i en eller annen form, det vil si i:
elektronisk brukerutstyr
mobiltelefoner
telefonapparater
alarmutstyr
husholdningsmaskiner
bilelektronikk
osv.
Uten å være klar over det bruker vi gjerne mikrokontrollere daglig. Vi skjønner ganske fort at mikrokontrollere i stor grad har bidratt til å forbedre, for ikke å si revolusjonere vår tilværelse.
Mikrokontroller / mikroprosessorsystem
Mikrokontrolleren kan betraktes som et mikroprosessorsystem eller en datamaskin i miniatyr der alt er integrert i en IC.
Mikrokontrolleren MCS51
Mikrokontrollere finnes i en mengde ulike typer. En av disse er Intels MCS51, også kalt 8051, som på mange måter danner basis for mange forskjellige mikrokontrollere og varianter av denne, og er videreutviklet i en rekke forskjellige utførelser og fabrikanter. MCS51 går for å være den mest kjente mikrokontrolleren som noen gang har vært produsert.
Mikrokontroller arkitektur
MCS51-familien (8051)
Blokkskjematisk oppbygning av en mikrokontroller av type MCS51:
Port i MCS51
Enkeltport i MCS51 (port 0):
Portene, egenskaper
Antall porter er vanligvis inntil 4 x 8 = 32 (noen varianter har inntil 6 x 8 = 48 porter).
Benevnes P0.0-7, P1.0-7, P2.0-7 og P3.0-7.
Alle signaler til og fra det utstyret som skal styres, går via portene.
Portene er bidireksjonale (kan brukes både som inn- og utporter).
Er TTL-LS-kompatible.
Hver port (gruppe) har sin hukommelsesadresse .
Hver enkeltport er bitadresserbar, det vil si at de individuelt kan settes høy og lav ved hjelp av instruksjonene SETB og CLR.
Eksempel:
SETB P1.6 ; sett bit 6 i port 1 høy.
CLR P0.3 ; nullstill (sett lav) bit 3 i port 0.
Portene, alternativ bruk
Noen av portene har alternativ anvendelse. Dette er det viktig å være klar over ved design og programmering.
Alternativ bruk er aktuelt ved
bruk av ekstern hukommelse (RAM, ROM)
eksternt avbrudd (interrupt)
seriell ekstern kommunikasjon mot andre enheter
Ved bruk av ekstern tilleggshukommelse vil åtte porter beslaglegges til databuss og elleve porter til adressebuss. For en mikrokontroller med totalt 32 enkeltporter vil det da være igjen 13 porter.
Hvilke porter som benyttes til alternative funksjoner, varierer fra type til type (fremgår av datablad).
Oscillator
Mikrokontrolleren drives av en krystalloscillator via inngangene XTAL1 og XTAL2 (X1 og X2). Normale arbeidsfrekvenser fra 3,5 MHz til 40 MHz, avhengig av type, men standard arbeidsfrekvens oppgis til 12 MHz.
For å restarte programmet er den også utstyrt med en RESET-inngang.
MCS51 hukommelse og adressering
Hukommelsen i MCS51 er delt to hoveddeler: programhukommelse og datahukommelse.
Programhukommelsen ligger vanligvis i ROM-delen, mens datahukommelsen kan være fordelt på både RAM- og ROM-delen.
Datahukommelsen er igjen delt to deler, (en del som er låst til SFR-regitre og en del som er til fri benyttelse for bruker).
Legg merke til at datahukommelsen angis med to heksadesimale siffer (8 bit), mens programhukommelsen angis med fire heksadesimale siffer (16 bit).
Dette gjør at en enkelt kan skille mellom datahukommelse og programhukommelse.
Datahukommelsen i MCS51
Legg merke til at en del av datahukommelsen er bit-adresserbar.
Dette gjør det for disse adressene enklere å adressere én enkelt bit, for eksempel når én enkelt port skal settes høy eller lav.
SFR (Special Function Registers)
Legg merke til hvilke adresser som er bitadresserbare, og hvilke som ikke er bitadresserbare.
Legg også merke til at portene P0 til P3 er bitadresserbare og har sine individuelle adresser.
De kan derved håndteres på samme måte som et register.
Statusregisteret(PSW, Program Status Word)
Også kalt flaggregisteret i andre prosessortyper er bitadresserbart.
Som navnet sier angir det noe om statusen i forbindelse med bestemte operasjoner i mikrokontrolleren.
Forklaring til de enkelte bits:
CY Carry Flag (mente-flag)
AC Auxiliary Carry Flag
F0 Flag 0, tilgjengelig for bruker til spesielle formål
RS1 Registerbank valg (se tabell 8.2)
RS0 Registerbank valg (se tabell 8.2)
OV Overflow Flag
— Brukerdefinert flagg
P Parity flag. Settes/resettes av hardware for hver instruksjonssyklus for å indikere like/ulike antall «1»-biter i akkumulator
Registerbank, valg
Registre for bruk i tidsforsinkelser og tellere
Spesielt aktuelt når mikrokontrolleren skal benyttes til styring av elektromekaniske operasjoner.
De fleste mikrokontrollere har disse funksjonene (timer/counter) innebygd.
Dersom funksjonen benyttes til tidsmåler, kan den ikke samtidig brukes til teller, og omvendt.
Noen av SFR-registrene aktiviserer og kontrollerer disse funksjonene:
TCON
TMOD
TL
TH
Fordelen med bruk av innebygde tidsfunksjoner (timere) og tellere er at vi ikke trenger å bygge dette inn i programmet, men kun sørge for å skrive instruksjonene som kontrollerer disse funksjonene.
Datablad MCs51
Linkene viser to datablad for MCS51. Det ene viser en fullstendig brukermanual for mikrokontrollerne i MCS51-serien, og den andre linken gir en oversikt og veiledning i instruksjoner og programmering (software).
Brukermanual
http://eia.udg.es/~gomis/all8051.pdf
Software