8-bitars mikrostyrenheter är fortfarande ett bra alternativ för låg strömförbrukning och enkel användning
På 1990-talet – mikrostyrenheternas guldålder – började C-kompilatorerna bli populära, men ville du jobba med inbäddad programmering krävdes det fortfarande kunskaper i assembly. Fältapplikationsingenjörer, som jag, var ofta ute på kundbesök. Framför grupper av storögda ingenjörer redogjorde jag utförligt kring fördelarna med de senaste mikrostyrenheterna.
Halvledarföretagen på den tiden utvecklade inte nya mikrostyrenheten varje månad, som idag. Kanske en eller högst två nya enheter per kvartal fick vi ut på marknaden. Men vissa saker förändras inte. Det dussintal ingenjörer som jag, under ett av de där kundmötena, underhöll med hjälp av min PowerPoint-magi, tillhörde en grupp som byggde styrenheter för bilkarosser. Karosstyrenheterna var enkla små lådor som fungerade enligt principen goesintas/goesoutas, som i ”goesinta” (goes into) lådan och ”goesouta” (goes out of) lådan. Inga konstigheter för en 8-bitars mikrostyrenhet med massor av GPIO.
Föredraget flöt på som vanligt, tills någon räckte upp handen längst bak i rummet.
”Cheferna har bestämt att vi ska börja använda 32-bitars mikrostyrenheter för karosstyrenheterna”, sa en bestämd röst. Av mumlandet i rummet kunde jag gissa att påståendet kanske inte stämde, och att den som yttrade sig hade en viss baktanke, till exempel att gynna en viss leverantör – som alltså, deppigt nog, inte var jag.
”Ni behöver inte en 32-bitars mikrostyrenhet och jag tror dig inte”, sa jag – i ett alternativt universum. Det jag i själva verket sa var kanske lite smartare med tanke på karriären: ”Kan du tala om för mig vilka egenskaper i en 32-bitars arkitektur som ni skulle behöva i nästa generations styrenheter?”.
Det blev tyst en liten stund, innan han lite trotsigt svarade: ”Vi behöver 32-bitars, helt enkelt”. Men han sa det med viss tvekan. De andra ingenjörerna vände sig ivrigt mot mig för att höra mitt svar.
Jag började förklara 32-bitarsarkitekturens fördelar jämfört med 8-bitarsarkitekturen. Behövde de snabbare klockhastighet? Skulle nästa generations produkt utföra mer avancerade beräkningar? Skulle den fasta programvara vara flertrådig, och behövdes det ett RTOS (realtidsoperativsystem)? Kunde den fasta programvaran bli så stor att det behövdes utökad minnesadressering? De här frågorna var – och är fortfarande – viktiga att ta ställning till innan man gör övergången till en 32-bitars kärna (16 bitar är ett trevligt mellansteg, men också en helt annan historia).
Sedan följde en givande diskussion om skillnaderna mellan 8-bitars- och 32-bitarsarkitekturerna. 8-bitarsarkitekturen för mikrostyrenheter är enklare och har en programmeringsmodell som är lätt att förstå. Oftast behövs bara en enda matning. Trots att marknadsföringen ofta säger motsatsen, har modern 8-bitarsarkitektur lägre strömförbrukning än 32-bitarsarkitekturen eftersom de inre komponenterna utbyter färre signaler.
8-bitarsexempel från verkligheten
Microchip Technology är stolt leverantör av sina 8-bitars mikrostyrenheter sedan flera år. Uppskattade 8-bitarskärnan Microchip megaAVR (även kallad ATMega) har konventionell Harvard-arkitektur som kan adressera upp till 256 kbyte programminne. Den registerbaserade arkitekturen är enkel och mycket C-vänlig, med 32 8-bitars GP-register (general purpose) (figur 1).
Figur 1: Mikrostyrenheten megaAVR baseras på 32 8-bitarsregister med beteckningarna R0 till R31. Registren kan också adresseras som registerpar, och därmed bilda sexton 16-bitarsregister. (Bildkälla: Microchip Technology)
GP-registren kan ”parkopplas” till sexton stycken 16-bitarsregister. De sista tre registerparen kan användas som 16-bitars adressregister X, Y och Z, för indirekt adressering.
Utöver GP-registren har megaAVR ett 16-bitars stackregister och ett 8-bitars statusregister. Det är det hela. Tillräckligt enkelt för att programmera i assembly (”Real Programmers Program in Assembly”).
Nej, man kan inte komma åt programräknaren i megaAVR. Glöm det.
Ett typiskt exempel på megaAVR-familjen är 20 MHz ATMEGA1609. Det är en lättanvänd mikrostyrenhet med 16 kbyte flash, 2 kbyte RAM och 256 byte EEPROM. De flesta instruktioner är enkelcykliga.
Figur 2: ATMEGA1609 från Microchip Technology är en enkel, flexibel, lågeffekts 8-bitars mikrostyrenhet som fungerar i en rad miljöer. (Bildkälla: Microchip Technology)
Den har en 10-bitars AD-omvandlare, fem 16-bitars timers, en realtidsklocka, flera lågeffektsalternativ och en 2-cyklers signerad/osignerad maskinvarumultiplikator.
megaAVR har också en enkelcykels bituppsättning och ”bit clear”-instruktioner liksom ”bit test”-instruktioner som kräver en till tre cykler.
Bit-instruktionernas betydelse förbises ofta av utvecklare som har förälskat sig i C-språket. Men sanningen är att bit-instruktioner (”Vi behöver ingen ATOMIC-instruktion”) kan öka prestanda, minska kodmängden, förbättra läsbarheten och förenkla kraftigt.
Matningsbehovet för ATMEGA1609 är flexibla 1,8 V till 5,5 V i temperaturområdet -40 °C till 125 °C. De breda matnings- och temperaturområdena är ingen slump. Denna 8-bitars mikrostyrenhet är utformad för att klara en lång rad designmiljöer. Återigen: enkelhet!
Ibland behöver man som utvecklare bara ett snabbt sätt att bli klar med projektet. 8-bitarssystem är enkla att använda, flexibla och hårda som sten. Det är egenskaper som är svåra att bortse från.
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.
Visit TechForum
