Mikrokontroller

En mikrokontroller (forkortet µC , UC eller mCU ) er en programmerbar integrert krets som er i stand til å utføre ordrene som er registrert i minnet. Den er sammensatt av flere funksjonelle blokker som oppfyller en spesifikk oppgave. En mikrokontroller inkluderer de tre hovedfunksjonsenhetene til en datamaskin : sentral prosesseringsenhet , minne og inngangs- / utgangsutstyr .

Noen mikrokontrollere kan bruke fire-bits ord og operere med klokkefrekvenser så lave som 4 kHz, med lavt strømforbruk ( mW eller mikrowatt ). Den vil vanligvis ha muligheten til å vente på en hendelse som et knappetrykk eller annet avbrudd; dermed kan strømforbruket under inaktiv tilstand (CPU-klokke og de fleste eksterne enheter) være så lavt som nanowatt, noe som gjør mange av dem godt egnet for bruk med lang batterilevetid. Andre mikrokontrollere kan tjene ytelseskritiske roller, der det er nødvendig å fungere mer som en digital signalprosessor (DSP), med høyere klokkehastigheter og strømforbruk.

Når mikrokontrolleren er produsert, inneholder den ingen data i ROM. For å kontrollere en prosess er det nødvendig å generere eller opprette og deretter registrere i EEPROM eller tilsvarende av mikrokontrolleren et program, som kan skrives på assemblerspråk eller et annet språk for mikrokontrollere; men for at programmet skal registreres i minnet til mikrokontrolleren, må det kodes i det heksadesimale numeriske systemet , som til syvende og sist er systemet som får mikrokontrolleren til å fungere når den er forsynt med riktig spenning og assosiert med analoge og diskrete enheter for dens funksjon. [ 1 ]

Historikk

Den første mikroprosessoren var 4 - biters Intel 4004 , utgitt i 1971, etterfulgt av Intel 8008 og mer kapable. Imidlertid krever begge prosessorene ytterligere kretser for å implementere et fungerende system, noe som øker kostnadene for det totale systemet.

Smithsonian Institution sier at Texas Instruments ingeniører Gary Boone og Michael Cochran lyktes i å lage den første mikrokontrolleren, TMS 1000 , i 1971; den ble kommersialisert i 1974. Den kombinerer ROM -minne , RAM-minne , mikroprosessor og klokke på én brikke og var beregnet på innebygde systemer . [ 2 ]

Delvis på grunn av eksistensen av TMS 1000, [ 3 ] utviklet Intel et datamaskin-på-en-brikke-system optimert for kontrollapplikasjoner, Intel 8048 , som ble levert i 1977. [ 3 ] Den kombinerer RAM og ROM til samme brikke og finnes i over en milliard IBM PC-kompatible tastaturer og en rekke andre applikasjoner. Intels daværende president, Luke J. Valenter, erklærte mikrokontrolleren som et av de mest suksessrike produktene i selskapets historie, og utvidet divisjonens budsjett med mer enn 25 %.

De fleste mikrokontrollere på den tiden hadde to varianter. Noen hadde omprogrammerbart EPROM -minne , betydelig dyrere enn PROM -varianten som bare en gang var programmerbar. For å slette EPROM må du utsette den klare kvartshetten for ultrafiolett lys. Helt ugjennomsiktige brikker representerte en lavere kostnad.

I 1993, utgivelsen av EEPROM i mikrokontrollere (som starter med Microchip PIC16x84 ) [ 4 ] gjør at den kan slettes elektrisk og raskt uten behov for en dyr pakke som kreves i EPROM , noe som muliggjør både rask prototyping og programmering i systemet . Samme år slipper Atmel den første mikrokontrolleren som bruker flash-minne . [ 5 ] Andre selskaper fulgte raskt etter, med begge typer hukommelse.

Kostnadene har falt over tid, med den billigste 8-bits mikrokontrolleren tilgjengelig for mindre enn $ 0,25 for tusenvis av enheter i 2009, og noen 32-bits mikrokontrollere til $ 1 for tilsvarende beløp. I dag er mikrokontrollere billige og lett tilgjengelige for hobbyister, med store nettsamfunn for visse prosessorer.

I fremtiden kan MRAM brukes i mikrokontrollere, siden den har uendelig motstand og kostnadene for halvlederplaten er relativt lave.

Funksjoner

Mikrokontrollere er designet for å redusere de økonomiske kostnadene og strømforbruket til et bestemt system. Så størrelsen på den sentrale prosessorenheten , mengden minne og periferiutstyret som er inkludert vil avhenge av applikasjonen. Kontrollen av et enkelt apparat som en mikser vil bruke en veldig liten prosessor (4 eller 8 bits) fordi den vil erstatte en begrenset automat. I motsetning til dette vil en digital musikk- eller videospiller ( MP3 eller MP4 ) kreve en 32-bits eller 64-bits prosessor og en eller flere digitale signalkodeker ( lyd eller video). Kontroll av et låsefri bremsesystem (ABS ) er vanligvis basert på en 16-bits mikrokontroller , omtrent som det elektroniske motorkontrollsystemet i en bil .

Mikrokontrollere representerer det store flertallet av databrikker som selges, med over 50% som "enkle" kontrollere og resten er mer spesialiserte DSP -er. Mens du kanskje har en eller to generelle mikroprosessorer i hjemmet ditt (du bruker en til dette), har du sannsynligvis et dusin eller to mikrokontrollere spredt blant husholdningsapparater. De kan finnes i nesten alle elektroniske enheter som biler , vaskemaskiner , mikrobølgeovner , telefoner , etc.

