Un gran confusione: PIC/ICS chip

Ciao a tutti
fino pochi giorni fa pensavo di capire la differenza tra microcontrollore e microprocessore in realtà mi sbagliavo.
Da quello che ho capito leggendo alcuni articoli:
un microprocessore è un circuito integrato destinato unicamente ad effettuare calcoli
invece un micro-controllore riesce fare molto di più. ma un'altra cosa che non avevo capito sarebbe:
Un microcontrollore contiene al suo interno un microprocessore (CPU).
Sui microcontrollore si parla di timer a 8, 16 fino mi sa a 84bit o di più invece nei microprocessore si parla frequenza ovvero dai pochi Mega ai parecchi Giga (esempio 4Ghz).

Adesso la mia domanda è ciò che può fare un microcontrollore lo può fare un microprocessore?

Un'altro articolo dice che un microprocessore senza RAM non serve a nulla, nel senso che ci sono solo dei transistor al suo interno invece in questo video parla di registri, di clock e molto altro. Quindi a quanto pare sono uguali in architettura.

Tutti i microprocessori che ho trovato possono gestire delle uscite video di tipo VGA, HDMI, TFT touch screen invece i microcontrollori no possono farlo.

Un'altra domanda è esistono dei microcontrollori in grado gestire delle uscite video?

Cercando su internet ho trovato molti articoli su come programmare i microcontrollori ma niente su come farlo con i microprocessori, sembrano dei fantasmi.

L'ultima domanda prima di concludere è che sto programmando dei motori passo passo per la mia CNC, il problema è che arduino Uno non risponde alle mie esigenze quindi dovrò usare la DUE ma le librerie già scritte da me non sono compatibile con questo ultimo. Allora ho pensato di disegnare e produrre una scheda con i driver l293 e microcontrollore insieme ma allo stesso tempo gestire delle uscite video LCD touch screen per essere indipendente dal pc.

Cosa mi consigliate microprocessore o microcontrollore?

Grazie in anticipo.

Hai un gran casino in testa.

Un microprocessore ha al suo interno registri e piccoli quantitativi di memoria, non ha però generalmente una memoria non volatile e periferiche come ADC e DAC (per acquisire e riprodurre audio per esempio) ne memoria per realizzare un sistema digitale utile a fare qualcosa, necessita perciò di memoria RAM esterna.

Un microcontrollore integra un microprocessore e spesso memoria non volatile (flash, eeprom, etc..), DAC, ADC, etc.. è un oggetto che ha dentro tante cose però non ha la potenza di calcolo di un microprocessore, generalmente costa poco, raggiunge frequenze più basse, etc..

Quindi è ovvio che un microcontrollore può svolgere da solo funzioni che un processore non sarebbe in grado di fare. Per esempio per riprodurre l'audio necessita di una scheda audio mentre un microcontrollore può farne a meno per esempio (vero in alcuni casi).

Le uscite video sono segnali elettrici molto veloci, serve qualcosa con frequenza molto elevata. Alcuni microcontrollori sono abbastanza veloci per generare segnali video.

microprocessori ovviamente = processori = il computer con cui stai scrivendo che puoi programmare in C, hai però un sistema operativo e non tutto è concesso. Con Virtualbox e similari puoi però programmarli "bare-metal" virtualmente.

Per il tuo progetto hai pensato ad una Raspberry per la parte di interfaccia grafica? Prova a cercare in quella direzione

Ciao

