Guida passo passo alla programmazione del microcontrollore
Questa è una guida passo passo per coloro che vogliono iniziare con la programmazione del microcontrollore. L’articolo inizia con l’introduzione di alcuni termini di base che verranno utilizzati nella guida, un elenco di strumenti, linguaggi di programmazione e alla fine, un esempio di un codice scaricabile con una guida passo passo che è possibile utilizzare per praticare la programmazione del microcontrollore.
Ma prima di immergersi nella programmazione del microcontrollore. Definiamo i primi due termini di base: Hardware e software.
L’hardware è costituito dai componenti fisici del sistema come chip, tastiera, mouse, monitor, memorie, dispositivi I/O. L’hardware è più difficile da sviluppare rispetto al software, deve essere progettato per applicazioni molto specifiche ed è una soluzione molto efficiente e perfetta nei sistemi ad alta velocità.
Il software è i componenti non fisici o le applicazioni che girano sull’hardware come sistemi operativi, giochi per computer e applicazioni di rete. Il software è altamente configurabile, facile e veloce da sviluppare, anche molto economico rispetto all’hardware.
Che cos’è un microcontrollore
Per capire cos’è un microcontrollore, dobbiamo prima capire cos’è un microprocessore o una CPU (Central Processing Unit). Una CPU è un cuore di qualsiasi sistema informatico, è come il cervello umano quando si esegue un’attività. Possiamo fondamentalmente dividerlo in due parti essenziali:
Unità di controllo: Questa unità viene utilizzata per recuperare i dati dalla memoria.
Unità di esecuzione: questa unità viene utilizzata per eseguire o eseguire i dati.
Tipi di processori
Esistono molte categorie di processori come processori generici, processori di sistema specifici per applicazioni e sistemi multiprocessore. Scopo generale del processore dispone di molti tipi:
▪ Microprocessore
▪ Microcontrollore
▪ processore Embedded
▪ processore di segnale Digitale
Microprocessore è un dispositivo a semiconduttore o di un computer su un chip, ma non completamente funzionale computer. La sua unità di elaborazione centrale contiene
▪ ALU
▪ Programma di contatori
▪ Registri
▪ Altri circuiti (clock time, interrupt)
Un microcontrollore è un IC che contiene un microprocessore e di alcune periferiche per essere funzionale completa di computer, periferiche, ad esempio, ADC, RAM, ROM, DAC.
Storia del microcontrollore
Originariamente, Intel corporation è stata la prima produzione di microcontrollori. Il primo microcontrollore è stato prodotto nel 1971 negli Stati Uniti. Era un microcontrollore a 4 bit con il nome i4004. Ultimamente, Intel ha prodotto modelli più sofisticati in quel momento con un microcontrollore a 8 bit e in seguito un microcontrollore a 12 bit è stato sviluppato da Toshiba.
Applicazioni dei microcontrollori
I microcontrollori hanno molte applicazioni in molti settori, ad esempio automotive, medicale, automazione industriale, aerospaziale, robotica.
Nel settore automobilistico, ad esempio, le auto moderne al giorno d’oggi hanno più di 100 microprocessori per sistemi come aria condizionata, ABS, EBD e anche ADAS o sistemi di assistenza alla guida avanzati come adaptive curies controller e lane assist, quanto segue è un’immagine di una centralina o di un’unità di controllo elettronica.
Nel dominio medico, ci sono dispositivi medici che includono microcontrollori come una risonanza magnetica, set di test del glucosio, ECG portatile. L’immagine seguente, è un dispositivo di test del glucosio.
Nel settore aerospaziale, la maggior parte degli aerei sono stati progettati con nuovi sistemi avionici utilizzando microcontrollori. Inoltre, ci sono sistemi di controllo di volo, sistema di controllo del traffico aereo, sistemi di navigazione e meteo che sono tutti basati su microcontrollori.
Microcontrollori popolari
Esistono molti tipi e piattaforme di microcontrollori, ma la selezione di un microcontrollore dipende da molti fattori:
▪ Applicazione
▪ Bilancio
▪ Prestazioni
▪ Numero di pin GPIO
▪ dimensione della Memoria
▪ Temperatura dell’ambiente operativo
▪ consumo di corrente
Microcontrollore AVR
L’immagine seguente mostra il diagramma a blocchi di AVE12DA, uno dei più popolari microcontrollore famlily — il microcontrollore AVR:
microcontrollori AVR è prodotto dalla Atmel corporation (oggi: Microchip), Atmel ha 6 famiglie di microcontrollori AVR, 4 famiglie come microcontrollori general-purpose e 2 come microcontrollori scopo specifico. Scopo generale microcontrollori sono:
▪ 8 bit – mega AVR
▪ 8 bit – Piccoli
▪ 8 & 16 bit – AVR Xmega
▪ 32 bit AVR
scopo Specifico microcontrollori sono:
▪ Automotive AVR
▪ Gestione della Batteria
Automotive AVR, dal suo nome, esso è stato sviluppato per applicazioni automotive. Può funzionare a temperature molto elevate fino a 150 gradi Celsius e include sistemi di protezione per problemi di cortocircuito.
Gestione della batteria il microcontrollore è sviluppato per i sistemi di gestione della batteria per garantire le operazioni di carica e scarica.
Esempi di piattaforme AVR
▪ Arduino UNO
▪ Adafruit Blue fruit Micro
▪ Raspduino
▪ Digispark Pro
ARM Microprocessore / microcontrollore
ARM microprocessore è il processore più popolare in il mondo, in particolare, nelle applicazioni consumer. Potresti avere un dispositivo basato su processore ARM, ma non lo sai! ARM è principalmente un componente chiave di qualsiasi sistema embedded a 32 bit di successo. Il primo braccio è stato sviluppato nel 1985.
Tecnologia RISC
IL BRACCIO viene utilizzato con tecnologia RISC, RISC sta per computer set di istruzioni ridotto, è una filosofia di design per fornire semplici istruzioni all’interno di un singolo ciclo. Si basa più sul software. D’altra parte, la tecnologia CISC si basa più sull’hardware.
La tecnologia RISC si concentra sulla riduzione del set di istruzioni del processore. D’altra parte, il processore CISC ha un numero non fisso del set di istruzioni.
ARM Caratteristiche
Arm ha molte caratteristiche per ogni progettista di sistemi embedded è alla ricerca di, ad esempio a basso consumo energetico a causa delle sue dimensioni compatte, anche ad alta densità di codice è un’altra caratteristica dal momento che stiamo sviluppando sistemi embedded, avremo risorse limitate nella maggior parte dei casi.
Struttura interna del microcontrollore basato su ARM
Questa figura mostra la struttura interna della maggior parte dei dispositivi basati su ARM:
Le caselle rappresentano le funzioni, le linee rappresentano gli autobus. Parliamo di più su ogni componente nei dettagli:
▪ Il BRACCIO processore è il componente principale è responsabile per le operazioni di trattamento
▪ dispositivi in grado di coordinare le funzioni di sistema come memoria e controller di interrupt
▪ Periferiche vengono utilizzate per fornire il sistema di ingressi e uscite
▪ Un bus è utilizzato per lo scambio di dati tra le diverse componenti del sistema
Esempi di piattaforme ARM
Ci sono molti dispositivi e piattaforme embedded, che hanno microprocessore arm ad es.
▪ Arduino due
▪ Raspberry Pi
▪ STM32F103C8T6
▪ NXP LPC1768
Altro Microcontrollore e Piattaforme
Come abbiamo detto prima di selezionare un microcontrollore o una piattaforma dipende da molti fattori (budget, numero di pin, etc.…). Ci sono anche altri microcontrollori e piattaforme, ad esempio
▪ Microcontrollori PIC
▪ 8051
▪ ESP32
▪ Motorola Microcontrollers
Strumenti software e hardware del microcontrollore
Dalla creazione del microcontrollore, ci sono stati molti tipi di strumenti di sviluppo software e hardware. Naturalmente, alcuni degli strumenti possono essere utilizzati su vari tipi di microcontrollori, ma alcuni sono molto specifici per microcontrollore. Prima di iniziare con la programmazione del microcontrollore, si consiglia di acquisire familiarità con gli strumenti di programmazione del microcontrollore e, ultimo ma non meno importante, il processo di sviluppo.
Utilizzando strumenti di sviluppo embedded, potremmo aver bisogno di strumenti come segue:
Assembler
È uno strumento software che converte il codice sorgente in assembly in codice macchina, ad esempio (GNU assembler).
Compilatore
È un programma software che copre il codice sorgente in un linguaggio di programmazione di alto livello in linguaggio assembly o codice macchina. La compilazione può essere:
▪ Nativo: significa che si esegue il compilatore e il codice generato sulla stessa macchina
▪ Cross: significa che si esegue il compilatore su una macchina e il codice generato viene eseguito su una macchina diversa (architettura del processore).
Linker and Locator
Un linker è un programma che raccoglie e collega le compilazioni e assembla le operazioni e produce un singolo exe.
Un locator è uno strumento di programma che può essere utilizzato per modificare la mappa di memoria dell’output del linker.
Simulator
Si tratta di un programma che imita scenario reale, produce un’approssimazione dei sistemi in tempo reale. Viene utilizzato un simulatore:
▪ se l’hardware reale non è disponibile
▪ in ambienti e scenari di test pericolosi
Debugger
È un programma software e un dispositivo hardware che può essere interfacciato al mio PC al mio target incorporato. Viene utilizzato un debugger:
▪ impostare i punti di interruzione
▪ traccia di esecuzione
▪ per eseguire il dump della memoria
Hardware debugger può essere
▪ debugger in-circuit
▪ debug software per agenti a bordo
Flash loader
si tratta di un programma e di un dispositivo hardware che può essere utilizzato per:
▪ Programma di ROM/Flash
▪ controllare le variabili
▪ Cancellare ROM/Flash
Profiler
Profiler è uno strumento per monitorare le prestazioni del software di codice
Ambiente di Sviluppo Integrato
è un programma software che ha più strumenti in uno. Essa può includere
▪ editor di Testo
▪ Compilatori
▪ Debugger
▪ Profiler
▪ Simulatori
▪ Linker
Microcontrollore Software Lingue
Possiamo classificare in due tipi:
di Alto livello
▪ C/C++
▪ Java
▪ Ada
Utilizzo di questo tipo di fornire un’astrazione dal livello hardware
a Basso livello
codice Macchina
è di 0 e 1, e difficile essere scritti da esseri umani, ma facile per il computer per capire
Montaggio
è un codice mnemonico e pseudo istruzioni per migliorare la leggibilità
Esempi:
Un’istruzione è costituita da mnemonici (opcode) + operandi
Opcode è un’operazione presa da un processore della macchina
Operandi è l’obiettivo finale; l’opcode deve prendere un’operazione per.
Il linguaggio assembly è leggibile e comprensibile più del codice macchina, ma è necessario utilizzarlo su un processore specifico e avere conoscenza della sua architettura.
C/C++ Linguaggi di Programmazione
linguaggi di Alto livello con le seguenti caratteristiche
▪ Facile scrivere
▪ Flessibile
▪ Processore indipendente
▪ Elevata produttività
la Programmazione del Microcontrollore Esempio con AVR ATMEGA16
ATmega 16 ha le seguenti caratteristiche:
▪ 16 Kb di sistema Self memoria flash programmabile
▪ 512 Bytes di EEPROM
▪ 1 Kbyte di SRAM Interna
▪ Programmazione di Blocco per la sicurezza
Caratteristiche di Periferiche
▪ Contatore in Tempo Reale con Separata Oscillatore
▪ Programmabile Seriale UART
▪ Quattro Canali PWM
▪ 8-canale, 10-bit ADC
▪ On-chip Oscillatore
▪ Alimentazione-Riposo e Brown-out di Rilevamento
▪ Oscillatore RC Interno e Sorgenti di Interrupt
▪ Tensioni (da 2,7 v a 5.5v)
Esempio di programma lampeggiante a LED utilizzando ATmeg16 e Proteus
Programma lampeggiante a LED in sistemi embedded come il programma “hello world” nello sviluppo di applicazioni. Nell’esempio seguente, imparerai e userai Proteus simulator per eseguire il tuo primo programma. Per scaricare i file di origine, vai a questa cartella.
Scrivere il programma con Atmel studio
Dopo aver scaricato l’IDE,
apri e scegliere nuovo progetto e scegliere la posizione del file hex, come nella seguente immagine
Il passo successivo è quello di scegliere la famiglia di microcontrollori
Dopo di che si aprirà la seguente finestra con il codice di avviamento
E ora, si prega di scrivere il seguente codice
Il passo successivo è costruire il vostro programma premendo il tasto F7
Dopo di che, potrete trovare il file hex nella posizione scelta di
Il prossimo passo è utilizzare il simulatore di Proteus
E ora creare uno schema selezionato un template
E scegliere di non creare un layout di PCB
Infine, abbiamo fatto, ma abbiamo bisogno di aggiungere il file hex, come nella seguente immagine
Ora modificare CKSEL Fusibili
Salvare e fare clic su play
E si può vedere che il LED è spento per 500ms (a sinistra) e per 500ms (lato destro)
Programma di Spiegazione riga per riga
Per scaricare il file di origine, si prega di andare a questa cartella.
#definire f_CPU 100000UL // per creare una costante e scegliere la velocità del processore
#include <avr/io.h >/ / per richiamare alcuni file per ingressi e uscite
#include < avr / delay.h> // richiamo di questo file per utilizzare le funzioni di ritardo
int main(void){ // la funzione di avvio e il programma principale
DDRA = 0b0000001; // per configurare il pin di uscita / direzione
While(1){ // ciclo per sempre
PORTA = 0b00000001; // per fare il PA0 = 1 e uscita 5v (LED acceso)
_delay_ms(500); // ritardo di mezzo secondo
PORTA = 0b0000000; // per fare il PA0 = 0 e l’uscita 0v (LED spento)
_delay_ms (500); //ritardo di mezzo secondo
}
ritorno 0;
} //fine del programma
Conclusione
al giorno d’Oggi i sistemi embedded sono utilizzati in prodotti di importanza vitale e può essere utilizzato per proteggere e salvare un sacco di persone, come nel dominio della medicina e di altre applicazioni. Dovresti continuare ad imparare dopo aver ottenuto una panoramica e un’introduzione sulla programmazione del microcontrollore. Il tuo prossimo passo dovrebbe essere l’apprendimento della progettazione di software embedded e dei sistemi attivati in tempo reale.
https://www.faa.gov/regulations_policies/handbooks_manuals/aviation/phak/
AVR Microcontroller and Embedded Systems: Pearson New International Edition: Using Assembly and C, Muhammad Ali Mazidi,DeVry University
ARM System Developer’s Guide Progettazione e ottimizzazione del software di sistema Un volume della serie Morgan Kaufmann in Computer Architecture and Design Book * 2004