microcontroller

Raspberry pi microcontroller

Een microcontroller (MCU voor microcontroller-eenheid) is een kleine computer op een enkele metaaloxide-halfgeleider (MOS) chip met geïntegreerde schakeling (IC). In moderne terminologie is het vergelijkbaar met, maar minder geavanceerd dan, een systeem op een chip (SoC); een SoC kan een microcontroller als een van de componenten bevatten. Een microcontroller bevat een of meer CPU’s (processorcores) samen met geheugen en programmeerbare input / output-randapparatuur. Programmageheugen in de vorm van ferro-elektrisch RAM, NOR-flash of OTP ROM wordt ook vaak op de chip meegeleverd, evenals een kleine hoeveelheid RAM. Microcontrollers zijn ontworpen voor embedded toepassingen, in tegenstelling tot de microprocessors die worden gebruikt in personal computers of andere algemene toepassingen die uit verschillende afzonderlijke chips bestaan.

Microcontrollers worden gebruikt in automatisch bestuurde producten en apparaten, zoals motorbesturingssystemen van auto’s, implanteerbare medische apparaten, afstandsbedieningen, kantoormachines, apparaten, elektrisch gereedschap, speelgoed en andere embedded systemen. Door de omvang en de kosten te verminderen in vergelijking met een ontwerp dat gebruikmaakt van een afzonderlijke microprocessor, geheugen en invoer- / uitvoerapparaten, maken microcontrollers het zuinig om nog meer apparaten en processen digitaal te besturen. Microcontrollers met gemengde signalen komen vaak voor en integreren analoge componenten die nodig zijn om niet-digitale elektronische systemen te besturen. In de context van het internet der dingen zijn microcontrollers een economisch en populair middel voor het verzamelen van gegevens, het detecteren en bedienen van de fysieke wereld als randapparatuur.

Sommige microcontrollers gebruiken woorden van vier bits en werken met frequenties zo laag als 4 kHz, voor een laag stroomverbruik (milliwatts of microwatts met één cijfer). Ze hebben over het algemeen de mogelijkheid om functionaliteit te behouden tijdens het wachten op een gebeurtenis zoals een druk op de knop of een andere onderbreking; het stroomverbruik tijdens het slapen (CPU-klok en de meeste randapparatuur uit) kan slechts nanowatt zijn, waardoor veel van hen zeer geschikt zijn voor langdurige batterijtoepassingen. Andere microcontrollers kunnen prestatiekritische rollen vervullen, waarbij ze mogelijk meer als een digitale signaalprocessor (DSP) moeten werken, met hogere kloksnelheden en stroomverbruik.

Embedded design

Een microcontroller kan worden beschouwd als een op zichzelf staand systeem met een processor, geheugen en randapparatuur en kan worden gebruikt als ingebed systeem. De meeste microcontrollers die tegenwoordig worden gebruikt, zijn ingebed in andere machines, zoals auto’s, telefoons, apparaten en randapparatuur voor computersystemen.

Hoewel sommige embedded systemen zeer geavanceerd zijn, hebben veel minimale vereisten voor geheugen en programmalengte, zonder besturingssysteem, en lage softwarecomplexiteit. Typische invoer- en uitvoerapparaten zijn schakelaars, relais, solenoïdes, LED’s, kleine of aangepaste LCD-schermen, radiofrequentieapparaten en sensoren voor gegevens zoals temperatuur, vochtigheid, lichtniveau enz. Ingebedde systemen hebben meestal geen toetsenbord, scherm, schijven , printers of andere herkenbare I / O-apparaten van een personal computer, en het kan zijn dat er geen apparaten voor menselijke interactie zijn.

Interrupts

Microcontrollers moeten realtime (voorspelbaar, maar niet noodzakelijk snel) reageren op gebeurtenissen in het embedded systeem dat ze besturen. Wanneer bepaalde gebeurtenissen plaatsvinden, kan een onderbrekingssysteem de processor een signaal geven om de verwerking van de huidige instructiereeks te onderbreken en om een ​​onderbrekingsserviceroutine (ISR of “interrupt handler”) te starten, die elke vereiste verwerking zal uitvoeren op basis van de bron van de onderbreking, voordat terugkeren naar de oorspronkelijke instructievolgorde. Mogelijke onderbrekingsbronnen zijn apparaatafhankelijk en omvatten vaak gebeurtenissen zoals een interne overloop van de timer, het voltooien van een analoog-naar-digitaal-conversie, een logische niveauverandering op een ingang zoals wanneer een knop wordt ingedrukt, en gegevens die worden ontvangen via een communicatieverbinding. Waar stroomverbruik belangrijk is, zoals bij batterij-apparaten, kunnen onderbrekingen een microcontroller ook uit een slaapstand met laag vermogen wekken, waarbij de processor wordt gestopt totdat hij iets moet doen door een perifere gebeurtenis.