En mikrokontroller skiller seg fra en vanlig sentralenhet ved at det er lettere å gjøre om til en fungerende datamaskin, med et minimum av støttende eksterne integrerte kretser . Tanken er at den integrerte kretsen plasseres i enheten, koblet til den strøm- og informasjonskilden den trenger, og det er det. En tradisjonell mikroprosessor lar deg ikke gjøre dette, siden den forventer at alle disse oppgavene skal håndteres av andre brikker. Du må legge til inngangs- og utgangsmoduler (porter) og minne for informasjonslagring.

En typisk mikrokontroller vil ha en innebygd klokkegenerator og en liten mengde tilfeldig tilgangsminne eller ROM / EPROM / EEPROM / flash , så for å få det til å fungere er det bare noen få kontrollprogrammer og en timingkrystall som trengs. Mikrokontrollere har også generelt et bredt utvalg av inngangs-/utgangsenheter , for eksempel analog-til-digital-omformere , tidtakere , UART -er og spesialiserte serielle grensesnittbusser som I2C og CAN . Disse innebygde enhetene kan ofte kontrolleres av instruksjoner fra spesialiserte prosessorer. Moderne mikrokontrollere inkluderer ofte et innebygd programmeringsspråk, for eksempel programmeringsspråket BASIC , som er mye brukt til dette formålet.

Mikrokontrollere bytter hastighet og fleksibilitet for enkel bruk. Fordi mye brikkeplass brukes til å inkludere funksjonalitet, for eksempel inngangs-/utgangsenheter eller minnet som mikrokontrolleren inkluderer, må alle andre kretser utelates.

Dataarkitekturer

Det er i utgangspunktet to datamaskinarkitekturer, og selvfølgelig er de til stede i mikrokontrollernes verden: Von Neumann og Harvard. Begge er forskjellige i måten å koble minnet til prosessoren på og i bussene som hver enkelt trenger.

Von Neumann-arkitektur

Von Neumann-arkitekturen bruker den samme lagringsenheten for både instruksjoner og data, og er den som brukes i en personlig datamaskin fordi den sparer en god mengde I/O-linjer, som er ganske dyre, spesielt for de systemene der prosessoren er montert i en type stikkontakt plassert på et hovedkort . Også denne organisasjonen sparer hovedkortdesignere for mye trøbbel og reduserer kostnadene for slike systemer.

I en personlig datamaskin, når et program lastes inn i minnet, blir det tildelt et minneadresserom som er delt inn i segmenter, hvorav vi typisk vil ha følgende: kode (program), data og stack . Det er derfor vi kan snakke om minne som en helhet, selv om det er forskjellige fysiske enheter i systemet ( harddisk , RAM -minne , flashminne , optisk diskstasjon ...).

Når det gjelder mikrokontrollere, er det to veldefinerte typer minne: dataminne (vanligvis en type SRAM ) og programminne ( ROM , PROM , EEPROM, flash eller annen ikke-flyktig). I dette tilfellet er organisasjonen forskjellig fra den for den personlige datamaskinen, fordi det er forskjellige kretser for hvert minne og segmentregistre brukes normalt ikke, men minnet er atskilt og tilgang til hver type minne avhenger av instruksjonene fra prosessor..

Selv om minnet er segregert i integrerte systemer med Von Neumann-arkitektur, og det er forskjeller med hensyn til den tradisjonelle definisjonen av denne arkitekturen; bussene for å få tilgang til begge typer minne er de samme, bare databussen, adressebussen og kontrollbussen forlater prosessoren. Som en konklusjon har ikke arkitekturen blitt endret, fordi måten minnet er koblet til prosessoren følger samme prinsipp definert i den grunnleggende arkitekturen.

Noen familier av mikrokontrollere som Intel 8051 og Z80 implementerer denne typen arkitektur, hovedsakelig fordi det var den som ble brukt da de første mikrokontrollerne dukket opp.

Harvard-arkitektur

Den andre varianten er Harvard-arkitekturen , og par excellence den som brukes i superdatamaskiner, mikrokontrollere og innebygde systemer generelt. I dette tilfellet, i tillegg til minnet, har prosessoren adskilte busser, slik at hver type minne har en databuss, en adressebuss og en kontrollbuss.

Den grunnleggende fordelen med denne arkitekturen er at den gjør at størrelsen på bussene kan tilpasses egenskapene til hver type minne; I tillegg kan prosessoren få tilgang til hver av dem samtidig, noe som gir en betydelig økning i prosesseringshastigheten. Vanligvis kan systemer med denne arkitekturen være dobbelt så raske som lignende systemer med Von Neumann-arkitektur.

Ulempen er at den bruker mye prosessor I/O-linjer; så i systemer hvor prosessoren er plassert i sin egen pakke, brukes den kun i superdatamaskiner. Imidlertid, i mikrokontrollere og andre innebygde systemer, der data og programminne vanligvis deler samme pakke som prosessoren, slutter denne ulempen å være et alvorlig problem, og det er derfor vi finner Harvard-arkitekturen i de fleste mikrokontrollere. .

Det er derfor det er viktig å huske at en mikrokontroller kan konfigureres på forskjellige måter, så lenge minnestørrelsen den krever for korrekt drift respekteres.

Prosessor i detalj

På 1970-tallet var ikke digital elektronikk tilstrekkelig utviklet, men innen elektronikk var det allerede en etablert spesialitet. Datamaskiner den gang ble designet for å utføre noen veldig enkle operasjoner, og hvis du ville at disse maskinene skulle kunne gjøre forskjellige ting, måtte du gjøre noen ganske betydelige endringer i maskinvaren.

