Microcontrollori

23
I Microcontrollori Realizzata da: Yassine Dallali Sandrini Samuele

Transcript of Microcontrollori

I Microcontrollori

Realizzata da:Yassine Dallali

Sandrini Samuele

Che cosa sono?

I microcontrollori sono “piccoli computer” in un unico dispositivo e sono utilizzati in applicazioni specifiche ( General Porpose )

● Controllo dispositivi

● Domotica

● Sistemi di sicurezza

● LCD e Touch Screen

Differenze tra Microprocessori e Microcontrollori

I microcontrollori hanno miglior capacità di gestione dell’I/O e dell’interrupt.

I microprocessori hanno miglior capacità di elaborazione delle informazioni.

Architettura interna

I microcontrollori sono formati da:

● CPU, parte centrale del dispositivo predisposta al controllo.

● Memoria per il programma● Memoria per i dati

● Timer

● Periferiche I/O

Architettura interna

Memoria per il programma

1. Tipo FLASH

2. Estensione di 1024 locazioni di 14 bit ciascuna

3. Ogni locazione è distinta da un indirizzo

esadecimale ( 000h - 3FFh )

4. 8 locazioni riservate allo STACK ( contiene l’

indirizzo di ritorno delle subroutine )

5. All’avvio il Program Counter punta all’indirizzo

000h ( Contiene il primo codice del

programma )

Architettura interna

Memoria per i datiCostituita da due parti:

1. EEPROM, con estensione di 64 locazioni di un

byte

2. RAM ( file register ), divisa in due banchi

a. Banco 0 formato da 80 locazioni di un

byte ciascuna ( 00h - 3Fh )

b. Banco 1 formato da 12 locazioni di un

byte ciascuna ( 80h-0Bh )

Architettura interna

Periferiche I/O

1. Porte I/O

2. ADC ( Analog Digital Converter ), per acquisire

segnali analogici

3. Comparatori, per il confronto tra due tensioni

4. Muduli CCP ( Capture Compare PWM )

5. I/O Seriale, per collegare il seriale al

microcontrollore con dispositivi esterni

File Register

Nella memoria RAM vi sono due tipi di

locazioni:

● Registri specializzati, riservati a particolari

funzioni non usabili dall’operatore

● Registri di uso generale, a dispozione dell’

utente

File Register: PORTA (05h) PORTB (06h)

In questi due registri vengono posti:

● I dati che debbono essere inviati alle singole linee della PORTA o della

PORTB

● I dati che provengono dall’esterno

File Register: TRISA (05h) TRISB (06h)

I singoli bit dei registri TRISA e TRISB servono per determinare quale linea della

PORTA e PORTB va considerata come input e quale come output:

● Bit posto a 1: Input

● Bit posto a 0: Output

File Register: STATUS (03H)

Il bit più importante del registro STATUS è il numero 5 (RP0) e permette di

selezionare il banco di memoria utilizzato:

● RP0 = 0 , banco 0

● RP0 = 1 , banco 1

File Register: OPTION (80h)

Tale registro permette di fare varie configurazioni di sistema:

● T0CS (Bit 5), permette di selezionare la sorgente per il segnale di clock del

timer (T’CS=0 clock interno, T0CS=1 clock esterno)

● PSA (Bit 3), permette di assegnare il prescaler al timer TMR0 ( PSA=0 ) o

al watch-dog timer WDT ( PSA=1 )

File Register: INTCON ( 8Bh )

Il registro INTCON serve per la gestione degli interrupt, GIE è il bit numero 7 ed

è il più importante:

● GIE = 0, Interrupt disabilitato

● GIE = 1, Interrupt abilitato

File Register: TMR0 ( 01h )

E’ un timer interno al microcontrollore a 8 bit che

permette di fare precise temporizzazioni.

E’ possibile utilizzare un timer esterno.

Ad ogni timer è possibile associare un prescaler

(divisore di frequenza).

Esso genera un reset ad un intervallo prestabilito

in fase di programmazione. Questo avvio ciclico

permette di riscontrare situazioni di stallo.

Catena di programmazione

I microcontrollori possono essere programmati in Assembly, Pascal e C.

MicroC è un IDE (ambiente di sviluppo) che ci permette di semplificare la

