Arduino vs Microprocessor vs Microcontroller


Risposte:


21

Un microprocessore:

si trova in genere in un PC desktop o laptop e contiene una CPU e un'interfaccia di memoria esterna oltre a vari bus I / O per connettersi al mondo esterno come SPI, I2C, UART, USB, LCD e altri. Un microprocessore avrà anche un cristallo esterno per fornire un orologio.

La maggior parte dei microprocessori non ha memoria di sola lettura sul chip; invece c'è un chip esterno sulla scheda madre in cui si trova il codice di avvio iniziale. Su PC basati su Intel, questo si chiama Basic Input / Output System (BIOS) e contiene anche routine di I / O oltre al codice di avvio iniziale. Il codice di avvio inizia eseguendo un Power-On Self Test (POST) e quindi cerca di vedere dove caricare la fase successiva del codice di avvio: da un disco rigido, un CD (o nei vecchi tempi) un disco floppy. Questo avvio di secondo livello carica quindi il sistema operativo. (Ci possono anche essere tre livelli di codice di avvio in alcuni sistemi.)

Alcuni microprocessori (in genere quelli destinati a smartphone e tablet, con opzioni di avvio limitate) dispongono di una piccola quantità di memoria di sola lettura che contiene il codice di avvio iniziale.

Mi riferisco al codice di avvio come di sola lettura; in realtà su alcuni sistemi, può essere aggiornato. Tuttavia questo è abbastanza rischioso; se qualcosa va storto il sistema potrebbe non avviarsi più.

A differenza dei microcontrollori, che eseguono i loro programmi dalla memoria di sola lettura, dopo l'avvio dei microprocessori caricano i loro programmi nella RAM esterna ed eseguono da lì.

Un microcontrollore:

d'altra parte è un IC a chip singolo autonomo che contiene una CPU, memoria di sola lettura per memorizzare il programma, RAM per memorizzare le variabili utilizzate nell'esecuzione del programma e vari bus I / O per connettersi al mondo esterno come come SPI, I2C, UART e altri. Di per sé, non può eseguire alcun programma senza essere programmato tramite un'interfaccia esterna a un PC. Un microcontrollore potrebbe anche aver bisogno di un cristallo esterno per fornire un orologio, tuttavia alcuni hanno un orologio interno.

Alcuni microcontrollori (come PIC32 di Microchip) hanno due sezioni di memoria flash; uno per contenere il codice di inizializzazione (avvio) e un altro per archiviare l'applicazione. Ciò semplifica l'aggiornamento sul posto del codice dell'applicazione.

Per il tuo scopo, vorresti utilizzare un microcontrollore, non un microprocessore. Per utilizzare un microcontrollore, dovresti progettare la tua scheda o acquistare una sorta di scheda di sviluppo.

Un Arduino:

è una scheda di questo tipo e contiene un microcontrollore, tipico di un AVR a 8 bit come ATmega8, ATmega168, ATmega328, ATmega1280 e ATmega2560, oltre a alimentatori, cristalli e intestazioni femmina per interfacciarsi con varie schede periferiche.

