AVR, ESP32, RP2040/RP2350, STM32 og nRF52 er mer enn forskjellige merkenavn. De representerer ulike prosessorkjerner, periferisett, radiofunksjoner og utviklingsmiljøer. Denne guiden skiller mikrokontrolleren fra minidatamaskinen og viser hvordan arkitekturen påvirker et virkelig prosjekt.
Mikrokontroller, prosessor, SoC og utviklingskort
En prosessorkjerne utfører instruksjoner. En mikrokontroller (MCU) kombinerer én eller flere kjerner med minne, klokker, GPIO og periferi som UART, SPI, I2C, PWM og ADC i samme brikke. System-on-chip (SoC) er et bredere begrep for en integrert systembrikke; mange trådløse mikrokontrollere kalles også SoC fordi radio og større delsystemer er bygget inn.
Utviklingskortet er kretskortet rundt brikken. Det kan ha USB-tilkobling, spenningsregulator, programmerer, antenne, knapper og kontakter. Arduino Uno R3 er for eksempel et kort bygget rundt en AVR-mikrokontroller, mens et ESP32-kort ofte inneholder en modul med selve SoC-en, flash og antenne. Sammenlign derfor både brikke og kort: samme mikrokontroller kan sitte på kort med svært ulik strømforsyning og pinneføring.
En minidatamaskin som Raspberry Pi 5 bruker en applikasjonsprosessor, eksternt RAM og et operativsystem som Linux. Den er god til nettleser, database, kameraapplikasjoner og større programmer, men operativsystemet gir ikke samme enkle og forutsigbare kontroll over timing på mikrosekundnivå. Raspberry Pi Pico er derimot et mikrokontrollerkort og kjører normalt programmet direkte uten Linux.
Hva betyr 8-bit, 32-bit, Arm, Xtensa og RISC-V?
Bitbredden beskriver prosessorens naturlige data- og registerbredde, men avgjør ikke alene hvor «rask» et system er. Klokkefrekvens, instruksjonssett, minne, cache, busser, akseleratorer, kompilator og programvare påvirker resultatet. En 8-bits AVR kan være et bedre valg enn en kraftig 32-bits MCU når kretsen bare skal lese en knapp og styre en LED med lavt forbruk.
Arm Cortex-M er en familie av prosessorkjerner som Arm lisensierer til brikkeprodusenter. STM32 og nRF52 bruker begge Arm-kjerner, men har forskjellig periferi, radio, verktøy og elektriske grenser. Xtensa er en annen prosessorarkitektur, brukt i den klassiske ESP32 og i S-seriene (S2 og S3). ESP32-C-, H- og P-seriene bruker RISC-V. RISC-V er et åpent instruksjonssett; det sier ikke i seg selv noe om hvilken radio, ADC eller minnemengde brikken har.
«Arkitektur» kan dermed bety instruksjonssett, prosessorkjerne eller hele mikrokontrollerens systemoppbygning. Når kode skal flyttes, er API-er og periferi ofte en større utfordring enn selve C/C++-språket. Arduino-rammeverket kan skjule mye av forskjellen, mens registerkode og drivere er spesifikke for hver familie.
Familiene sammenlignet
| Familie | Kjerne og arkitektur | Styrker | Typiske prosjekter | Viktig å kontrollere |
|---|---|---|---|---|
| AVR ATmega/ATtiny | 8-bit AVR, modifisert Harvard | Enkel modell, moden verktøykjede, god til små styringer | Undervisning, knapper, enkel motor- og LED-styring | Lite RAM og flash, logikknivå, periferi og programmerer |
| ESP32 | Xtensa i klassisk ESP32 og S-serien; RISC-V i C-, H- og P-serien | WiFi og Bluetooth, i noen modeller 802.15.4; høy integrasjon | IoT, skjerm, lyd, smarthus og trådløse sensorer | Eksakt variant, radio, strømforbruk og GPIO-begrensninger |
| RP2040/RP2350 | 2 × Cortex-M0+ / 2 × Cortex-M33 eller RISC-V | Programmerbar I/O, god dokumentasjon, enkel UF2-oppstart | USB, presis I/O, undervisning og egne protokoller | Ekstern flash, radio finnes bare på kortet, spenningsnivå |
| STM32 | 32-bit Arm Cortex-M, fra små til avanserte kjerner | Svært bred portefølje, rik periferi og industrielle valg | Motor, måling, USB, kontrollsystem og produktutvikling | Serie, kapsling, periferi, klokketre og verktøyoppsett |
| nRF52 | Arm Cortex-M4, 64 MHz | Energieffektiv 2,4 GHz-radio med Bluetooth LE, i noen modeller også Thread og Zigbee | Kroppsnære sensorer, BLE-sensor, beacon og mesh | Eksakt radio- og protokollstøtte, SDK, antenne og energibudsjett |
Tabellen beskriver familier, ikke alle modeller. ESP32-C6, ESP32-S3 og ESP32-P4 har ulike kjerner og radioer. STM32F0, G4, H7 og U5 er laget for ulike formål. RP2350 finnes i flere varianter og har sikkerhetsfunksjoner som RP2040 mangler. Velg alltid etter databladet for den konkrete brikken og skjemaet for kortet.
Konkrete brikker på populære kort
| Brikke | Eksempel på kort | Kjerne og klokke | SRAM | Radio |
|---|---|---|---|---|
| ATmega328P | Arduino Uno R3, Pro Mini | 8-bit AVR, opptil 20 MHz (8 MHz på 3,3 V-kort) | 2 kB | Ingen |
| ATtiny1604 | Kompakte tinyAVR-kort | 8-bit AVR, opptil 20 MHz | 1 kB | Ingen |
| ESP32-C3 | ESP32-C3 Zero, XIAO ESP32-C3 | 1 × RISC-V, 160 MHz | 400 kB | WiFi 4, Bluetooth LE 5 |
| ESP32-S3 | AtomS3 Lite, mange DevKit-kort | 2 × Xtensa LX7, 240 MHz | 512 kB | WiFi 4, Bluetooth LE 5 |
| RP2040 | Pico, Maker Pi RP2040 | 2 × Cortex-M0+, 133 MHz i originalspesifikasjonen | 264 kB | Ingen i brikken |
| RP2350 | Pico 2, RP2350A-kort | 2 × Cortex-M33 eller Hazard3 RISC-V, 150 MHz | 520 kB | Ingen i brikken |
| STM32WLE5 | LoRa-E5 | Cortex-M4, 48 MHz | 64 kB | Sub-GHz, blant annet LoRa |
| nRF52840 | XIAO nRF52840 | Cortex-M4F, 64 MHz | 256 kB | Bluetooth LE 5, 802.15.4 |
Tallene viser hvor stor spennvidden er: fra 1 kB arbeidsminne i en liten ATtiny til flere hundre kilobyte i en ESP32 eller RP2350. AVR-brikkene tåler i tillegg et bredt spenningsområde og kan arbeide direkte med 5 V, mens de øvrige brikkene i tabellen bruker 3,3 V-logikk.
AVR: liten og forståelig
AVR ATmega og ATtiny er 8-bits mikrokontrollere med separat program- og dataminne i en modifisert Harvard-struktur. De har typisk en oversiktlig periferimodell og passer godt når programmet er lite, timingen enkel og ressursene kjente. Arduino-økosystemet gjorde ATmega328P tilgjengelig for mange nybegynnere, men AVR kan også programmeres direkte med avr-gcc eller Microchips egne verktøy.
Begrenset RAM lærer utvikleren å tenke på bufferstørrelse, datatyper og dynamisk minnetildeling. Det er en styrke i små, pålitelige styringer, men en begrensning for store grafikkbiblioteker, kryptering eller nettverksstakker. Et Arduino Pro Mini med ATmega328 viser en klassisk 3,3 V AVR-plattform. Den går på 8 MHz fordi ATmega328P ikke er spesifisert for 16 MHz ved 3,3 V. Et kort med ATtiny1604 representerer en nyere, kompakt AVR-generasjon.
Programmeringsmetoden varierer. Noen kort har USB-til-seriell og bootloader, mens rene moduler trenger en ISP- eller UPDI-programmerer. De nyere tinyAVR-brikkene som ATtiny1604 programmeres via én UPDI-pinne. Sikringsbiter, klokkevalg og spenningsnivå bør forstås før du skriver til konfigurasjonsminnet.
ESP32: integrert radio, mange varianter
Den klassiske ESP32 kombinerer Xtensa-kjerner med WiFi og Bluetooth. Variantene dekker andre kombinasjoner: S2 og S3 bruker Xtensa, mens C2, C3, C5, C6, H2 og P4 bruker RISC-V. Radiofunksjonene er heller ikke like. De fleste modellene har WiFi og Bluetooth LE, C6 og H2 har også IEEE 802.15.4 for Thread og Zigbee, H2 har ikke WiFi, og P4 har ingen radio og brukes ofte sammen med en egen ESP32-C6 for trådløs tilkobling. Navnet «ESP32» er derfor ikke en full spesifikasjon.
For en enkel IoT-node gir integrert radio færre eksterne brikker og et stort programvareøkosystem. Ulempene er strømtopper under radiosending, mer komplisert oppstart og pinner med spesielle oppstartsfunksjoner. På klassisk ESP32 kan for eksempel feil nivå på GPIO12 ved oppstart hindre at kortet starter, og GPIO34 til 39 er bare innganger. Dimensjoner strømforsyning og avkobling etter den konkrete modulen.
Et kompakt ESP32-C3-kort er et RISC-V-eksempel med WiFi og Bluetooth. XIAO ESP32-C3 prioriterer et lite format, mens AtomS3 Lite med ESP32-S3 passer når du ønsker Xtensa-basert S3-periferi i M5Stack-format. Se også ESP32-guiden for nybegynnere.
RP2040 og RP2350: programmerbar I/O
RP2040 har to Arm Cortex-M0+-kjerner, SRAM på brikken og et grensesnitt for ekstern QSPI-flash. Det mest særegne er PIO-blokkene: små tilstandsmaskiner som håndterer presis digital I/O uten at hovedkjernene må veksle hver bit i programvare. Det er nyttig for protokoller, LED-timing, videosignaler og forutsigbar kommunikasjon.
RP2350 øker prosessorytelse, SRAM, antall PIO-blokker og sikkerhetsfunksjoner. Den har både Arm Cortex-M33-kjerner og Hazard3 RISC-V-kjerner, og du velger hvilke som skal brukes. Det betyr ikke at all RP2040-kode automatisk utnytter RP2350; periferi, sikkerhetsmodell og PIO-detaljer må kontrolleres.
Et Maker Pi RP2040-kort med motordriver kombinerer MCU-en med robotikkperiferi. Et kompakt RP2350A-kort med flash viser den nyere generasjonen. Trådløs radio er ikke bygget inn i selve RP2040 eller RP2350; Pico W-kortene løser dette med en egen radiobrikke fra Infineon.
STM32: én merkevare, mange mål
STM32 er STMicroelectronics’ brede portefølje av 32-bits Arm Cortex-M-mikrokontrollere. Små Cortex-M0- og M0+-baserte modeller kan erstatte enkle 8-bits styringer, mens familier med M4, M7 og M33 tilbyr mer regnekraft, DSP og flyttall eller sikkerhetsfunksjoner. Andre serier prioriterer lavt energiforbruk, motorstyring, trådløs kommunikasjon eller høy ytelse.
Fordelen er et stort utvalg av timere, ADC-er, kommunikasjonsgrensesnitt og kapslinger. Utfordringen er at navnet «STM32» alene ikke forteller hvilke periferienheter eller pinnealternativer som finnes. Klokketre, DMA, avbruddsprioriteter og alternative pinnefunksjoner blir viktige i avanserte systemer.
Et STM32-kort i Cortex-M0-klassen med ST-LINK og Morpho-pinner gir en dokumentert inngang til STM32Cube-verktøyene, og den innebygde ST-LINK-programmereren gjør feilsøking med brytepunkter enkel. Et LoRa-E5-kort med STM32WLE5 viser hvordan en Arm Cortex-M4 og en sub-GHz-radio kan integreres i én trådløs brikke.
nRF52: Bluetooth LE og lavt energibudsjett
Nordics nRF52-serie kombinerer Arm Cortex-M4 med 2,4 GHz-radio. Hele familien støtter Bluetooth Low Energy, og utvalgte modeller støtter også Thread, Zigbee og andre protokoller over 802.15.4. Minne, USB, NFC og radioegenskaper varierer mellom nRF52805, nRF52832, nRF52833 og nRF52840. Mange kjenner familien uten å vite det: BBC micro:bit V2 bygger på nRF52833.
nRF52 passer når en batteridrevet sensor skal sove lenge, våkne, måle og sende en kort melding. Da må hele kortet vurderes: regulator, sensorer, status-LED og USB-grensesnitt kan bruke mer hvilestrøm enn selve brikken. Programvaren bør måles med en strømanalysator i realistiske intervaller.
Et XIAO nRF52840-sett med ekstern LoRa-radio illustrerer skillet: nRF52840 håndterer program og Bluetooth, mens SX1262 gir LoRa på 868 MHz. Les LoRa-, LoRaWAN- og Meshtastic-guiden for radioarkitekturen.
For nybegynnere: velg økosystem først
En god startplattform har tydelig dokumentasjon, USB-programmering, et aktivt bibliotekmiljø og nok eksempler til prosjektet. AVR med Arduino er oversiktlig for digital I/O. Micro:bit gir blokkprogrammering og rask tilbakemelding. Raspberry Pi Pico støtter MicroPython og C/C++. ESP32 gir tidlig tilgang til WiFi, men nettverk øker kompleksiteten.
- Velg én oppgave: blink, knapp, analog sensor eller enkel motor før nettverk og sky.
- Bekreft spenningsnivået: mange moderne kort bruker 3,3 V og tåler ikke 5 V på GPIO.
- Bruk kortets offisielle oppstart: installer riktig USB-driver, kortpakke og eksempel.
- Test én ting om gangen: bekreft forsyning, seriell logg og I/O før bibliotekene kombineres.
- Noter versjoner: skriv ned kortvariant, rammeverk, bibliotek og fungerende commit.
For viderekomne: periferi før MHz
Avanserte valg begynner med forsinkelse, jitter, gjennomstrømning og energibudsjett. Vurder om timer, DMA eller PIO kan flytte arbeid ut av CPU-en. Finn ADC-ens reelle nøyaktighet, samplingshastighet og referansekrav. Tell UART-, SPI- og I2C-instansene som kan brukes samtidig på de aktuelle pinnene, ikke bare summen i markedsføringen.
For sanntid kan et RTOS gi prioriterte oppgaver og synkronisering, men det gir også stackbruk og samtidighetsfeil å holde styr på. For sikker oppdatering trenger produktet bootloader, signering, en plan for å rulle tilbake og beskyttet nøkkellagring. For batteridrift må hvilemodus, vekkekilder, regulator og radio måles som ett system.
Portabilitet oppnås ved å isolere maskinvarelaget fra applikasjonslogikken. Bruk grensesnitt for GPIO, tid og kommunikasjon, og test logikken på en vanlig datamaskin når det er mulig. Ikke forvent at registertilgang kan flyttes mellom AVR, ESP32 og STM32. Selv innen samme familie kan en periferidriver endres mellom serier.
Når trenger du en minidatamaskin i stedet?
Velg en Linux-basert minidatamaskin når prosjektet trenger nettleser, database, containere, avansert kamerastøtte, stor lokal lagring eller programvare skrevet for et vanlig operativsystem. Velg MCU når rask oppstart, direkte I/O, lavt strømforbruk eller forutsigbar kontroll er viktig. Mange robuste systemer kombinerer begge: MCU-en håndterer sensorer og sikker stopp, mens minidatamaskinen kjører brukergrensesnitt, AI eller nettverkstjenester.
Se kategorien minidatamaskiner og mikrokontrollere for aktuelle plattformer. Artikkelen hva er Raspberry Pi? forklarer forskjellen mellom klassiske Raspberry Pi-modeller og Pico-familien.
Kilder og metode
AVR-strukturen er kontrollert mot Microchips offisielle AVR-beskrivelse. ESP32-familienes Xtensa- og RISC-V-retning er kontrollert mot Espressifs maskinvareoversikt. RP2040/RP2350 og PIO er kontrollert mot Raspberry Pis dokumentasjon for egne MCU-er. STM32-porteføljen er kontrollert mot STMicroelectronics’ STM32-oversikt, og nRF52 mot Nordics offisielle nRF52-dokumentasjon.
Oppsummering
Det finnes ingen universelt beste mikrokontroller. AVR er et forståelig valg for små styringer; ESP32 gir integrert trådløs funksjonalitet; RP2040 og RP2350 skiller seg ut med PIO; STM32 gir en bred Arm-portefølje; nRF52 prioriterer energieffektiv Bluetooth LE. Velg den konkrete brikken og kortet etter periferi, programvare, effektbudsjett og dokumentasjon, og først deretter etter klokkefrekvens.