På begynnelsen av 1970-tallet ga et japansk selskap et ungt amerikansk selskap i oppdrag å utvikle et sett med kretser for å produsere en lavkostkalkulator. Intel viet seg fullt ut til oppgaven, og blant de bestilte kretsene utviklet han en veldig spesiell en, noe som ikke er skapt til dags dato: den første integrerte mikroprosessoren.

Intel 4004 kom på markedet i 1971, det er en kompleks synkron digital maskin, som enhver annen synkron sekvensiell logikkkrets. Fordelen med denne komponenten er imidlertid at den internt huser et sett med digitale kretser som kan utføre vanlige operasjoner for beregning og databehandling, men fra et annet synspunkt: inngangene er en serie veldefinerte koder som tillater operasjoner av en spesifikk art hvis resultat bestemmes av typen operasjon og de involverte operandene.

Sett på denne måten er det ikke noe spesielt med en mikroprosessor; Det underlige er at den riktige kombinasjonen av inngangskoder, deres sekvensielle utførelse, det å være i stand til å hoppe bakover eller forover i sekvensen av koder basert på logiske avgjørelser eller spesifikke kommandoer, lar maskinen utføre et stort antall komplekse operasjoner. , ikke overveid. i de enkle grunnkodene.

I dag er vi vant til systemer med mikroprosessorer, men i det fjerne 1971 var dette en litt annen og til og med skandaløs måte å tenke på, til det punktet at Busicom , selskapet som bestilte brikkene fra Intel, ikke var interessert i oppfinnelsen, så Intel markedsførte det til andre som viste interesse; resten er historie: en enestående revolusjon i menneskehetens teknologiske fremskritt.

Det er logisk å tenke at oppfinnelsen av den integrerte mikroprosessoren ikke var en guddommelig åpenbaring for dens skapere, men var basert på fremskrittene som eksisterte til nå innen digital elektronikk og databehandlingsteorier. Men uten tvil var det halmen som brakk kamelens rygg av den vitenskapelig-tekniske revolusjonen, fordi det tillot utviklingen av uforutsette bruksområder eller akselerasjonen av noen som allerede var på vei.

Nå skal vi begynne å se hvordan en prosessor er laget, det vil ikke være en veldig detaljert forklaring fordi den siden oppfinnelsen har hatt viktige egne revolusjoner, men det er grunnleggende aspekter som ikke har endret seg og som utgjør grunnlaget for enhver mikroprosessor . I figur 'Skjema for en mikrokontroller' kan vi se den typiske strukturen til en mikroprosessor, med dens grunnleggende komponenter, det er klart at ingen ekte prosessor passer nøyaktig til denne strukturen, men likevel lar den oss kjenne til hver av dens grunnleggende elementer og deres innbyrdes forhold.

Records

De er en veldig liten minneplass men nødvendig for enhver mikroprosessor, herfra hentes dataene for ulike operasjoner som resten av prosessorkretsene må utføre. Registre brukes til å lagre resultatene av utførelse av instruksjoner, laste data fra eksternt minne eller lagre det i det.

Selv om viktigheten av poster virker triviell, er den ikke det i det hele tatt. Faktisk er en del av registrene, den som er bestemt til dataene, den som bestemmer en av de viktigste parametrene til enhver mikroprosessor. Når vi hører at en prosessor er 4, 8, 16, 32 eller 64 biter, sikter vi til prosessorer som utfører sine operasjoner med dataregistre av den størrelsen, og selvfølgelig bestemmer dette mange av potensialene til disse maskinene.

Jo større antall biter av prosessordataregistrene er, desto større ytelse når det gjelder datakraft og utførelseshastighet, siden denne parameteren bestemmer kraften som kan inkorporeres i resten av systemkomponentene, for eksempel, Det er ikke fornuftig å ha en 16-bits ALU i en 8-bits prosessor.

En 16-bits prosessor, på den annen side, kan gjøre en 16-bits tillegg i en enkelt maskinsyklus, mens en 8-bits prosessor må utføre flere instruksjoner før du får resultatet, selv om begge prosessorene har samme utførelseshastighet for instruksjonene dine. 16-bits prosessoren vil være raskere fordi den kan utføre samme type oppgaver som en 8-bits prosessor, på kortere tid.

Kontrollenhet

Denne enheten er en av de viktigste i prosessoren, den inneholder den nødvendige logikken for dekoding og utførelse av instruksjonene, styringen av registrene, ALU, bussene og det du ellers vil ha i prosessoren.

Kontrollenheten er et av de grunnleggende elementene som bestemmer ytelsen til prosessoren, siden dens type og struktur bestemmer parametere som type instruksjonssett , utførelseshastighet, maskinsyklustid, type busser den kan ha. avbruddshåndtering og en god del ting mer enn i noen prosessor går til denne blokken.

Selvfølgelig er kontrollenhetene det mest komplekse elementet i en prosessor og er vanligvis delt inn i mindre enheter som jobber sammen. Kontrollenheten grupperer komponenter som dekodingsenheten, utførelsesenheten, hurtigbufferminnekontrollere, busskontrollere , avbruddskontrollere , rørledninger, blant andre elementer, alltid avhengig av type prosessor.

Aritmetisk-logisk enhet (ALU)

Siden prosessorer er kretser som i utgangspunktet utfører logiske og matematiske operasjoner, er en hel enhet dedikert til denne prosessen, med en viss uavhengighet. Det er her addisjonene, subtraksjonene og logiske operasjonene som er typiske for boolsk algebra utføres .