Queste schede periferiche sono chiamate scudi e sono progettate per impilarsi l'una sull'altra (ci sono perni maschili nella parte inferiore delle schede per connettersi all'Arduino stesso o un altro scudo e intestazioni femminili in alto per accettare i pin maschili di uno scudo impilato sopra di esso).

Schermi di esempio sono schede di controllo del motore, schede I / O generali, schede relè, schede Ethernet e LCD, in genere con un touch-screen. Tuttavia, non conosco alcun touchscreen resistivo che verrebbe utilizzato solo per il rilevamento (senza LCD).

Oltre all'hardware sopra descritto, Arduino include anche un ambiente di sviluppo integrato multipiattaforma (IDE) scritto in Java. È stato progettato per presentare la programmazione ad artisti e altri principianti, proprio come il linguaggio BASIC ha fatto 50 anni fa. Un programma per Arduino si chiama schizzo .

I programmi Arduino sono scritti in C o C ++, tuttavia molti dettagli sono nascosti all'utente: solo due funzioni (chiamate dal sistema) devono essere definite per creare un programma che si ripete continuamente (che è tipicamente per programmi integrati)

setup(): a function run once at startup that performs initialization
loop(): a function called repeatedly until the board powers off

L'IDE viene fornito con una libreria software denominata "Cablaggio" che può essere utilizzata per operazioni di input / output comuni.


Non disegno più hardware, dopo 25 anni, ma non sono a conoscenza di processori per computer desktop che contengono memoria di sola lettura, tanto meno memoria tale che può avviare un computer.
Rob

@Rob Hai ragione sul fatto che tutti i PC desktop che sono a conoscenza utilizzano un chip di avvio esterno. Ma l'architettura OMAP3 di TI è un esempio di microprocessore con una ROM di avvio interna. Dalla descrizione qui relativa all'avvio di Linux, la prima riga recita "All'accensione un dispositivo OMAP3 inizia l'avvio dalla ROM di avvio interna. Questo codice viene corretto durante il processo di produzione e non può essere modificato. La ROM di avvio legge i pin di configurazione di avvio (SW4 su OMAP3 EVM) che indica alla ROM di avvio dove cercare il primo bootloader esterno. " Ho aggiornato la mia risposta.
Tcrosley,

10

Arduino

Un Arduino è un PCB che contiene un microcontrollore Atmel AVR e solitamente fornisce un set di connettori in un modello standard. Il microcontrollore è in genere preprogrammato con un programma "bootloader" che consente di caricare un programma (chiamato "sketch") nel microcontrollore tramite una connessione seriale TTY (o connessione seriale virtuale su USB) da un PC.

microprocessore

Un microprocessore è un IC che contiene solo un'unità di elaborazione centrale (CPU). L'IC non contiene RAM, ROM o altre periferiche. L'IC può contenere memoria cache ma non è progettato per essere utilizzabile senza memoria esterna.

I microprocessori non possono archiviare i programmi internamente e quindi in genere caricano il software quando sono accesi, ciò comporta di solito un processo di "avvio" a più fasi in cui il "firmware" viene caricato da una ROM esterna e alla fine un sistema operativo viene caricato da altri supporti di archiviazione (ad es. Disco rigido ).

Si trova in genere in un personal computer.

Microcontroller

Un microcontrollore è un CI che contiene una CPU, nonché una certa quantità o RAM, ROM e altre periferiche. I microcontrollori possono funzionare senza memoria o memoria esterne.

Normalmente, i microcontrollori sono programmati prima di essere saldati a un PCB o sono programmabili utilizzando i connettori di programmazione del sistema (ISP o ICSP) tramite uno speciale dispositivo "programmatore" collegato a un personal computer.

I microcontrollori tipici sono molto più semplici e più lenti dei microprocessori tipici, ma credo che la distinzione sia principalmente di scala e applicazione.

Si trova, ad esempio, in elettrodomestici semplici come lavatrici di base.


2

"Arduino" è un ambiente di sviluppo software e una qualsiasi delle diverse schede di microcontrollori per cui l'ambiente software può sviluppare programmi. La maggior parte delle schede utilizza microcontrollori Atmel AVR.


2

Arduino è una piattaforma basata su microcontrollore (ATMEGA 328 per UNO). In generale, un microcontrollore è più adatto di un microprocessore a tutto ciò che richiede il rilevamento degli ingressi. Questo perché i microcontroller come ATMEGA 328 hanno convertitori da analogici a digitali (ADC) per rilevare le tensioni e hanno anche uscite PWM e I / O digitali.

Con Arduino hai anche il sistema Arduino Dev che è più facile da programmare per i principianti e ha una buona comunità per supporto e librerie.

Un touchscreen resistivo si comporta come potenziometri; uno per xe uno per y. Quindi puoi inserirli negli ingressi analogici di Arduino. Vedi qui per i dettagli .

Un'altra opzione è quella di convertire in SPI o I2C con qualcosa come questo , e leggere con Arduino.

Ad ogni modo, penso che Arduino sia una buona scelta.


@tcrosley o qualsiasi altro membro di lunga data .. qualche consiglio a un nuovo collaboratore come me sull'evitare un voto negativo come questo? Le mie risposte sono accurate, risponde alla domanda e fornisce ulteriori dettagli per l'interfaccia con un touchscreen resistivo. Qualcos'altro che avrebbe dovuto includere?
Akellyirl,

3
Non prendere il voto negativo troppo sul serio. Penso che la tua prima frase sia un po 'inaccurata. Arduino è più simile a una piattaforma composta da hardware e software. E una scheda Arduino non è un micro controller ma una scheda progettata attorno a un micro controller.
Rev1.0

1
Come dice Rev1.0: "Arduino è un microcontrollore" non è vero. Arduino è un SBC (Single Board Computer).
flup,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.