Microcontrollore e Strzyża: differenze tra le pagine

(Differenze fra le pagine)
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Etichette: Modifica da mobile Modifica da web per mobile
 
Nessun oggetto della modifica
 
Riga 1:
{{S|Pomerania}}
[[File:PIC18F8720.jpg|thumb|Microcontrollore [[PIC (microcontrollore)|PIC]] 18F8720 in contenitore 80-pin [[TQFP]].]]
{{Divisione amministrativa
Ul '''microcontrollore''' (in inglese '''microcontroller''' in acronimo '''MCU''' ovvero ''MicroController Unit''), in [[elettronica digitale]], è un [[circuito integrato|dispositivo elettronico integrato]] su singolo [[curcuito elettronico]].
|Nome = Strzyża
|Nome ufficiale =
|Panorama =
|Didascalia =
|Bandiera =
|Stemma =
|Stato = POL
|Grado amministrativo = 4
|Divisione amm grado 1 = Pomerania
|Divisione amm grado 2 = Danzica
|Divisione amm grado 3 = Danzica
|Divisione amm grado 4 =
|Capoluogo =
|Amministratore locale = [[Aleksandra Dulkiewicz]]
|Partito = [[Piattaforma Civica|PO]]
|Data elezione =
|Data istituzione =
|Latitudine gradi = 54
|Latitudine minuti = 22
|Latitudine secondi =
|Latitudine NS = N
|Longitudine gradi = 18
|Longitudine minuti = 38
|Longitudine secondi =
|Longitudine EW = E
|Altitudine =
|Superficie = 1.09
|Note superficie =
|Abitanti = 5759
|Note abitanti =
|Aggiornamento abitanti = 2011
|Sottodivisioni =
|Divisioni confinanti =
|Lingue =
|Codice postale =
|Prefisso = (+48) 58
|Codice ISO =
|Codice statistico =
|Nome abitanti =
|Immagine localizzazione =
|Mappa = Gdansk strzyza.svg
|Sito =
}}
'''Strzyża''' (in [[Lingua tedesca|tedesco]]: ''Striess, Strūss'') è una [[Frazioni della Polonia|frazione]] di [[Danzica]], situata nella parte centro-occidentale della città.
 
==Altri progetti==
Nato come evoluzione alternativa al [[microprocessore]] ed utilizzato generalmente in [[Sistema embedded|sistemi embedded]] ovvero per applicazioni specifiche (''[[special purpose]]'') di [[controllo digitale]].
{{interprogetto|commons=Category:Strzyża (Gdańsk)}}
 
==Descrizione==
È progettato per interagire direttamente con il mondo esterno tramite un [[programma (informatica)|programma]] residente nella propria [[memoria (informatica)|memoria]] interna e mediante l'uso di ''pin'' specializzati o configurabili dal [[programmatore]].
Sono disponibili in 3 fasce di capacità elaborativa (ampiezza del ''bus'' dati): 8 bit, 16 bit e 32 bit.
 
Generalmente sono dotati di [[CPU]] [[CISC]] con architettura [[John von Neumann|von Neumann]], anche se più di recente sono apparsi microcontrollori con CPU ad architettura [[RISC]], come ad esempio il [[Texas Instruments]] [[TI MSP430|MSP430]], meglio predisposti per l'utilizzo dei moderni [[compilatori]], piuttosto che dell'[[Assembly]]. Taluni microcontrollori complessi (come il [[Freescale]] 68302) hanno un processore RISC separato dal processor core.
 
L'ampia gamma di funzioni di comando e controllo disponibili, sia analogiche che digitali, integrate sullo stesso chip, permette l'impiego delle MCU in sostituzione di [[scheda elettronica|schede elettroniche]] cablate tradizionali ben più complesse e costose.
 
Per i microcontrollori sono pubblicati sistemi di sviluppo amatoriali e professionali anche in modalità ''[[open source]]''.
 
== Cenni storici ==
[[File:INTEL8048H.png|thumb|Il primo microcontrollore]]
Il primo ''computer on-chip'' ottimizzato per applicazioni di controllo è stato il modello [[Intel 8048|8048]] di [[Intel]], uscito nel [[1975]], con RAM e ROM sullo stesso chip. Questo componente è stato utilizzato in più di un miliardo di tastiere per PC e numerose altre applicazioni.
 
