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/