For tiden har denne typen enheter utviklet seg mye, og de mest moderne prosessorene har flere ALU-er, spesialisert på å utføre komplekse operasjoner som flyttalloperasjoner. Faktisk har de i mange tilfeller endret navn til "matematisk koprosessor", selv om dette er et begrep som dukket opp for å navngi en spesiell type prosessor som er direkte koblet til den mer tradisjonelle prosessoren.

Dens innvirkning på ytelsen til prosessoren er også viktig fordi, avhengig av kraften, kan mer eller mindre komplekse oppgaver utføres på svært korte tider, for eksempel flytende kommaberegninger.

Busser

De er kommunikasjonsmidlene som brukes av de forskjellige komponentene i prosessoren for å utveksle informasjon med hverandre, til slutt vil bussene eller en del av dem reflekteres i pinnene til prosessorinnkapslingen.

Når det gjelder mikrokontrollere, er det ikke vanlig at bussene reflekteres i kretsinnkapslingen, siden disse i utgangspunktet er beregnet på generell I/O og systemperiferiutstyr.

Det er tre typer busser:

Instruksjonssett

Selv om det ikke vises i skjemaet, kunne vi ikke la instruksjonssettet stå utenfor forklaringen, fordi dette elementet bestemmer hva prosessoren kan gjøre.

Den definerer de grunnleggende operasjonene som prosessoren kan utføre, som kombinert og organisert danner det vi kjenner som programvare. Settet med instruksjoner er som bokstavene i alfabetet, det grunnleggende elementet i språket, som riktig organisert lar deg skrive ord, setninger og hvilket program du tenker på.

Det er to grunnleggende typer instruksjonssett, som bestemmer arkitekturen til prosessoren: CISC og RISC.

CISC står for Complex Instruction Set Computing . CISC-mikroprosessorer har et sett med instruksjoner som kjennetegnes ved å være svært brede og som gjør det mulig å utføre komplekse operasjoner mellom operander plassert i minnet eller i interne registre. Denne typen repertoar gjør det vanskelig å parallellisere instruksjoner, så i dag konverterer de fleste høyytelses CISC-systemer komplekse instruksjoner til flere enkle RISC-lignende instruksjoner, vanligvis kalt mikroinstruksjoner.

Innenfor CISC-mikrokontrollerne kan vi finne de populære Intel 8051- og Z80-familiene, selv om det for tiden finnes CISC-RISC-versjoner av disse mikrokontrollerne, som tar sikte på å dra nytte av RISC-prosessorer og samtidig opprettholde bakoverkompatibilitet med instruksjonene.

RISC , fra det engelske Reduced Instruction Set Computer , Computer with Reduced Instruction Set. Den fokuserer på å skaffe prosessorer med følgende grunnleggende egenskaper:

En av de mest bemerkelsesverdige egenskapene til denne typen prosessorer er at de muliggjør parallellitet i utførelse, og reduserer minnetilgang. Det er derfor de mest moderne prosessorene, tradisjonelt basert på CISC-arkitekturer, implementerer CISC-instruksjonsoversettelsesmekanismer til RISC, for å dra nytte av denne typen prosessorer.

PIC mikrokontroller-prosessorer er av typen RISC.

Minne

Tidligere har man sett at minnet i mikrokontrollere må være plassert i samme pakke, dette er tilfellet mesteparten av tiden, fordi den grunnleggende ideen er å holde hoveddelen av systemkretsene innenfor en enkelt integrert brikke.

I mikrokontrollere er det ikke rikelig med minne, her finner du ikke Gigabyte med minne som i personlige datamaskiner. Vanligvis vil programminnet ikke overstige 16 K-plasseringer av ikke-flyktig minne (flash eller eprom) for å holde programmene.

RAM-minne brukes til å lagre midlertidig informasjon som skal brukes av prosessoren til å utføre beregninger eller andre typer logiske operasjoner. I adresserommet til RAM-minnet er arbeidsregistrene til prosessoren og konfigurasjons- og arbeidsregistrene til de forskjellige periferienhetene til mikrokontrolleren også plassert. Det er derfor i de fleste tilfeller, selv om det er et adresseområde av en viss størrelse, er mengden RAM som er tilgjengelig for programmereren for å lagre dataene, mindre enn det som prosessoren kan adressere.

Den typen minne som brukes i RAM-minnene til mikrokontrollere er SRAM, som unngår å måtte implementere oppdateringssystemer som i tilfellet med personlige datamaskiner, som bruker en stor mengde minne, vanligvis noe DRAM-teknologi. Selv om SRAM er dyrere enn DRAM, er det riktig type for mikrokontrollere fordi mikrokontrollere har små mengder RAM.

Når det gjelder programminne, brukes ulike teknologier, og bruken av den ene eller den andre avhenger av egenskapene til applikasjonen som skal utvikles.De fem eksisterende teknologiene, som er eller har vært mest brukt, er beskrevet nedenfor:

Mikrokontrollere med OTP-minne kan bare programmeres én gang, med en slags programmerer. De brukes i systemer der programmet ikke krever fremtidige oppdateringer og for relativt små serier, hvor maskevarianten er svært kostbar, også for systemer som krever dataserialisering, lagret som konstanter i programminnet. De er produsert på denne måten fordi EPROM-minnet er omprogrammerbart, men først må det slettes, og for dette må det eksponeres for en ultrafiolett lyskilde , opptaksprosessen ligner den som brukes for OTP-minner. Med fremkomsten av rimeligere og mer fleksible teknologier, som EEPROM- og FLASH-minne, har denne typen minne gått ut av bruk, og brukes i systemer som krever programoppdateringer og for utviklings- og finjusteringsprosesser. Ved å senke pakkekostnadene ble mikrokontrollere med denne typen minne billigere og mer praktiske å jobbe med enn tilsvarende med EPROM-minne. Et annet bemerkelsesverdig trekk ved denne typen mikrokontrollere er at det var i dem programmeringssystemene begynte å bli brukt i systemet som unngår å måtte fjerne mikrokontrolleren fra kortet som inneholder den for å gjøre oppdateringer til programmet. I tillegg til fordelene med flash-minne er dens høye tetthet sammenlignet med forgjengerne, som gjør det mulig å øke mengden programminne til en svært lav kostnad. De kan også programmeres med de samme mikrokontrollernes strømforsyningsspenninger, lesetilgang og programmeringshastighet er høyere, lavere produksjonskostnader, blant annet.

Det vanligste er å finne at program- og dataminnet er plassert inne i mikrokontrolleren, faktisk er det for tiden få mikrokontrollere som lar programminne kobles til utenfor pakken. Årsakene til disse "begrensningene" er gitt fordi det grunnleggende målet er å oppnå størst mulig integrasjon og tilkobling av eksterne minner bruker I/O-linjer som er en av de mest dyrebare ressursene til mikrokontrollere.

Til tross for ovennevnte er det familier som Intel 8051 hvis mikrokontrollere har muligheten til å utvides i et bredt spekter av konfigurasjoner for bruk av eksternt programminne. Når det gjelder PIC-er, er disse mulighetene begrenset til kun noen avanserte mikrokontrollere, figur 5 viser noen av konfigurasjonene for programminne som vi kan finne i mikrokontrollere. Konfigurasjon (a) er typisk og finnes i nesten 100 % av mikrokontrollerne. Konfigurasjon (b) er sjelden og oppnås vanligvis ved å konfigurere mikrokontrolleren for å ofre internt programminne, men Intel 8031 ​​er en mikrokontroller uten internt programminne. Konfigurasjon (c) er den som vanligvis finnes i mikrokontrollere som har muligheter til å utvide programminnet som noen avanserte PIC-er.

Når det er nødvendig å øke mengden dataminne, er det vanligste å plassere eksterne minneenheter i form av periferiutstyr, på denne måten kan RAM, FLASH-minner eller til og med harddisker som de til personlige datamaskiner brukes, mens for beregninger og andre operasjoner som krever midlertidig lagring av data, brukes det interne RAM-minnet til mikrokontrolleren. Denne måten å utvide dataminnet på er i de fleste tilfeller bestemt av typen instruksjonsrepertoar til prosessoren og fordi den tillater et stort antall forskjellige konfigurasjoner, i tillegg til den påfølgende lagringen av I/O-linjer som oppnås. bruk av minner med serielle kommunikasjonsbusser.

Avbrudd

Avbrudd er i hovedsak subrutineanrop generert av fysiske enheter, i motsetning til vanlige subrutiner i et program som kjører. Siden subrutinehoppet ikke er en del av tråden eller den planlagte utførelsessekvensen, lagrer kontrolleren tilstanden til prosessoren i minnestakken og går inn for å utføre en spesiell kode kalt en "avbruddsbehandler" som ivaretar den spesifikke periferen som genererte avbruddet ... På slutten av rutinen forteller en spesiell instruksjon prosessoren slutten av avbruddstjenesten. I det øyeblikket gjenoppretter kontrolleren den forrige tilstanden, og programmet som ble kjørt før avbruddet fortsetter som om ingenting hadde skjedd. Rutiner for avbruddsservice bør være så korte som mulig for tilfredsstillende systemytelse, fordi normalt når et avbrudd betjenes, venter alle andre avbrudd.

Tenk deg at du venter besøk av en venn, som vi vil kalle Juan. Du og Juan har blitt enige om at når han kommer hjem vil han vente tålmodig på at du skal åpne døren. Juan burde ikke banke på døren fordi noen i huset sover og han vil ikke bli vekket.

Nå har du bestemt deg for å lese en bok mens du venter på at Juan skal komme hjem, og for å sjekke om han har kommet, av og til slutter du å lese, markerer siden der du slapp, reis deg og gå til døren, åpne den og sjekk om Juan har kommet, hvis Juan ennå ikke er ved døren, vil han vente noen minutter, lukke døren og gå tilbake til lesingen en stund.

Som du vil se, er dette en ineffektiv metode for å vente på Juan fordi det krever at du forlater lesingen av og til og går til døren for å sjekke om han har kommet, og du må også vente en stund hvis han fortsatt ikke kommer. . Og som om det ikke var nok, forestill deg at Juan aldri kommer fordi det oppsto et problem, han måtte avlyse avtalen og kunne ikke varsle deg i tide, eller enda verre, at Juan har kommet til døren et øyeblikk etter at du lukket den. Juan, som respekterer det avtalte, venter en stund, men han blir lei av å vente på at døren skal åpne seg og bestemmer seg for å gå fordi han tror at du ikke lenger er hjemme eller ikke kan hjelpe deg. Vi vil kalle denne metoden for å håndtere Juans ankomst for en undersøkelse.

La oss nå se på en annen metode. Denne gangen legger han seg rett og slett ned på sofaen i stua og begynner å lese boken sin, når Juan kommer må han ringe på døren og vente noen øyeblikk på å bli tilstede. Når du hører at klokken ringer, slutter du å lese, markerer siden der du slapp, og går til døren for å svare den som ringer. Når Juan eller personen som ringte på klokken går, går du tilbake til setet ditt og fortsetter å lese der du slapp. Sistnevnte er en mer effektiv metode enn førstnevnte fordi den gir deg mer tid til å lese og eliminerer ulemper som at John aldri kommer eller går før du svarer på døren. Det er i prinsippet en enkel, men veldig effektiv og effektiv metode, vi vil gjøre oppmerksom på den ved avbrudd.

Den første av disse, undersøkelsen, er en effektiv metode, men den er ikke særlig effektiv fordi den krever konstante og ofte unødvendige avlesninger av tilstanden til prosessen vi ønsker å ivareta. Imidlertid er den mye brukt i mikrokontrollerprogrammering fordi den er lett å lære, implementeringen av kode med denne metoden er mindre kompleks, og den krever ikke spesiell maskinvare for å utføre den. På den annen side har undersøkelsen mange mangler som ofte tvinger designeren til å bevege seg mot andre horisonter.

Verden er full av situasjoner; hvorav vi ikke kan fastslå når, hvordan eller hvorfor de oppstår, i de fleste tilfeller er det eneste vi kan gjøre å finne ut at en bestemt situasjon, knyttet til en prosess, har oppstått. For dette velger vi en tilstand eller gruppe av forhold som indikerer at prosessen som interesserer oss må ivaretas, dette fenomenet, der de forholdene som vi er interessert i å vite oppstår, vil vi kalle det en hendelse. I det andre eksemplet ser vi at for å ivareta Juan, må han ringe på klokken, derfor er ankomsten av Juan prosessen vi må ivareta, og lyden av klokken er hendelsen som indikerer at Juan har ankommet.

Metoden for oppmerksomhet til prosesser ved avbrudd, sett fra perspektivet til eksemplet jeg brukte for å vise den, er enklere enn den i undersøkelsen, men det er ikke sant, metoden er komplisert fordi den krever at mikroprosessoren inkorporerer ytterligere kretser for å registrere hendelsene som forteller deg å ta hensyn til den tilhørende prosessen og å forstå disse kretsene og deres dynamikk er ikke en lett oppgave.

Kretsene for oppmerksomhet på avbrudd og alle oppgavene som prosessoren må utføre for å ivareta prosessen som avbryter den er ganske komplekse og krever et annet syn på vår verden enn vi er vant til.

Mennesker er ikke klar over avbrudd, i kroppen vår er det mekanismer som hele tiden avbryter oss, for dette har vi vårt sansesystem, men vi er ikke klar over avbruddsprosessen, selv om vi er klar over avbruddene. Det er fordi vi inkorporerer mekanismer som raskt tar oss ut av oppgaven vi gjør for å håndtere en situasjon som ikke kan eller bør vente lenge. Vel, det er den samme ideen som er innlemmet i mikroprosessorer for å ivareta prosesser som ikke kan vente eller som vi ikke vet når de bør ivaretas fordi det avhenger av visse forhold.

Ting blir komplisert i rekkefølgen av handlinger som skal utføres fra det øyeblikket avbruddsprosessen utløses, til programmet som tar seg av den blir utført, og i handlingssekvensen etter oppmerksomheten. Tenk på hvor mange ting kroppen din må gjøre i møte med en avbrudd, la oss bruke det andre eksemplet for å ivareta Juans ankomst. Tenk på hvor mange ting hjernen din gjør bak den bevisste bevisstheten din, fra det øyeblikket dørklokken ringer til du er klar (vitende om at John sannsynligvis kommer) til å åpne døren, og alt hjernen din må jobbe for å gjenoppta lesingen etter at Juan har venstre. Vi gjør alt dette, bortsett fra å åpne døren og ivareta Juan, på en "ubevisst" måte fordi vi har dedikerte systemer i kroppen vår, men i mikrokontrollernes verden må vi kjenne alle disse detaljene for å kunne bruke avbryte mekanismer.

Avbruddsoppmerksomhetsprosesser har fordelen at de implementeres av maskinvare plassert i prosessoren, så det er en rask metode for å få prosessoren til å dedikere seg til å utføre et spesielt program for å ivareta hendelser som ikke kan vente på grunn av langsomme mekanismer som undersøkelse

Generelt sett har en avbruddsprosess, og dens oppmerksomhet fra prosessoren, følgende handlingssekvens:

  1. I den virkelige verden inntreffer hendelsen som vi ønsker at prosessoren skal utføre et spesielt program for. Denne prosessen har den egenskapen at den ikke kan vente lenge før den blir ivaretatt eller vi vet ikke når den skal ivaretas.
  2. Kretsen som er ansvarlig for å oppdage forekomsten av hendelsen aktiveres, og som en konsekvens aktiverer den prosessorens avbruddsinngang.
  3. Kontrollenheten oppdager at et avbrudd har oppstått og "heiser" et flagg for å registrere denne situasjonen; På denne måten, hvis forholdene som forårsaket hendelsen forsvinner og kretsen som har ansvaret for å oppdage den deaktiverer prosessorens avbruddsinngang, vil det oppstå uansett, fordi den er registrert.
  4. Utførelsesenheten avsluttes med den gjeldende instruksen og rett før man begynner å utføre den neste, sjekker den at det er registrert et avbrudd.
  5. En prosess utløses som gjør at den nåværende tilstanden til programmet som kjøres kan lagres og hoppe til en spesiell programminneadresse, der den første instruksjonen til avbruddsoppmerksomhetssubrutinen er lokalisert.
  6. Avbruddsoppmerksomhetskoden utføres, dette er den "bevisste" delen av hele prosessen fordi det er der handlingene til avbruddsoppmerksomheten utføres og programmereren spiller sin rolle.
  7. Når returinstruksjonen utføres i avbruddstjenestesubrutinen, utløses prosessen med å gjenopprette prosessoren til tilstanden den var i før avbruddstjenesten.