catena di programmazione, in quanto esso svolge le seguenti azioni:

● Compila le istruzioni inserite, ottenendo un file oggeto ( .obj )

● Effettua il link con le librerie

● Trasforma il programma ottenuto dal linker in Assembly e poi in

Esadecimale ( Hex )

● Trasforma il codice esadecimale in codice binario

Proteus

Proteus è un programma per la progettazione e la simulazione di circuiti

elettronici. Esso è costituito da due parti:

● ISIS, ambiente di progettazione e simulazione dei circuiti grazie alla

presenza di una libreria in cui vi sono tutti i componenti e la

strumentazione necessaria (Es. generatore di funzione, oscilloscopio,

multimetro)

● ARES (PCB-Designer), per realizzare lo schema PCB dei circuiti

Relazione tra MicroC e Proteus

Per simulare il funzionamento dei microcontrollori bisogna seguire i seguenti

passaggi:

1. Realizzazione dello schema del circuito tramite Proteus

2. Scrittura del codice relativo al microcontrollore in MicroC ed effettuando il

building

3. Caricamento del codice nel microcontrollore in Proteus

Schema: Led ad intermittenza

MicroC: Led ad intermettenza

void main() { PORTA=0; /* Porto a la Porta A a zero logico*/ TRISA=0; /* inizializzo la Porta A come uscita*/ while(1) /* ciclo sempre vero*/ { PORTA=~PORTA; /* complemento a uno della Porta A*/ delay_ms(500); /* delay time di 500ms*/ }}

Le istruzioni PORTA=0 e TRISA=0 servono per configurare la PORTA come uscita. Successivamente viene effettuato il complemento a uno della PORTA in modo tale che cambi stato (led spenti si accendono e viceversa) con un delay time di 500 ms, tutto questo è inserito in un ciclo infinto, in modo da realizzare l’intermittenza dei led.

Schema: Led a scalata

MicroC: Led a scalatavoid main() { PORTA=0; /* Porto a la Porta A a zero logico*/ TRISA=0; /* inizializzo la Porta A come uscita*/ while(1) /* ciclo sempre vero*/ { delay_ms(500); /* delay time di 500ms*/ PORTA.f0=~PORTA.f0; /* complemento a uno del bit 0 della Porta A*/ delay_ms(500); PORTA.f1=~PORTA.f1; delay_ms(500); PORTA.f2=~PORTA.f2; delay_ms(500); PORTA.f0=0; PORTA.f1=0; PORTA.f2=0; }}

All’interno del ciclo infinito, con un delay time di 500 ms viene effettuato il complemento ad uno delle singole linee della PORTA (RA0 si ottiene con PORTA.f0) in modo tale che cambi stato. Successivamente tutte le linee vengono resettate ed il ciclo si ripete.

MicroC: Istruzioni per programmare un LCD

Istruzioni utili:1. Lcd_Init() per aprire la libreria di

un LCD;

2. Lcd_Out(riga,colonna,”testo”) mette in output il testo richiesto

3. LCD_SHIFT_LEFT/RIGHT per far scorrere il testo ella direzione desiderata

MicroC: Istruzioni per programmare un LCD

// Settaggio dei pin del LCDsbit LCD_RS at RB0_bit;sbit LCD_EN at RB1_bit;sbit LCD_D4 at RB2_bit;sbit LCD_D5 at RB3_bit;sbit LCD_D6 at RB4_bit;sbit LCD_D7 at RB5_bit;

// Direzione dei pinsbit LCD_RS_Direction at TRISB0_bit;sbit LCD_EN_Direction at TRISB1_bit;sbit LCD_D4_Direction at TRISB2_bit;sbit LCD_D5_Direction at TRISB3_bit;sbit LCD_D6_Direction at TRISB4_bit;sbit LCD_D7_Direction at TRISB5_bit;

void main() {

char i;

while(1) {

Lcd_Init(); Lcd_Out(1,16, "Classe 4AT"); delay_ms(500); for(i=0;i<32;i++) { Lcd_Cmd(_LCD_SHIFT_LEFT); Lcd_Cmd(_LCD_CURSOR_OFF); delay_ms(200); } }}