Programma’s

Typisch moeten microcontrollerprogramma’s in het beschikbare geheugen op de chip passen, aangezien het kostbaar zou zijn om een ​​systeem te voorzien van extern, uitbreidbaar geheugen. Compilers en assemblers worden gebruikt om zowel high-level als assembly-taalcodes om te zetten in een compacte machinecode voor opslag in het geheugen van de microcontroller. Afhankelijk van het apparaat kan het programmageheugen permanent, alleen-lezen geheugen zijn dat alleen in de fabriek kan worden geprogrammeerd, of het kan een in het veld te wijzigen flitser of uitwisbaar alleen-lezen geheugen zijn.

Fabrikanten hebben vaak speciale versies van hun microcontrollers geproduceerd om de hardware- en softwareontwikkeling van het doelsysteem te helpen. Oorspronkelijk waren dit EPROM-versies met een “venster” aan de bovenzijde van het apparaat waardoor het programmageheugen kan worden gewist door ultraviolet licht, klaar voor herprogrammering na een programmering (“branden”) en testcyclus. Sinds 1998 zijn EPROM-versies zeldzaam en zijn vervangen door EEPROM en flash, die gemakkelijker te gebruiken zijn (elektronisch kunnen worden gewist) en goedkoper te vervaardigen.

Andere versies zijn mogelijk beschikbaar wanneer de ROM wordt gebruikt als een extern apparaat in plaats van als intern geheugen, maar deze worden zeldzaam vanwege de wijdverbreide beschikbaarheid van goedkope microcontroller-programmeurs.

Het gebruik van in het veld programmeerbare apparaten op een microcontroller kan leiden tot veldupdate van de firmware of laattijdige fabrieksherzieningen van producten die zijn geassembleerd maar nog niet zijn verzonden. Programmeerbaar geheugen vermindert ook de doorlooptijd die nodig is voor de implementatie van een nieuw product.

Waar honderdduizenden identieke apparaten nodig zijn, kan het voordelig zijn om onderdelen te gebruiken die tijdens de fabricage zijn geprogrammeerd. Bij deze “mask geprogrammeerde” onderdelen is het programma op dezelfde manier vastgelegd als de logica van de chip, tegelijkertijd.

Een op maat gemaakte microcontroller bevat een blok digitale logica dat kan worden gepersonaliseerd voor extra verwerkingscapaciteit, randapparatuur en interfaces die zijn aangepast aan de vereisten van de applicatie.

Andere microcontrollerfuncties

Microcontrollers bevatten doorgaans enkele tot tientallen algemene invoer / uitvoerpinnen (GPIO). GPIO-pinnen zijn softwareconfigureerbaar voor een invoer- of uitvoerstatus. Wanneer GPIO-pinnen zijn geconfigureerd voor een ingangsstatus, worden ze vaak gebruikt om sensoren of externe signalen te lezen. Geconfigureerd op de uitgangstoestand, kunnen GPIO-pinnen externe apparaten zoals LED’s of motoren aansturen, vaak indirect, via externe vermogenselektronica.

Veel embedded systemen moeten sensoren uitlezen die analoge signalen produceren. Dit is het doel van de analoog-digitaalomzetter (ADC). Omdat processors zijn gebouwd om digitale gegevens te interpreteren en te verwerken, d.w.z. 1-en en 0-en, kunnen ze niets doen met de analoge signalen die door een apparaat naar de computer kunnen worden gestuurd. Dus de analoog naar digitaal converter wordt gebruikt om de binnenkomende data om te zetten in een vorm die de processor kan herkennen. Een minder vaak voorkomende functie op sommige microcontrollers is een digitaal-naar-analoog-omzetter (DAC) waarmee de processor analoge signalen of spanningsniveaus kan uitvoeren.