Som vi kan se, er avbruddsmekanismen ganske komplisert, men den har to fordeler som krever implementering: hastighet og dens evne til å være asynkron. Begge sammen lar oss dra full nytte av arbeidskapasiteten til prosessoren vår.

Avbruddsmekanismer brukes ikke bare til å håndtere hendelser knyttet til prosesser som krever umiddelbar oppmerksomhet, men de brukes også til å håndtere hendelser fra asynkrone prosesser.

Avbrudd er så effektive at de lar prosessoren oppføre seg som om den gjør flere ting samtidig, mens den faktisk er engasjert i den samme gamle rutinen, og utfører instruksjoner etter hverandre.

Periferiutstyr

Når vi ser på den grunnleggende organiseringen av en mikrokontroller, merker vi at et sett med periferiutstyr er plassert i den. Nedenfor vil vi beskrive noen av de eksterne enhetene som vi oftest vil finne i mikrokontrollere.

Generelle innganger og utganger

Også kjent som I/O-porter, vanligvis gruppert i porter med 8 bits lengde, de lar data leses fra utsiden eller skrives til dem fra innsiden av mikrokontrolleren, det vanlige målet er å jobbe med enkle enheter som releer, lysdioder , eller noe annet programmereren kommer på.

Noen I/O-porter har spesielle funksjoner som lar dem drive utganger med visse strømkrav, eller innlemme spesielle avbruddsmekanismer for prosessoren.

Vanligvis kan en hvilken som helst I/O-pinne betraktes som generell I/O, men siden mikrokontrollere ikke kan ha uendelige pinner, eller til og med alle pinnene vi ønsker, deler generell I/O pinner med andre perifere enheter. For å bruke en pinne med noen av egenskapene som er tildelt den, må vi konfigurere den gjennom registrene som er bestemt for dem.

Tidtakere og tellere

De er synkrone kretser for å telle pulsene som kommer inn i kraften deres for å få klokkeinngangen. Hvis kilden til et stort antall er den interne oscillatoren til mikrokontrolleren, er det vanlig at de ikke har en tilknyttet pinne, og i dette tilfellet fungerer de som tidtakere. På den annen side, når tellekilden er ekstern, så har de en tilhørende pin konfigurert som en inngang, dette er tellemodus.

Tidtakere er en av de vanligste periferienhetene i mikrokontrollere og brukes til mange oppgaver, for eksempel frekvensmåling, implementering av klokker, for å arbeide sammen med andre perifere enheter som krever en stabil tidsbase, blant andre funksjoner. . Det er vanlig at en typisk mikrokontroller har mer enn én timer/teller, og noen har til og med en rekke tellere. Som vi skal se senere, er denne periferen et nesten essensielt element og det er vanlig at det har noen avbrudd knyttet til seg. Typiske telleregisterstørrelser er 8 og 16 biter, og du kan finne enheter som bare har tidtakere av én størrelse eller oftere med begge telleregistertypene.

Analog/digital omformer

Ettersom det er svært vanlig å arbeide med analoge signaler, må disse konverteres til digitale og av denne grunn har mange mikrokontrollere en analog-digital omformer , som brukes til å ta data fra flere forskjellige innganger som velges ved hjelp av en multiplekser.

De vanligste oppløsningene er 8 og 10 bits, som er tilstrekkelig for enkle applikasjoner. For kontroll- og instrumenteringsapplikasjoner er 12bit, 16bit og 24bit oppløsning tilgjengelig. [ 6 ]​ Det er også mulig å koble til en ekstern omformer om nødvendig

Kommunikasjonsporter

Seriell port

Denne periferen er tilstede i nesten hvilken som helst mikrokontroller, vanligvis i form av en UART ( Universal Asynchronous Receiver Transmitter ) eller USART ( Universal Synchronous Asynchronous Receiver Transmitter ) avhengig av om de tillater den synkrone modusen for kommunikasjon.

Det vanlige formålet med denne periferen er kommunikasjon med en annen mikrokontroller eller med en PC, og i de fleste tilfeller må eksterne kretser legges til for å fullføre kommunikasjonsgrensesnittet. Den vanligste måten å fullføre den serielle porten på er å kommunisere med en PC gjennom EIA-232- grensesnittet (bedre kjent som RS-232 ), som er grunnen til at mange omtaler UART eller USART som RS-232-serieporten, men dette er en feil, siden dette periferutstyret kan brukes til å koble sammen enheter gjennom andre kommunikasjonsstandarder. I industrielle applikasjoner brukes RS-485 fortrinnsvis for sin overlegne rekkevidde, hastighet og støymotstand.

SPI

Denne typen periferiutstyr brukes til å kommunisere mikrokontrolleren med andre mikrokontrollere eller med eksterne periferienheter koblet til den, gjennom et veldig enkelt grensesnitt. Det er bare en kontrollernode som lar enhver transaksjon startes, noe som er en ulempe i komplekse systemer, men dens enkelhet tillater direkte galvanisk isolasjon ved hjelp av optokoblere .

I2C

Den fyller de samme funksjonene som SPI, men krever færre kommunikasjonssignaler og enhver node kan starte en transaksjon. Det er mye brukt til å koble grafikkortene til personlige datamaskiner med skjermene, slik at sistnevnte informerer om funksjonene deres og lar videosystemet automatisk konfigureres.