Nei primi anni di sviluppo del microcontrollore, la maggior parte dei modelli era commercializzata in due varianti: la più economica era dotata di memoria di programma programmata in fabbrica (ROM) su specifiche del cliente oppure programmabile dall'utente una sola volta ([[Programmable Read Only Memory|OTP]], ''One Time Programming''); la seconda, più costosa, aveva la memoria di programma cancellabile EPROM mediante esposizione a luce ultravioletta del chip tramite la finestrella trasparente che lo sovrastava. La programmazione del [[firmware]] veniva fatta direttamente in [[linguaggio macchina]].
 
Lo sviluppo della tecnologia [[CMOS]] e successivamente della [[HCMOS]], nella prima metà degli anni ottanta, ha fornito un impulso decisivo alla diffusione dei microcontrollori, consentendo una notevole riduzione dei consumi e della dissipazione nei [[Circuito integrato|chip]].
 
Per molti anni [[Motorola]] è stata leader mondiale per i microcontrollori: il suo [[68HC11]] si rivelò essere una pietra miliare, allorché fu presentato sul mercato nel [[1985]]; oltre alla [[RAM]] ed alla [[Read Only Memory|ROM]] integrava [[Convertitore A/D|convertitori A/D]], porte di [[I/O]], SPI (''[[Serial Peripheral Interface]]''), SCI (''Serial Communication Interface''), [[Temporizzatore|timers]] multifunzione, [[EEPROM]], [[interrupt]]s ed altro ancora, comprendendo persino il [[firmware]] di un [[Monitor (informatica)|monitor]] (''Buffalo'') che permetteva di effettuare il caricamento di programmi in RAM e il [[debug]] on-chip, tramite interfaccia seriale. Con un ciclo macchina di 333 [[Nanosecondo|ns]] (3 [[MHz]] di [[clock]]) è in grado di eseguire mezzo milione di istruzioni al secondo, consumando qualche decina di mA; il suo progetto si è dimostrato talmente innovativo da essere ancora prodotto ed utilizzato dopo più di un quarto di secolo.
 
Nel [[1993]] [[Microchip Technology|Microchip]] ha introdotto il modello di MCU PIC16C84, caratterizzato da memoria programma in EEPROM, ovvero cancellabile elettricamente, che permetteva sia lo sviluppo veloce del prototipo del prodotto finito, sia la modifica del [[Firmware]] a circuito montato (''In-System Programming''). La semplificazione del contenitore (''[[Package (elettronica)|package]]''), senza finestrella in quarzo, ha contribuito a ridurre il costo finale del componente.
 
