Lezione n° 2 - mrscuole.net

Transcript

Lezione n° 2 - mrscuole.net
Corso introduttivo sui
microcontrollori
A. S. 2007 – 2008
Microcontrollori Microchip PIC 8 bit
Nicola Amoroso
[email protected]
NA – L2
http://www.mrscuole.net/anxapic/
1
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Microcontrollori Microchip PIC
8 bit
PIC: Peripheral Interface Control (~1975)
Famiglia 12 (12bit)
PIC12CXXX — 400ns Instruction Execution, 33/35 Instructions, 8Pin Package, 4MHz Internal Oscillator
Famiglia 16 (14bit)
PIC16C5X — 200ns Instruction Execution, 33 Instructions
PIC16CXXX — 4-12 Interrupts, 200ns Instruction Execution, 35
Instructions
Famiglia 17 (16bit)
PIC17CXXX — 120ns Instruction Execution Including Multiply, 58
Instructions
Famiglia 18 (16bit)
PIC18CXXX — 10 MIPS, 77 Instructions, C-compiler Efficient
Instruction Set, Software Stack Capability, Table Operation, 4X PLL
Clock, Switchable Oscillator Sources, 25mA Source/Sink per I/O
NA – L2
http://www.mrscuole.net/anxapic/
2
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Il microcontrollore che utilizzeremo è il
PIC16F877 della Microchip Technology
PIC = Peripheral Interface Controller
(Controllore di periferiche programmabile)
La sua caratteristica più importante sta nella sigla F :
Il programma risiede in una EEPROM FLASH
(Electrically Erasable Programmable Read only Memory)
è modificabile immediatamente anche senza togliere l’integrato
dal circuito (modalità : in-circuit programming)
NA – L2
http://www.mrscuole.net/anxapic/
3
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Il nostro µC
•
implementa su un unico chip tutte le risorse necessarie per il calcolo, per
l’acquisizione e memorizzazione dei dati e per l’interfacciamento e la
comunicazione con il mondo esterno.
NA – L2
http://www.mrscuole.net/anxapic/
4
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Le periferiche dei microcontrollori
•
•
•
•
•
La ROM (Read Only Memory) è solitamente utilizzata per la memorizzazione
delle istruzioni del programma (può essere permanente o non permanente).
Nella RAM (Random Access Memory) vengono custoditi i dati prodotti e
impiegati durante l’esecuzione del programma.
La EEPROM (Electrical Erasable Programmable Read Only Memory) serve
per memorizzare i dati che devono essere conservati anche al termine del
programma.
La CPU (Central Processing Unit) è l’unità che, comunicando con le varie
periferiche interne attraverso i BUS, si fa carico di eseguire il programma ed
elaborare i dati. Per esempio, l’esecuzione di un programma consiste nella
lettura sequenziale da parte della CPU delle istruzioni memorizzate nella
memoria di programma.
I TIMER consentono al sistema di misurare e sincronizzare sia eventi interni
che esterni. Sono impiegati anche per la generazione di segnali esterni di
controllo.
NA – L2
http://www.mrscuole.net/anxapic/
5
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Le periferiche dei microcontrollori
• Le I/O PORTS sono le porte di ingresso ed uscita
solitamente utilizzate per acquisire dati o per pilotare
componenti. Usualmente, una porta I/O è costituita da 8
pin (anche meno qualche volta), programmabili sia come
ingressi che uscite.
• Le INTERFACCE SERIALI sono utilizzate per
scambiare dati con il mondo esterno. Sono frequenti
periferiche di comunicazione sia sincrone (SPI, I2C) che
asincrone (USART). Le prime sono utilizzate solitamente
per la comunicazione con dispositivi esterni (memorie,
sensori), le seconde per comunicare con PC o altri µC
(comunicazione seriale RS232 o RS422/485).
NA – L2
http://www.mrscuole.net/anxapic/
6
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Le periferiche dei microcontrollori
• L’ADC (convertitore Analogico/digitale) converte
un segnale esterno analogico (prelevato
tipicamente in tensione) in una sua
rappresentazione digitale. I microcontrollori che
implementano tali dispositivi sono
particolarmente adatti per essere impiegati in
applicazioni di controllo.
• Il WATCHDOG TIMER, se attivato, genera un
reset ad un intervallo prestabilito in fase di
programmazione. Questo riavvio ciclico è utile
per far uscire il microcontrollore da eventuali
situazioni di stallo.
NA – L2
http://www.mrscuole.net/anxapic/
7
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Le periferiche dei microcontrollori
• Il PULSE WIDTH MODULATION SIGNAL
GENERATOR è un dispositivo utilizzato per la
generazione di segnali modulati in ampiezza
d’impulso. È anche impiegato nella conversione
DA per la generazione di segnali analogici
facendo transitare il segnale in un filtro passa
basso. Se la costante di tempo del filtro è scelta
opportunamente, è possibile generare un
segnale proporzionale in tensione al duty-cycle.
NA – L2
http://www.mrscuole.net/anxapic/
8
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Le periferiche dei microcontrollori
Funzioni della CPU
Funzioni principali di una CPU sono:
•
•
•
Trasferimento Dati
Controllo di Flusso (operazioni di salto, jump)
Elaborazioni Aritmetiche e Logiche (addizioni e
sottrazioni,operazioni logiche, incrementi, decrementi, shift,
rotazioni, ecc…)
Ogni CPU ha usualmente un array register con:
•
•
•
•
un Registro Accumulatore (W )
il Program Counter (PCL)
l’Instruction Register (IR)
lo Stack Pointer (SP)
NA – L2
http://www.mrscuole.net/anxapic/
9
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
NA – L2
http://www.mrscuole.net/anxapic/
10
Il µC che utilizzeremo: Pic16F877 <> Clock 4 – 20 MHz
E’ commercializzato in differenti Packages, come il convenzionale 40-pin DIP (Dual In
Line Package); questo formato è molto usato nelle fasi di sviluppo e prototipi.
Viene riportata di seguito la disposizione dei singoli pin
NA – L2
http://www.mrscuole.net/anxapic/
11
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Microchip Pic16F877
Molti dei pin sono di I/O, raggruppati in 5 PORT: A[6 pin – RA0..RA5], B[8 pin –
RB0..RB7], C[8 pin – RC0..RC7], D[8 pin – RD0..RD7], E[3 pin – RE0..RE2] per
complessivi 33 pin di I/O. Molti di questi pin possono operare come I/O funzionante in
più modalità, il modo di funzionamento dei singoli pin viene impostata “settando”
opportunamente dei registri di controllo del sistema.
Nella piedinatura riportata si nota come diversi pin presentano più funzioni di I/O (Es.
RA0 – PORTA bit0 può funzionare come I/O digitale oppure come ingresso analogico
AN0).
In particolare notiamo che sia i pin di PORTA che quelli di PORTE possono
funzionare come ingressi digitali I/O oppure come ingressi analogici, per default
in fase di start-up o reset questi pin sono impostati come ingressi analogici, se
richiesto come I/O digitale bisogna agire sui rispettivi registri di controllo; vedremo in
seguito come operare.
NA – L2
http://www.mrscuole.net/anxapic/
12
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Microchip Pic16F877
PORTB viene anche impiegata per programmare il controllore, cioè caricare il codice di
programma nella FLASH ROM (RB6-RB7 in-circuit programming), inoltre RB0,
RB4..RB7 possono generare interrupt.
PORTC in genere permette l’uso di Timers e possibilità di comunicazione seriale
(serial ports), PORTD in genere si utilizza come normale porta di comunicazione.
Il chip viene alimentato mediante una doppia coppia di pin (Vdd=+5V nominali, Vss=0V).
Spesso i chip funzionano, nei casi previsti, anche con alimentazione compresa tra 2,2V
e 3.1V in casi particolari in cui si sfrutta la alimentazione di pile.
Per il funzionamento occorre un circuito oscillante esterno collegato tra i piedini
CLKIN e CLKOUT; la frequenza di oscillazione può essere compresa tra qualche
decina di KHz (oscillatore R-C) fino a frequenze di 20 MHz (oscillatore al quarzo).
MCLR è il Master-Clear Reset, quando viene portato a livello logico basso permette il
reset della MCU, in condizioni normali deve stare a livello alto (+5V).
NA – L2
http://www.mrscuole.net/anxapic/
13
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Pic16F877 Block Diagram
Un semplice Diagramma a Blocchi
che descrive il funzionamento del
controllore nei suoi blocchi principali;
si evidenziano:
1. Flash ROM per il program
memory: 8192 locazioni a 14 bit
2. RAM file registers 512 locazioni
a 8 bit che comprende anche
alcuni speciali registri tipo
PORTA, PORTB, etc... . Questa
zona di RAM e suddivisa in 4
banchi di 128 byte ognuna (N.B.
Alcuni registri sono ripetuti tra i
vari banchi; in totale avremo solo
368 locazioni utili)
3. Un registro particolare (W) che
prende il nome di accumulatore
usato sempre con la ALU per il
processo dei dati
4. Varie periferiche per il controllo
I/O dei dati
NA – L2
http://www.mrscuole.net/anxapic/
14
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Architettura PIC 16F877
NA – L2
http://www.mrscuole.net/anxapic/
15
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Memorie interne al 16F877
•
•
•
FLASH Memory programmi: contiene il “ programma’’ da eseguire,
ha la caratteristica di mantenere la programmazione anche quando
l’alimentazione al micro viene spenta, e di poter essere cancellata e
riscritta con uno speciale apparecchio chiamato programmatore. e`
Questa memoria profonda 8Kbytes (8192 parole x 14 bit) => il
programma da eseguire al piu` puo` essere composto da una
sequenza di 8192 operazioni. Altri tipi di microprocessore
hanno invece una memoria programma di tipo PROM: questa
puo` essere scritta soltanto una volta.
RAM dati: il programma, in esecuzione, non puo` scrivere sulla
FLASH programmi ( ~ vero …) => l’area di memoria RAM dati e`
scrivibile in esecuzione e contiene le variabili. Il contenuto di questa
memoria viene perso quando si spegne il circuito.
Esiste un’altra memoria FLASH per i dati (EEPROM).
NA – L2
http://www.mrscuole.net/anxapic/
16
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Memorie interne al 16F877
Ricapitolando:
1) FLASH programmi: 8192 parole
2) RAM per le variabili: 368 bytes
3) FLASH dati: 256 bytes (e` in pratica un piccolo hard disk, noi non la
useremo per ora)
Le singole locazioni della RAM vengono chiamate registri.
I registri della RAM possono essere di due tipi :
1) General Purpose: uso generale, tipo per contenere le variabili del
nostro programma.
2) Special Function: scrivendo in queste locazioni si istruisce il micro
ad eseguire determinate operazioni. Per esempio se scrivo il dato
0x4 nel registro 0x1F (mnemonica ADCON0) => l’ADC interno al
microprocessore comincia la conversione
NA – L2
http://www.mrscuole.net/anxapic/
17
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
NA – L2
http://www.mrscuole.net/anxapic/
18
I registri mappati in memoria
I registri sono celle,
locazioni, di memoria dove
il µC legge e scrive valori
fondamentali per il
funzionamento. Sono celle
che hanno un indirizzo
esadecimale ( h ) ; si dice
che sono mappati in
memoria.
Ad esempio
scrivendo/leggendo nelle
locazioni 05h e 06h si
scrive/legge nelle porte A e
B.
NA – L2
http://www.mrscuole.net/anxapic/
19
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
I registri mappati in memoria
Se si programma il PIC in
linguaggio macchina
(Assembler) occorre
precisare molti dettagli per
i registri, con istruzioni da
mettere all’inizio del
programma.
Se si usa un linguaggio ad
alto livello (Basic, C, …),
le istruzioni da aggiungere
sono minori. Tuttavia la
mappa di memoria ( cioè
l’allocazione dei registri)
deve sempre essere
conosciuta.
NA – L2
http://www.mrscuole.net/anxapic/
20
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La gestione delle porte di IN/OUT
E’ fondamentale saper programmare le porte di
ingresso/uscita.
Es. => Ognuno dei pin della porta A (05h) può essere
impostato in modo indipendente come ingresso o come uscita
in base al contenuto del registro di controllo TRISA (85h):
impostando a 1 il bit di TRISA, il corrispondente pin di
PORTA è un ingresso ( se è 0 diventa uscita). Lo stesso vale
per la porta B (06h) gestita da TRISB (86h).
Esempio : con TRISB = 00111111 , RB6 e RB7 sono linee di
uscita ( possono comandare un carico), e le altre linee sono
ingressi ( possono accettare [Read/Leggere] un segnale
esterno).
NA – L2
http://www.mrscuole.net/anxapic/
21
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/