Enkelkorts mikrokontroller
En enkortsmikrokontroller är en mikrokontroller byggd på ett enda tryckt kretskort . Detta kort tillhandahåller alla kretsar som behövs för en användbar kontrolluppgift: en mikroprocessor , I/O-kretsar , en klockgenerator , RAM , lagrat programminne och alla nödvändiga stöd- IC :er . Avsikten är att kortet är omedelbart användbart för en applikationsutvecklare, utan att de behöver lägga tid och ansträngning på att utveckla styrenhetshårdvara.
Eftersom de vanligtvis är låga kostnader och har en särskilt låg kapitalkostnad för utveckling, har enkortsmikrokontroller länge varit populära inom utbildning. De är också ett populärt sätt för utvecklare att få praktisk erfarenhet av en ny processorfamilj.
Ursprung
Enkelkortsmikrokontroller dök upp i slutet av 1970-talet, när uppkomsten av tidiga mikroprocessorer, som 6502 och Z80 , gjorde det praktiskt att bygga en hel kontroller på ett enda kort, samt överkomligt att dedikera en dator till en relativt liten uppgift.
I mars 1976 tillkännagav Intel en enkortsdatorprodukt som integrerade alla stödkomponenter som krävs för deras 8080 mikroprocessor, tillsammans med 1 kilobyte RAM, 4 kilobyte användarprogrammerbar ROM och 48 rader parallell digital I/O med linjeförare. Kortet erbjöd även expansion genom en busskontakt, men kunde användas utan expansionskortbur när applikationer inte krävde ytterligare hårdvara. Mjukvaruutveckling för detta system var värd på Intels Intellec MDS mikrodatorutvecklingssystem; detta gav assembler- och PL/M- stöd och tillät in-circuit-emulering för felsökning.
Processorer från den här eran krävde att ett antal stödchips inkluderades utanför processorn. RAM och EPROM var separata, vilket ofta krävde minneshantering eller uppdateringskretsar för dynamiskt minne . I/O-bearbetning kan ha utförts av ett enda chip, såsom 8255 , men krävde ofta flera fler chip.
En enkortsmikrokontroller skiljer sig från en enkortsdator genom att den saknar det allmänna användargränssnittet och masslagringsgränssnitt som en mer allmänt ändamålsenlig dator skulle ha. Jämfört med ett mikroprocessorutvecklingskort skulle ett mikrokontrollerkort betona digitala och analoga styrsammankopplingar till något kontrollerat system, medan ett utvecklingskort kan ha bara ett fåtal eller inga diskreta eller analoga in-/utgångsenheter. Utvecklingskortet finns för att visa upp eller träna på någon speciell processorfamilj och därför är intern implementering viktigare än extern funktion.
Intern buss
Bussen för de tidiga enkelkortsenheterna, såsom Z80 och 6502 , var universellt en Von Neumann-arkitektur . Program- och dataminne nåddes via samma delade buss, trots att de lagrades i fundamentalt olika typer av minne: ROM för program och RAM för data. Denna bussarkitektur behövdes för att spara på antalet stift som behövs från de begränsade 40 tillgängliga för processorns allestädes närvarande dual-in-line IC-paket.
Det var vanligt att erbjuda tillgång till den interna bussen genom en expansionskontakt, eller åtminstone ge plats för en kontakt att lödas på. Detta var ett lågkostnadsalternativ och erbjöd potential för expansion, även om det sällan användes. Typiska expansioner skulle vara I/O-enheter eller extra minne. Det var ovanligt att lägga till kringutrustning som band- eller disklagring, eller en CRT-skärm
Senare, när mikrokontroller med ett chip , såsom 8048 , blev tillgängliga, behövde bussen inte längre exponeras utanför paketet, eftersom allt nödvändigt minne kunde tillhandahållas i chippaketet. Denna generation av processorer använde en Harvard-arkitektur med separata program- och databussar, båda interna i chippet. Många av dessa processorer använde en modifierad Harvard-arkitektur , där viss skrivåtkomst var möjlig till programdatautrymmet, vilket möjliggjorde in-circuit-programmering. Ingen av dessa processorer krävde, eller stödde, en Harvard-buss över en enkortsmikrokontroller. användes en dedikerad I/O-buss, såsom I²C , 1-Wire eller olika seriella bussar .
Extern bussutbyggnad
Vissa mikrokontrollerkort som använder en mikroprocessor för allmänt bruk kan föra processorns adress och databussen till en expansionskontakt, vilket gör att ytterligare minne eller kringutrustning kan läggas till. Detta tillhandahåller resurser som inte redan finns på systemet med enkort. Eftersom inte alla system kommer att kräva expansion, kan kontakten vara valfri, med en monteringsposition som tillhandahålls för installation av användaren om så önskas.
Ingång och utgång
Mikrokontrollersystem tillhandahåller flera former av in- och utsignaler för att tillåta applikationsprogramvara att styra ett externt "verkliga" system. Diskret digital I/O ger en enda bit data (på eller av). Analoga signaler, som representerar ett kontinuerligt variabelt område, såsom temperatur eller tryck, kan också vara in- och utgångar för mikrokontroller.
Diskreta digitala in- och utgångar kan buffras från mikroprocessorns databussen endast med en adresserbar spärr, eller kan drivas av en specialiserad in-/utgångs-IC, såsom en Intel 8255 eller Motorola 6821 parallell in-/utgångsadapter . Senare enchips mikrokontroller har in- och utgångsstift tillgängliga. Dessa in-/utgångskretsar ger vanligtvis inte tillräckligt med ström för att direkt driva enheter som lampor eller motorer, så halvledarreläer drivs av mikrokontrollerns digitala utgångar, och ingångar är isolerade av nivåförskjutning och skyddskretsar för signalkonditionering .
En eller flera analoga ingångar, med en analog multiplexor och en vanlig analog-till-digital-omvandlare , finns på vissa mikrokontrollerkort. Analoga utgångar kan använda en digital-till-analog-omvandlare eller, på vissa mikrokontroller, kan styras av pulsbreddsmodulering . För diskreta ingångar kan externa kretsar krävas för att skala ingångar eller för att tillhandahålla funktioner som bryggexcitering eller kallövergångskompensation .
För att kontrollera komponentkostnaderna utformades många kort med extra hårdvarugränssnittskretsar men utan komponenterna för dessa kretsar installerade, vilket lämnade kortet blott. Kretsen lades till som tillval vid leverans, eller kunde fyllas i senare.
Det är vanligt att tavlor inkluderar "prototypytor", områden på tavlan som är utlagda som ett lödbart breadboardområde med bussen och kraftskenor tillgängliga, men utan en definierad krets. Flera kontroller, särskilt de som är avsedda för träning, inkluderar också en pluggbar, återanvändbar breadboard för enkel prototypframställning av extra I/O-kretsar som kan ändras eller tas bort för senare projekt.
Kommunikation och användargränssnitt
Kommunikationsgränssnitten varierar beroende på mikrokontrollersystemets ålder. Tidiga system kan implementera en seriell port för att tillhandahålla RS-232 eller strömslinga . Serieporten kan användas av applikationsprogrammet eller kan användas, tillsammans med ett monitor-ROM, för att överföra program till mikrokontrollerns minne. Nuvarande mikrokontroller kan stödja USB , trådlösa nätverk ( Wi-Fi , Zigbee eller andra) eller tillhandahålla en Ethernet-anslutning. Dessutom kan de stödja en TCP/IP- protokollstack. Vissa enheter har firmware tillgänglig för att implementera en webbserver, vilket gör att en applikationsutvecklare snabbt kan bygga ett webbaktiverat instrument eller system.
Programmering
Många tidiga system hade inga interna faciliteter för programmering och förlitade sig på ett separat "värdsystem" för denna uppgift. Denna programmering gjordes vanligtvis i assemblerspråk , eller ibland i C eller PL/M , och korsmonterades eller korskompilerades sedan på värden. Vissa enkortsmikrokontroller stöder ett BASIC-språksystem, vilket gör att program kan utvecklas på målhårdvaran. Hosted utveckling tillåter all lagring och kringutrustning för en stationär dator att användas, vilket ger en kraftfullare utvecklingsmiljö.
EPROM-bränning
Tidiga mikrokontroller förlitade sig på raderbart programmerbart läsminne (EPROM) för att hålla applikationsprogrammet. Objektkoden från ett värdsystem skulle "brännas" på ett EPROM med en EPROM - programmerare . Denna EPROM ansluts sedan fysiskt till kortet. Eftersom EPROM skulle tas bort och ersättas många gånger under programutvecklingen, var det vanligt att tillhandahålla ett ZIF- uttag för att undvika slitage eller skador. Att radera ett EPROM med ett UV- radergummi tar avsevärd tid, och därför var det också vanligt att en utvecklare hade flera EPROM i omlopp samtidigt.
Vissa mikrokontroller-enheter var tillgängliga med inbyggd EPROM. Dessa skulle också programmeras i en separat brännare och sedan sättas in i ett uttag på målsystemet.
Användningen av EPROM-sockets möjliggjorde fältuppdateringar av applikationsprogrammet, antingen för att fixa fel eller för att tillhandahålla uppdaterade funktioner.
Knappsatsmonitorer
När enkortskontrollern utgjorde hela utvecklingsmiljön (vanligtvis inom utbildning), kan kortet också ha inkluderat en enkel hexadecimal knappsats, kalkylatorliknande LED-display och ett "monitor"-program som är permanent inställt i ROM. Denna monitor gjorde det möjligt maskinkodsprogram direkt via tangentbordet och hållas i RAM. Dessa program var i maskinkod, inte ens på assemblerspråk, och sattes ofta ihop för hand på papper innan de matades in. Det kan diskuteras vilken process som var mer tidskrävande och felbenägen: montering för hand eller tangentbord byte-för-byte.
Enkorts "tangentbord och miniräknare display" mikrokontroller av denna typ var mycket lika vissa low-end mikrodatorer på den tiden, såsom KIM- 1 eller Microprofessor I. Vissa av dessa mikroprocessor-"tränarsystem" är fortfarande i produktion idag och används som mycket billiga introduktioner till mikroprocessorer på hårdvaruprogrammeringsnivå.
Hosted utveckling
När stationära persondatorer dök upp, först CP/M eller Apple II , sedan IBM PC och kompatibla datorer, skedde en övergång till värdutveckling. Hårdvaran var nu billigare och RAM-kapaciteten hade utökats så att det var möjligt att ladda ner programmet genom serieporten och hålla det i RAM. Denna massiva minskning av cykeltiden för att testa en ny version av ett program gav en lika stor ökning av utvecklingshastigheten.
Detta programminne var fortfarande flyktigt och skulle gå förlorat om strömmen försvann. Flash-minne var ännu inte tillgängligt till ett rimligt pris. Eftersom ett avslutat controllerprojekt vanligtvis krävdes att vara icke-flyktigt, var det sista steget i ett projekt ofta att bränna det till ett EPROM.
Enkelchips mikrokontroller
Enkelchips mikrokontroller, som Intel 8748 , kombinerade många av funktionerna hos tidigare kort till ett enda IC-paket. Enkelchips mikrokontroller integrerar minne (både RAM och ROM) på paketet och behöver därför inte exponera data- och adressbussen genom stiften på IC-paketet. Dessa stift är sedan tillgängliga för I/O-linjer. Dessa ändringar minskar också den yta som krävs på kretskortet och förenklar designen av enkortsmikrokontrollern. Exempel på mikrokontroller med ett chip:
Programminne
För produktionsanvändning som inbyggda system var det inbyggda ROM -minnet antingen maskprogrammerat på chipfabriken eller engångsprogrammerat (OTP) av utvecklaren som en PROM . PROMs använde ofta samma UV EPROM-teknik för chipet, men i en billigare förpackning utan det genomskinliga raderingsfönstret. Under programutvecklingen var det fortfarande nödvändigt att bränna EPROM. I det här fallet skulle hela styrenhetens IC, och därför ZIF- socklarna, tillhandahållas.
Med utvecklingen av prisvärda EEPROM och flashminne blev det praktiskt att fästa styrenheten permanent på kortet och ladda ner programkod från en värddator via en seriell anslutning. Detta kallades " in-circuit programmering ". Radering av gamla program utfördes genom att antingen skriva över dem med en ny nedladdning eller massradera dem elektriskt (för EEPROM ). Den senare metoden var långsammare, men kunde utföras på plats.
Styrkortets huvudfunktion var då att bära stödkretsarna för detta seriella eller, på senare kort, USB- gränssnitt. Som en ytterligare bekvämlighet under utvecklingen hade många kort även lågkostnadsfunktioner som LED-monitorer för I/O-linjerna eller återställningsswitchar monterade ombord.
Enkelkortsmikrokontroller idag
Det är nu billigt och enkelt att designa kretskort för mikrokontroller. Utvecklingsvärdsystem är också billiga, särskilt när man använder programvara med öppen källkod . Programmeringsspråk på högre nivå abstraherar detaljer om hårdvaran, vilket gör skillnader mellan specifika processorer mindre uppenbara för applikationsprogrammeraren. Omskrivbart flashminne har ersatt långsamma programmeringscykler, åtminstone under programutvecklingen. Följaktligen är nästan all utveckling nu baserad på korskompilering från persondatorer och program laddas ner till styrkortet via ett seriellt gränssnitt, som vanligtvis uppträder för värden som en USB-enhet.
Den ursprungliga marknadens efterfrågan på en förenklad kortimplementering är inte längre lika relevant för mikrokontroller. Enkelkortsmikrokontroller är fortfarande viktiga, men har flyttat fokus till:
- Lätttillgängliga plattformar riktade till traditionellt "icke-programmerare" grupper, såsom konstnärer, designers, hobbyister och andra som är intresserade av att skapa interaktiva objekt eller miljöer. Några typiska projekt under 2011 inkluderade: reservstyrning av DMX-scenljus och specialeffekter, kontroll av flera kamera, autonoma stridsrobotar, styrning av bluetooth-projekt från en dator eller smart telefon, lysdioder och multiplexering, skärmar, ljud, motorer, mekanik och maktkontroll. Dessa kontroller kan vara inbäddade för att utgöra en del av ett fysiskt datorprojekt . Populära val för detta arbete är Arduino , Dwengo eller Wiring .
- Teknikdemonstrationskort för innovativa processorer eller kringutrustning:
Se även
- Jämförelse av enkortsmikrokontroller
- Utvecklingskort för mikroprocessorer
- Inbyggda system
- Programmerbar logisk styrenhet
- Arduino
- Gör Controller Kit
- PICAXE
- BASIC-stämpel
- Raspberry Pi
- Asus Tinker Board
- Tinkerforge