Semplificando al massimo, un microprocessore è solo l'unità di calcolo, sia logico che matematico, non possiede nessuna periferica, può avere un limitato quantitativo di ram interna ad altissima velocità, la cache, allo scopo di velocizzare l'esecuzione del programma.
Il microprocessore richiede sempre ram esterna per funzionare, il software gira esclusivamente sulla ram, la memoria di massa, flash/hd/ssd, serve solo a scopo di storage dei programmi/dati.
Il microprocessore comunica col mondo esterno esclusivamente tramite un address bus, un data bus e un control bus, tutte le periferiche devono essere mappate su questi bus, non possiede nessun tipo di periferica integrata.
Un microcontrollore (MCU) è l'equivalente di un computer su un singolo chip, in pratica al suo interno c'è un microprocessore dotato della relativa memoria e le varie periferiche, tipicamente una MCU per funzionare richiede solo l'alimentazione e il clock, quest'ultimo può anche essere interno.
Tipicamente le MCU non possono competere con un microprocessore puro come velocità e potenza di calcolo, i primi sono decisamente più performanti, per contro non richiedono hardware esterno per funzionare e sono disponibili con ampia scelta di modelli.
Di micro puri ormai ne esistono pochi visto che si usano quasi esclusivamente su i PC e pochi altri apparati, al loro posto adesso si preferiscono i SoC (System on Chip) che sono l'equivalente di un vero pc dentro un singolo chip, al massimo due chip, al loro interno c'è un micro che può essere sia un X86 che un ARM e varie periferiche hardware come schede video, porte seriale, usb, etc, i SoC richiedono sempre ram esterna, p.e. gli smartphone e i tablet sono realizzati con dei SoC.
Alcune MCU di fascia alta integrano al loro interno anche un display controller che gli permette di pilotare display lcd o monitor di vario tipo, è l'equivalente di una scheda video e può disporre anche dell'accelerazione 3D.

Grazie per le risposte, mi pare di aver capito adesso la differenza.
Guardando il sito della microchip vedo una vasta gamma di microcontrollori ma non so in base a che cosa scegliere se volessi gestire le uscite video per gestire i display LCD, TFT ecc.

Qualcuno di voi mi potrebbe aiutare per favore.

Grazie in anticipo.

bilal-jih:
L'ultima domanda prima di concludere è che sto programmando dei motori passo passo per la mia CNC, il problema è che arduino Uno non risponde alle mie esigenze quindi dovrò usare la DUE ma le librerie già scritte da me non sono compatibile con questo ultimo. Allora ho pensato di disegnare e produrre una scheda con i driver l293 e microcontrollore insieme ma allo stesso tempo gestire delle uscite video LCD touch screen per essere indipendente dal pc.

Occhio che oltre ad avere una MCU diversa, la Uno lavora con tutti i pin a 5V, mentre la Due solo a 3,3V.
Esiste la Teensy 3.1 che ha buona compatibilità con codice/librerie Arduino e monta una MCU Cortex-M4 a 70Mhz
Poi c'e' anche la scheda chipKit Uno32 che ha formato Arduino Uno ma monta un PIC32 a 80Mhz e ha un IDE simil-Arduino ma praticamente rimasto alla versione 0023.
Lavorano tutte e due a 3,3V ma sui pin digitali (no gli analogici!!!) sono 5V tolerant.

Scusa, ma se la Uno non ti basta, perchè non pensi ad Arduino Mega? ???

Se vuoi fare qualcosa di grafico stai scegliendo… la via del dolore (cit. le due torri)

Oltre all’uscita video il problema è dove prendi i dati da visualizzare? Servono grandi quantitativi di memoria, ci sono tanti problemi

C’è un bordello di codice complicato da scrivere, usa un minipc come quello che ti ho consigliato, ci colleghi un TFT con touch compatibile (il cui driver è stato già scritto da altri) e sei a cavallo spendendo poco

bilal-jih:
Guardando il sito della microchip vedo una vasta gamma di microcontrollori ma non so in base a che cosa scegliere se volessi gestire le uscite video per gestire i display LCD, TFT ecc.

Devi andare come minimo su i PIC32, comunque non è una cosa semplice da gestire, fai molto prima ad usare una qualunque board Linux Embedded, a partire dell'economicissima Raspberry, se devi gestire un display/monitor.

E poi che ci devi fare con il video ? Qual’e’ lo scopo finale ?

Voglio fare una cosa simile a questo immagine come nei centri di lavoro industriale

Devi andare come minimo su i PIC32, comunque non è una cosa semplice da gestire, fai molto prima ad usare una qualunque board Linux Embedded, a partire dell’economicissima Raspberry, se devi gestire un display/monitor.

Al posto di Raspberry, avevo pensato di usare OLinuXino-Micro come indicato in questo articolo

Scusa, ma se la Uno non ti basta, perchè non pensi ad Arduino Mega?

Volevo astenermi delle schede e programmare un microcontrollore
in grado di rispondere a tutte le mie esigenze come ad esempio i driver l293 per i motori passo passo, sensori, microcontrollore su un singolo scheda dato so programmare in assembly, c, python ecc

LCD6-5-TFT-O-F-a.jpg

Mettici un mini-pc (per la parte grafica) e un microcontrollore (per i sensori) insieme, non è vietato :wink: