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,

la programmazione del microcontrollore AVR

apri e scegliere nuovo progetto e scegliere la posizione del file hex, come nella seguente immagine

la programmazione del microcontrollore AVR

Il passo successivo è quello di scegliere la famiglia di microcontrollori

la programmazione del microcontrollore AVR

Dopo di che si aprirà la seguente finestra con il codice di avviamento

la programmazione del microcontrollore AVR

E ora, si prega di scrivere il seguente codice

la programmazione del microcontrollore AVR

Il passo successivo è costruire il vostro programma premendo il tasto F7

la programmazione del microcontrollore AVR

Dopo di che, potrete trovare il file hex nella posizione scelta di

la programmazione del microcontrollore AVR

Il prossimo passo è utilizzare il simulatore di Proteus

E ora creare uno schema selezionato un template

la programmazione del microcontrollore AVR

E scegliere di non creare un layout di PCB

la programmazione del microcontrollore AVR

Infine, abbiamo fatto, ma abbiamo bisogno di aggiungere il file hex, come nella seguente immagine

la programmazione del microcontrollore AVR

Ora modificare CKSEL Fusibili

la programmazione del microcontrollore AVR

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

Leave a Reply

Il tuo indirizzo email non sarà pubblicato.