USB

Mikrokontrollere er det som har tillatt eksistensen av dette kommunikasjonssystemet. Det er et system som fungerer ved å polle (overvåke) et sett med intelligente perifere enheter av en master, som vanligvis er en personlig datamaskin. Hver smartmodus styres uunngåelig av en mikrokontroller.

Ethernet

Det er det mest utbredte systemet i verden for kablede lokalnettverk . De kraftigste 32-bits mikrokontrollerne brukes til å implementere periferiutstyr som er kraftig nok til at de kan nås direkte over nettverket. Mange av hjemmeruterne for små bedrifter er bygget rundt en mikrokontroller som fungerer som hjernen i systemet.

Kan

Denne protokollen er av typen CSMA/CD med toleranse for høye spenningsnivåer i fellesmodus og orientert mot sanntid. Denne protokollen er den viktigste standarden i bilindustrien ( OBD ). Den brukes også som det fysiske laget av "feltbussen" for industriell kontroll.

Andre kommunikasjonsporter

Det er et stort antall andre busser tilgjengelig for bilindustrien (linbus) eller audiovisuell industri som i2s, IEEE 1394 . Brukeren vil finne dem når de arbeider i et spesialisert område.

Komparatorer

De er analoge kretser basert på operasjonsforsterkere som har egenskapen til å sammenligne to analoge signaler og sende ut logiske nivåer '0' eller '1' avhengig av resultatet av sammenligningen. Det er en veldig nyttig perifer for å oppdage endringer i inngangssignaler som vi bare er interessert i å vite når den er i et visst spenningsområde.

Pulsbreddemodulator

PWM ( Pulse Width Modulator ) er svært nyttige perifere enheter, spesielt for motorstyring, men det er en gruppe applikasjoner som kan utføres med denne periferen, blant annet kan vi nevne: DC/AC inversjon for UPS , analog digital konvertering D/ A, regulert lysstyring (dimming) bl.a.

Ikke-flyktig dataminne

Mange mikrokontrollere har innlemmet disse typer minne som en ekstra perifer, for lagring av konfigurasjonsdata eller av prosessene som kontrolleres. Dette minnet er uavhengig av dataminnet av RAM-typen eller programminnet, der koden til programmet som skal utføres av mikrokontrollerprosessoren er lagret.

Mange av PIC-mikrokontrollerne inkluderer denne typen minne, typisk i form av EEPROM -minne , noen av dem lar til og med en del av programminnet brukes som ikke-flyktig dataminne, slik at prosessoren har muligheten til å skrive til minnet av programmer som om det bare var en annen perifer.

Mikrokontrollerfamilier

Se også: Vedlegg: Vanlige mikrokontrollere

De vanligste mikrokontrollerne i bruk er:

Virksomhet 8 bit 16 bit 32 bit
Atmel AVR (mega og bittesmå) , 89Sxxxx lignende familie 8051 SAM7 (ARM7TDMI) , SAM3 (ARM Cortex-M3) , SAM9 (ARM926) , AVR32
Freescale
(tidligere Motorola )
68HC05 , 68HC08 , 68HC11 , HCS08 68HC12 , 68HCS12 , 68HCSX12 , 68HC16 683xx , PowerPC , ColdFire
Holtek HT8
Intel MCS-48 (8048-familie)
MCS51 (8051-familie)
8xC251
MCS96 , MXS296 x
National Semiconductor COP8 x x
mikrobrikke Familie 10f2xx Familie 12Cxx Familie 12Fxx, 16Cxx og 16Fxx 18Cxx og 18Fxx PIC24F, PIC24H og dsPIC30FXX, dsPIC33F med integrert dsp-motor PIC32
NXP Semiconductors
(tidligere Philips )
80C51 TIL Cortex-M3, Cortex-M0, ARM7, ARM9
Renesas
(tidligere Hitachi, Mitsubishi og NEC)
78K , H8 H8S , 78K0R , R8C , R32C/M32C/M16C RX , V850 , SuperH , SH-Mobile , H8SX
STMicroelectronics ST62 , ST7 STM32 (ARM7)
Texas Instruments TMS370 MSP430 C2000, Cortex-M3 (ARM), TMS570 (ARM)
Zilog Z8 , Z86E02

Merknad : Noen mikrokontrollerarkitekturer er tilgjengelige fra så mange leverandører og i så mange varianter at de helt riktig kan ha sin egen kategori. Blant dem finner vi hovedsakelig variantene av Intel 8051 og Z80 .

Se også

Referanser

  1. Vienna University of Technology, Introduction To Microcontrollers (Gunther Gridling, Bettina Weiss), 26. februar 2007
  2. ^ Augarten, Stan (1983). Den mest brukte datamaskinen på en brikke: TMS 1000 . State of the Art: A Photographic History of the Integrated Circuit. New Haven og New York: Ticknor & Fields. ISBN  0-89919-195-9 . Hentet 2. mars 2012 . 
  3. a b https://web.archive.org/web/20120619154428/http://archive.computerhistory.org/resources/access/text/Oral_History/102658328.05.01.acc.pdf Oral History Panel on the Development and Promotion av Intel 8048 Microcontroller , Computer History Museum oral history, 2008, hentet 28. juni 2011, side 4
  4. http://microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2018&mcparam=en013082
  5. "Atmel's Self-Programming Flash Microcontrollers" av Odd Jostein Svendsli 2003
  6. "analoge" mikrokontrollere