Nello stesso anno [[Atmel]] [http://www.atmel.com/] ha presentato il primo MCU che utilizzava una memoria di tipo [[Memoria flash|flash]], ancora più semplice e veloce da programmare/modificare, più compatta e con un ciclo di vita (cancellazioni) molto più elevato.
 
Di pari passo venivano sviluppate interfacce, quali [[JTAG]] e ''On Chip Emulator'' (ONCE) della famiglia [[Coldfire]] di Freescale, che consentivano di effettuare sia il [[debugging]] on-chip, che il caricamento e la programmazione della [[Memoria flash|flash]] interna. Queste interfacce potevano essere controllate da applicazioni software su [[PC]], che rendevano molto più semplice il [[Background Debug Mode interface|debug in background]] di programmi in [[linguaggio ad alto livello]] (tipicamente il [[C++]]), e di conseguenza meno costoso lo sviluppo del firmware, limitando la necessità degli [[In-circuit emulator|emulatori in-circuit]].
 
Tutto ciò ha ulteriormente incrementato l'utilizzo del microcontrollore nelle più disparate applicazioni.
 
== Differenze tra microprocessore e microcontrollore ==
Quando nell'aprile del [[1972]] [[Intel]] ha introdotto sul mercato il primo ''processore'' a 8 bit - lo 8008 - esso consisteva di una [[unità aritmetica e logica|ALU]] (''Arithmetic & Logical Unit'', ALU) per svolgere operazioni logiche e matematiche e di una [[CPU|unità di elaborazione]] elementare (''Control Processing Unit'', CPU) per controllare il flusso di dati e indirizzi tra la ALU e i circuiti esterni di supporto.
 
Successivamente, l'architettura interna del microprocessore (in seguito spesso chiamato semplicemente CPU) si è evoluta velocemente con lo sviluppo di blocchi interni via via più complessi (maggior numero di bit elaborati e movimentati) e con capacità e velocità di calcolo crescenti in modo esponenziale.
 
Per quanto potente, il microprocessore integra sul chip solo la logica di elaborazione mentre richiede sempre delle unità esterne - memorie, gestori di segnali e dispositivi periferici per poter scambiare informazioni e interagire con l'esterno.
 
Il microcontrollore è invece un sistema completo, che integra in uno stesso chip il processore, la memoria permanente, la memoria volatile e i canali (pin) di I/O, oltre ad eventuali altri blocchi specializzati.
 
A differenza dei microprocessori classici, adatti per un uso generale (''[[general purpose]]''), il microcontrollore è inoltre progettato per ottenere la massima autosufficienza funzionale ed ottimizzare il rapporto prezzo-prestazioni in uno specifico campo di applicazioni.
 
Anche l'esecuzione dei programmi applicativi si appoggia su un'architettura hardware diversa da quella tipicamente usata per i microprocessori. Mentre questi ultimi, soprattutto quando usati per computer e personal computer, eseguono i programmi applicativi appoggiandosi a dispositivi di memoria di massa o a memoria volatile, per i microcontrollori il programma applicativo è tipicamente memorizzato su un dispositivo di [[memoria ROM]] (come per esempio una [[EPROM]]) ed è quindi in realtà un [[firmware]].
 
In generale, essendo concepiti per applicazioni specifiche e per l'uso in condizioni ambientali particolari che impongono limitazioni sia in termini di consumi che in termini di dissipazione di potenza, i microcontrollori presentano caratteristiche meno spinte rispetto ai microprocessori ma risultano più economici di questi ultimi sia per l'integrazione in un solo chip di una serie di componenti sia per fattori di [[economia di scala]] legati ai volumi di produzione molto più elevati.
 
{| class="wikitable" style="font-size:90%;width:99%;margin:auto;clear:both;text-align:center;"
|+ Tabella 1: confronto microprocessore vs. microcontrollore<ref>I valori in tabella sono indicativi, per puro confronto di massima, e riferiti al momento della stesura (inizio 2010)</ref>
! style="text-align:left; width: 500px; "|Caratteristica || Microcontrollore || Microprocessore
|-
|style="text-align:left"|Velocità massima di clock||200&nbsp;MHz||4&nbsp;GHz
|-
|style="text-align:left"|Capacità elaborativa massima in [[FLOPS|MegaFLOPS]]||200||5&nbsp;000
|-
|style="text-align:left"|Potenza minima dissipata in watt (in stato di elaborazione<ref>In stato di riposo ''sleep'', il consumo si può ridurre di un fattore 1000.</ref>) ||0,001||50
|-
|style="text-align:left"|Prezzo minimo per singola unità in USD||0,5||50
|-
|style="text-align:left"|Numero di pezzi venduti annualmente (in milioni) ||11&nbsp;000||1&nbsp;000
|}
 
=== DSP ===
Parallelamente al microcontrollore, e in continua evoluzione di potenza e di mercato, esistono i [[Digital Signal Processor|DSP]] (''Digital Signal Processor'') che incorporano moduli specializzati nel trattamento digitale di segnali analogici. I campi tipici di utilizzo sono nel controllo di azionamenti (come i motori), di componenti per auto e [[avionica]], di trattamento di segnali multimediali (codifica/decodifica audio e video, ''[[streaming]]'') e nella telefonia mobile.
 
Il DSP ha tipicamente una struttura a 32 bit, e prossimamente a 64 bit; la sua CPU ha un'architettura esclusivamente [[RISC]].
 
== Componenti del microcontrollore ==
 
[[File:microSTM32.jpg|thumb|right|Microcontrollore [[STMicroelectronics]] STM32F103 R6T6]]
L'architettura del microcontrollore prevede un insieme di moduli fissi, comuni a tutti i modelli, e una serie di possibili estensioni in funzione del costruttore, del prezzo e della fascia applicativa:
 
* Unità di elaborazione: CPU
* Memoria di programma: [[Read only memory|ROM]], [[EPROM]], [[memoria Flash|FLASH]]
* Memoria dati: [[RAM]] e [[EEPROM]]
* [[Oscillatore]] interno o esterno
* Porte di I/O e/o [[General Purpose Input/Output|GPIO]] configurabili
* Gestione ''[[Interrupt]]''<ref>Non presente in tutti i modelli</ref>
* Controller [[Direct Memory Access|DMA]]
* Moduli aggiuntivi
** Contatori e timer
** Moduli di comunicazione: [[USART]], [[I2C]], [[Serial Peripheral Interface|SPI]], [[USB]], [[Ethernet]], [[IrDA]], [[Controller Area Network|CAN]], [[Bluetooth]], [[Wi-Fi]], [[Zigbee]]
** Interfacce analogiche o a tecnologia mista: [[convertitore analogico-digitale|ADC]], [[convertitore digitale-analogico|DAC]], [[modulazione di larghezza di impulso|PWM]], Comparatori analogici
** Interfacce di visualizzazione e controllo: ([[LCD]], Touch sensor)
 
== Motivazioni del successo ==
Il successo e l'enorme crescita del [[mercato]] di questi componenti sono dovuti a questi fattori:
* Basso costo (consente di sostituire 1 o più [[circuiti integrati]] tradizionali a costo inferiore).
* Ampia scalabilità di prestazioni, di complessità (da 8 pin a 144 pin) e velocità (da 1&nbsp;MHz a 200&nbsp;MHz).
* Vasta gamma di dotazioni in periferiche e moduli specializzati.
* Ridotto (al limite = 0) numero di componenti esterni, ovvero semplicità di realizzazione.
* Facilità di programmazione dovuta anche ai numerosi ''tool'' di sviluppo disponibili.
* Ampia (e spesso libera) disponibilità di librerie, codici di esempio e documentazione
* Possibilità e facilità di riprogrammazione (''in-field'' e ''in-system'').
* Grande flessibilità applicativa.
* Brevi tempi di introduzione sul mercato del prodotto finito.
 
== Applicazioni di impiego ==
L'enorme volume di pezzi prodotti deriva dall'impiego massiccio di questo componente nei dispositivi elettronici di consumo e nei prodotti industriali di massa.
 
Difatti, al primo posto in classifica come segmento di mercato troviamo l'''[[automotive]]'' (auto e altri mezzi di trasporto), che utilizza decine, in alcuni casi anche centinaia, di componenti per singola unità industriale venduta.
 
Segue il segmento della telefonia mobile e delle telecomunicazioni in genere, quindi vengono i prodotti medicali, i ''[[elettronica di consumo|consumer]]'' e gli elettrodomestici.
 
Spesso utilizziamo questi dispositivi senza rendercene conto, come per le [[smartcard]] delle carte di credito o per le cartoline musicali di auguri.
 
== Mercato ==
Il microcontrollore occupa una posizione rilevante nel mercato complessivo dei [[semiconduttori]], con una stima di introiti per circa 14 miliardi di dollari statunitensi e 10,8 miliardi di pezzi venduti nel 2008. La stima di crescita prevede un incremento del 10 % fino al 2014, mentre i pezzi venduti saranno 14 miliardi per la fine del 2010.<ref>[http://www.databeans.net/ fonte: Databeans]</ref>
 
È comunque un mercato molto frammentato, con più di 40 produttori e più di 50 architetture, nessuna delle quali detiene più del 5% del mercato. Il segmento delle MCU a 32 bit è quello maggiormente in crescita, con introiti annui attuali (2009) di circa il 25% del totale.<ref>[http://www.luminarymicro.com fonte: Luminary Micro]</ref>
 
I principali (in ordine decrescente per volumi di mercato) sono:<ref>[http://www.databeans.net/newsletter/pdfs_nl/March-2012.pdf fonte: Databeans] {{webarchive|url=https://web.archive.org/web/20140308005615/http://www.databeans.net/newsletter/pdfs_nl/March-2012.pdf |data=8 marzo 2014 }}</ref>
* [[Renesas Technology]] (Giappone)
* [[Freescale Semiconductor]] (USA)
* [[Atmel]] (USA)
* [[Microchip Technology]] (USA)
* [[Infineon Technologies]] (Germania)
* [[Texas Instruments Incorporated]] (USA)
* [[Fujitsu]] (Giappone)
* [[NXP Semiconductors]] (Paesi Bassi)
* [[STMicroelectronics]] (Francia, Italia)
* [[Samsung Electronics]] (Corea del Sud)
 
== Sistemi di sviluppo ==
 
Per [[sistema di sviluppo]] s'intende l'insieme di strumenti (kit) software e hardware necessari alla generazione del [[codice macchina]] che deve essere eseguito dal processore (''implementazione del software''), al suo collaudo e messa a punto ([[Collaudo del software|debug]]).
 
L'implementazione consiste nella stesura del programma in linguaggio [[Assembly]] o di alto livello (tipicamente il [[C]]), utilizzando un [[Editor (informatica)|editor]] di testo generico o specifico per quel linguaggio. Una volta scritto, se in linguaggio Assembly, il programma deve essere ''assemblato'', cioè tradotto nell'effettivo codice macchina numerico (generalmente [[esadecimale]]). La conversione viene fatta da un [[Assemblatore]] specifico per processore, o famiglia di processori. Se codificato in alto livello, il programma deve essere ''compilato'', per mezzo di un [[compilatore]] che lo converte prima in linguaggio ''Assembly'', e quindi nell'effettivo codice macchina, in due passaggi successivi. Anche il compilatore deve essere specifico per processore, o famiglia di processori.
 
Nella maggior parte dei casi, la complessità delle funzioni di un programma per microprocessore, richiede la [[Modularità|suddivisione]] in moduli funzionali (o sottoprogrammi). Ciascun modulo viene quindi assemblato in modalità [[Gestione della memoria|rilocabile]] (ad indirizzi non determinati). L'incorporamento di tutti i moduli assemblati agli indirizzi definitivi, viene effettuato, in un ulteriore passaggio, da un [[Linker]], che genera il codice macchina definitivo ([[codice eseguibile]]), in un formato opportuno per poter essere trasferito nella memoria del processore, ed eseguito.
 
La fase di debug consiste nel far eseguire il software dal processore, in condizioni quanto più simili a quelle reali di funzionamento ([[emulazione]]), verificando (in [[Real-time|tempo reale]]) che il suo comportamento ad ogni evento previsto, sia conforme alle specifiche di progetto. Nel caso di errori o anomalie, il software viene corretto, un nuovo codice eseguibile generato e trasferito in memoria, per essere nuovamente verificato. Questo processo continua fino a che il programma non sia stato completamente collaudato. Successive fasi di validazione e verifica, possono richiedere ulteriori interventi sul software da parte dello [[Sviluppatore software|sviluppatore]].
 
Di base un [[debugger]] deve permettere:
* Il caricamento del codice eseguibile in memoria
* L'avvio e l'interruzione del codice eseguibile
* L'inserimento di [[breakpoint]]s, eventualmente condizionati a specifici eventi
* L'ispezione e modifica di variabili, dati e registri
* L'ispezione di parti del programma
 
Esistono due modalità di debug: tramite emulatore in-circuit ([[In-circuit emulator|ICE]]) o tramite l'interfaccia di debug integrata nel microprocessore. Per entrambe le modalità sono disponibili ambienti integrati di sviluppo ([[Integrated development environment|IDE]]) per [[PC]], che gestiscono tutte le fasi descritte, dall'editing al debugging in alto livello.
 
== Note ==
<references/>
 
== Voci correlate ==
* [[Sistemi embedded]]
* [[Registri hardware nei microcontrollori]]
* [[Sistema di sviluppo]]
 
== Altri progetti ==
{{interprogetto|etichetta=microcontrollore|wikt|commons=Category:Microcontrollers}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{cita web|http://www.picguide.org|Base di dati di progetto del microcontroller di PIC}}
* {{cita web|http://sdcc.sourceforge.net|home page dell'SDCC}}
* {{cita web|http://sdccokr.dl9sec.de/resources.htm|SDCC Open Knowledge Resource}}
* {{cita web|http://www.freertos.org/portcygn.html|Un porting del FreeRTOS per l'8051}}
* {{cita web|http://www.8052.com/users/robotics/sdcc.phtml|Using SDCC on the AT89C52 (derivativo dell'8051)}}
* [http://www.bertos.org/use/examples-projects/arduino-aprs/ Automatic Packet Reporting System (APRS)] con [[BeRTOS]] per [[Arduino (hardware)|Arduino]]
* {{Thesaurus BNCF}}
 
{{Danzica}}
{{Controllo di autorità}}
{{Portale|elettronica|informaticaPolonia}}
 
[[Categoria:Microcontrollori|Quartieri di Danzica]]