Naast de converters bevatten veel ingebouwde microprocessors ook een verscheidenheid aan timers. Een van de meest voorkomende timers is de programmeerbare intervaltimer (PIT). Een PIT kan ofwel aftellen van een bepaalde waarde tot nul, ofwel tot de capaciteit van het telregister, en overlopen tot nul. Zodra het nul bereikt, stuurt het een onderbreking naar de processor om aan te geven dat het tellen is voltooid. Dit is handig voor apparaten zoals thermostaten, die periodiek de temperatuur om hen heen testen om te zien of ze de airconditioning, de verwarming, enz. Moeten inschakelen.

Een speciaal PWM-blok (pulse-width modulation) maakt het voor de CPU mogelijk om stroomomvormers, ohmse belastingen, motoren, enz. Te regelen zonder veel CPU-bronnen in strakke timerlussen te gebruiken.

Een universeel asynchroon ontvanger / zender (UART) -blok maakt het mogelijk om gegevens over een seriële lijn te ontvangen en te verzenden met zeer weinig belasting van de CPU. Dedicated on-chip hardware bevat ook vaak mogelijkheden om te communiceren met andere apparaten (chips) in digitale formaten zoals Inter-Integrated Circuit (I²C), Serial Peripheral Interface (SPI), Universal Serial Bus (USB) en Ethernet.

Integratie en kenmerken

Microcontrollers implementeren mogelijk geen extern adres of databus omdat ze RAM en niet-vluchtig geheugen integreren op dezelfde chip als de CPU. Met minder pinnen kan de chip in een veel kleinere, goedkopere verpakking worden geplaatst.

Het integreren van het geheugen en andere randapparatuur op een enkele chip en het testen als een eenheid verhoogt de kosten van die chip, maar resulteert vaak in lagere nettokosten van het embedded systeem als geheel. Zelfs als de kosten van een CPU met geïntegreerde randapparatuur iets meer zijn dan de kosten van een CPU en externe randapparatuur, zorgt het hebben van minder chips voor een kleinere en goedkopere printplaat en vermindert het de arbeid die nodig is om de printplaat te monteren en te testen, in Naast de neiging om het defectpercentage voor de voltooide assemblage te verminderen.

Een microcontroller is een enkel geïntegreerd circuit, gewoonlijk met de volgende kenmerken:

  • centrale verwerkingseenheid – variërend van kleine en eenvoudige 4-bit processors tot complexe 32-bit of 64-bit processors
  • vluchtig geheugen (RAM) voor gegevensopslag
  • ROM-, EPROM-, EEPROM- of Flash-geheugen voor opslag van programma- en bedrijfsparameters
  • discrete invoer- en uitvoerbits, waardoor controle of detectie van de logische status van een individuele pakketpin mogelijk is
  • seriële invoer / uitvoer zoals seriële poorten (UART’s)
  • andere seriële communicatie-interfaces zoals I²C, Serial Peripheral Interface en Controller Area Network voor systeemverbinding
  • randapparatuur zoals timers, gebeurtenistellers, PWM-generatoren en watchdog
  • klokgenerator – vaak een oscillator voor een kwartskristal, resonator of RC-circuit
  • vele omvatten analoog-naar-digitaalomzetters, sommige bevatten digitaal-naar-analoogomzetters
  • in-circuit programmeren en in-circuit debuggen ondersteuning

Deze integratie vermindert het aantal chips drastisch en de hoeveelheid bedrading en printplaatruimte die nodig zou zijn om gelijkwaardige systemen te produceren met afzonderlijke chips. Bovendien, in het bijzonder bij apparaten met een laag aantal pinnen, kan elke pin interfacen met verschillende interne randapparatuur, waarbij de pinfunctie door software wordt geselecteerd. Hierdoor kan een onderdeel in een grotere verscheidenheid aan toepassingen worden gebruikt dan wanneer pinnen specifieke functies zouden hebben.

Microcontrollers zijn sinds hun introductie in de jaren zeventig zeer populair gebleken in embedded systemen.

Sommige microcontrollers gebruiken een Harvard-architectuur: aparte geheugenbussen voor instructies en gegevens, waardoor toegangen gelijktijdig kunnen plaatsvinden. Als een Harvard-architectuur wordt gebruikt, kunnen instructiewoorden voor de processor een andere bitgrootte hebben dan de lengte van het interne geheugen en de registers; bijvoorbeeld: 12-bits instructies gebruikt met 8-bits gegevensregisters.

De beslissing welke randapparatuur moet worden geïntegreerd, is vaak moeilijk. De leveranciers van microcontrollers ruilen vaak bedrijfsfrequenties en systeemontwerpflexibiliteit tegen de time-to-market-vereisten van hun klanten en de algehele lagere systeemkosten. Fabrikanten moeten de noodzaak om de chipgrootte te minimaliseren afwegen tegen extra functionaliteit.

Microcontroller-architecturen lopen sterk uiteen. Sommige ontwerpen bevatten microprocessorkernen voor algemeen gebruik, met een of meer ROM-, RAM- of I / O-functies die in het pakket zijn geïntegreerd. Andere ontwerpen zijn speciaal gebouwd voor controletoepassingen. Een instructieset voor microcontrollers bevat meestal veel instructies die bedoeld zijn voor bitmanipulatie (bitsgewijze bewerkingen) om besturingsprogramma’s compacter te maken. [30] Een processor voor algemene doeleinden kan bijvoorbeeld verschillende instructies nodig hebben om een ​​bit in een register en vertakking te testen als de bit is ingesteld, waarbij een microcontroller een enkele instructie zou kunnen hebben om die algemeen vereiste functie te bieden.

Microcontrollers hebben traditioneel geen wiskundige coprocessor, dus drijvende-kommaberekeningen worden uitgevoerd door software. Sommige recente ontwerpen bevatten echter een voor FPU en DSP geoptimaliseerde functies. Een voorbeeld is de op PIC32 MIPS gebaseerde lijn van Microchip.

Programmeeromgevingen

Microcontrollers waren oorspronkelijk alleen geprogrammeerd in assembleertaal, maar verschillende programmeertalen op hoog niveau, zoals C, Python en JavaScript, worden nu ook algemeen gebruikt om microcontrollers en embedded systemen te targeten. Compilers voor talen voor algemene doeleinden hebben doorgaans enkele beperkingen en verbeteringen om de unieke kenmerken van microcontrollers beter te ondersteunen. Sommige microcontrollers hebben omgevingen om bepaalde soorten toepassingen te helpen ontwikkelen. Microcontroller-leveranciers stellen tools vaak gratis beschikbaar om het gemakkelijker te maken om hun hardware te gebruiken.

Microcontrollers met speciale hardware hebben mogelijk hun eigen niet-standaard dialecten van C nodig, zoals SDCC voor de 8051, die het gebruik van standaardhulpmiddelen (zoals codebibliotheken of statische analysehulpmiddelen) verhinderen, zelfs voor code die geen verband houdt met hardwarefuncties. Tolken kunnen ook niet-standaardfuncties bevatten, zoals MicroPython, hoewel een vork, CircuitPython, heeft geprobeerd de hardware-afhankelijkheden naar bibliotheken te verplaatsen en de taal te laten voldoen aan een meer CPython-standaard.

Tolkfirmware is ook beschikbaar voor sommige microcontrollers. Bijvoorbeeld BASIC op de vroege microcontrollers Intel 8052; BASIC en FORTH op de Zilog Z8 en enkele moderne apparaten. Doorgaans ondersteunen deze tolken interactief programmeren.

Voor sommige microcontrollers zijn simulatoren beschikbaar. Hiermee kan een ontwikkelaar analyseren wat het gedrag van de microcontroller en hun programma zou moeten zijn als ze het eigenlijke onderdeel zouden gebruiken. Een simulator toont de status van de interne processor en ook die van de uitgangen, en maakt het mogelijk ingangssignalen te genereren. Enerzijds zullen de meeste simulatoren niet in staat zijn om veel andere hardware in een systeem te simuleren, maar ze kunnen omstandigheden uitoefenen die anders moeilijk naar believen te reproduceren zijn in de fysieke implementatie, en kunnen de snelste manier zijn om fouten op te sporen en te analyseren problemen.

Recente microcontrollers zijn vaak geïntegreerd met on-chip debug-circuits die, wanneer ze via JTAG worden geopend door een in-circuit-emulator (ICE), debugging van de firmware met een debugger mogelijk maken. Een realtime ICE kan het bekijken en / of manipuleren van interne toestanden tijdens het hardlopen mogelijk maken. Een tracerend ICE kan een uitgevoerd programma opnemen en MCU-staten voor / na een triggerpunt.

Resources:
Wikipedia
Verschil tussen microcontrollers en microprocessors