Laboratorio di Elettronica - unirc.it · istruzioni single word/single cycle Una program memory di...
Transcript of Laboratorio di Elettronica - unirc.it · istruzioni single word/single cycle Una program memory di...
Laboratorio diElettronica
�Development Tools�Development Tools�Evaluation Tools�Webinars
�MPLAB IDE�Compilers�Librerie�RTOS
Laboratorio diElettronica
�Free Compilers�Free Samples�Free Technical Support�Discount on tools
� Microcontrollore (µC)
Dispositivo elettronico che integra i circuiti necessari a realizzare un completo sistema digitale programmabile
Laboratorio diElettronica
realizzare un completo sistema digitale programmabile
Realizzazione di sistemi elettronici ottimizzati per lagestione ed il controllo di apparecchiature anche moltocomplesse
� Microcontrollore (µC)
8-bit RISC CPUI/O PINS
Laboratorio diElettronica
I/O PINSTimersAnalog comparatorsA/D convertersUSART, SPI, I2C, USBCapture, Compare, PWMReal Time Clock (RTC)
� Sistema Embedded• Sistema di elaborazione specializzato che contiene uno o più sistemi digitali programmabili
Laboratorio diElettronica
• Il controllo delle funzioni è possibile tramite un apposito software custom
Architettura Interna
Laboratorio diElettronica
� Architettura di un calcolatore
Laboratorio diElettronica
Laboratorio diElettronica
Laboratorio diElettronica
32bit
� CPU RISCPrincipali funzioni
Trasferimento Dati
Laboratorio diElettronica
Trasferimento DatiControllo di flussoElaborazioni aritmetiche e logiche
Registro Accumulatore (W)Program Counter (PC)Instruction Register (IR)
Array Register
� RISC vs CISCComplex Instruction Set Computer• Molte istruzioni (>100)
Laboratorio diElettronica
• Molte istruzioni (>100)
• Molti metodi di indirizzamento
• Più di un ciclo macchina per istruzione
Reduced Instruction Set Computer• Poche istruzioni (<100)
• Pochi metodi di indirizzamento
• Solo un ciclo macchina per istruzione
� BUS
Insieme dei collegamenti fisici tra CPU, memoria e gli altri blocchi funzionali
Laboratorio diElettronica
e gli altri blocchi funzionali
DATA
ADDRESS
CONTROL
Laboratorio diElettronica
� Long Word Instruction
� Bus separati permettono differenti dimensioni dei BUS
8-Bit InstructionMotorola M68HC05National COP8Zilog Z8SGS Thomson ST62
ProgramMemory
differenti dimensioni dei BUS� L’Architettura Harvard permette
istruzioni single word/single cycle
� Una program memory di 2k x 16 su un PICmicro equivale a 4k x 8 su altri microcontrollori a 8-bit
� Single cycle access aumenta la velocità di esecuzione
1000 0110
kk kk kk kk
8-bit Instructionldaa #imm<8>
SGS Thomson ST62Intel / Philips 80C51
kk kk kk k0000 1110
16-bit Instruction
k
movlw k
Long Word InstructionMicrochip PICmicro
ProgramMemory
Laboratorio diElettronica
L’esecuzione di un’istruzione da
� PIPELINE
un’istruzione da parte della CPU è divisa in due fasi:
• FETCH
• EXECUTE
Laboratorio diElettronica
TCY=0 TCY=1 TCY=2 TCY=3 TCY=4 TCY=5Instruction Cycles :
� PIPELINE
Fetch 1 Execute 1���� MOVLW 0x55
���� MOVWF PORTB Fetch 2 Execute 2
Fetch 3 Execute 3
Fetch 4 Flush
Fetch SUB Execute SUB
���� CALL SUB
���� BSF PORTA,3
���� Instruction @ SUB
� Architettura HARVARD
Laboratorio diElettronica
Nei PIC MicrochipData e Program Bus
Von NeumannArchitecture
8-bit Bus
CPU
Program
& Data
MemoryData e Program Bus separati, in aggiunta a tecniche di pipeline, permettono alla CPU di effettuare 1 istruzione RISC ogni ciclo macchina
CPU
�� Register FileRegister File
Laboratorio diElettronica
Register File : A differenza di altri processori RISC, tutta la data memory fa parte del register file, in modo da far sì che si possa operare direttamente sulla data
w f
Data
Memory
operare direttamente sulla data memory
Tutte le periferiche sono mappate sula data memory come una serie di registri
Orthogonal Instruction Set : Tutte le istruzioni possono operare su tutte le locazioni di memoria
Il formato Long Word Instruction permette di avere un register file direttamente indirizzabile
w f
ALU
w f
WREG
d
Esempi di funzioni:
addwf MyReg,w ; WREG = WREG + MyRegaddwf MyReg,f ; MyReg = WREG + MyReg
� Reduced Instruction Set
� Harvard Architecture
� Instruction Pipelining
Laboratorio diElettronica
� Long Word Instructions
� Large Register File
� Orthogonal Instruction Set
� Single Cycle Instructions
� Memoria• Istruzioni (Program Memory)• Dati (RAM, EEPROM)
Laboratorio diElettronica
• Dati (RAM, EEPROM)
• ROM – Read Only Memory• RAM – Random Access Memory• EEPROM – Electrically Erasable Prom• FLASH – Scrittura e cancellazione elettriche a blocchi
� Program Memory
Laboratorio diElettronica
La program memory dei PICMicro ad 8bit è composta da 1024 locazioni di 14bit ciascuna ed indirizzate da 0x0000 abit ciascuna ed indirizzate da 0x0000 a0x03FF.L’indirizzamento è ciclico per cuiriferendosi ad esempio all’indirizzo0x0400 (il primo successivo a 0x03FF)equivale a riferirsi all’indirizzo 0x0000.L’indirizzo 0x0000 è noto anche comeReset Vector ed è l’indirizzo caricatonel Program Counter al reset.
�� IndirizzamentoIndirizzamento –– AccessoAccesso allaalla Data MemoryData Memory
Laboratorio diElettronica
Diretto:Diretto:movwf <reg>
Indiretto:movwf INDF
Immediato (literal)movlw <const>
� Memoria Dati
Laboratorio diElettronica
La memoria dati dei PICMicro ad 8 bit èsuddivisa in due banchi denominatisuddivisa in due banchi denominatiBank0 e Bank1. Ciascun banco è a suavolta suddiviso in due aree dette SFR(Specific Function Register, prime 12locazioni) e GPS (General PurposeRegister). Il banco si specificatramitel’apposito bit del registro STATUS.L’area SFR consente di monitorare econtrollare le periferiche.
Clock e Timing
Laboratorio diElettronica
� Clock
Segnale di sincronia necessario per eseguire le ist ruzioni e per il corretto funzionamento delle periferiche
Laboratorio diElettronica
4 Periodi di Clock generano 1 Ciclo Macchina
Frequenza delle istruzioni del programma è ¼ della frequenza del clock del PIC
La potenza di calcolo di un PIC si ottiene dividend o per quattro la frequenza di clock. Ad esempio: 20 MHz / 4 = 5 MIPS.
Laboratorio diElettronica
� Oscillatore
Generazione del clock • Interno (max 16 MHz)• Interno (max 16 MHz)
• Esterno (max 80 MHz)
• 32 modalità differenti
Interrupt
Laboratorio diElettronica
Laboratorio diElettronica
� InterruptE’ la segnalazione che viene fatta al microcontroll ore da una
periferica o dal mondo esterno al verificarsi di un
determinato evento asincrono
Laboratorio diElettronica
� Interrupt - Latenza
Intervallo di tempo tra il
verificarsi dell’evento e l’istante verificarsi dell’evento e l’istante
in cui inizia l’esecuzione del
servizio di interrupt
Esterni -> 3-3.75 cicli macchina
Interni -> 3 cicli macchina
Periferiche
Laboratorio diElettronica
� I/O Ports
• Periferiche semplici
• Interfaccia con il mondo esterno
Laboratorio diElettronica
• Interfaccia con il mondo esterno
• Flessibilità e funzionalità
La bidirezionalità consente la configurazionecome ingressi permettendo al programma di rispondere ad eventi esterni come la pressione di un tasto, l’acquisizione da un sensore, o comunicare con altri dispositivi esterni.
� I/O Ports
TRIS <X> register controlla la direzione del PORT < X>
PORT <X> register controlla il valore dei pin della PORT <X>
Laboratorio diElettronica
PORT <X> register controlla il valore dei pin della PORT <X>
bsf TRISB,3 -> il pin 3 della PORTB è settato INPUT
bsf PORTB,3 -> il pin 3 della PORTB viene portato a livello
logico alto (1)
� Timers• 8/16 bit timer/counter selezionabile via software
• Readable & Writable
Laboratorio diElettronica
•
• Prescaler 8 bit
• Clock interno o esterno
• Generazione di interrupt all’overflow
• Attivi sul fronte di salita o sul fronte di discesa (selez.)
� Timers• Timer Mode -> T0CON <T0CS> = 0
• Counter Mode -> T0CON <T0CS> = 1
Laboratorio diElettronica
•
�Timer Mode, Timer0 viene incrementato ogni ciclo ma cchina
�Counter Mode, Timer0 viene incrementato ogni fronte di salita
o discesa sul pin T0CKI (T0CON <T0SE> = 0 -> fronte di salita)
� Analog to Digital Converter
�Acquisizione di un dato analogico tramite il modulo interno
di campionamento (sample & hold) e conversione ad
Laboratorio diElettronica
di campionamento (sample & hold) e conversione ad
approssimazioni successive (fino a 12 bit)
�Max 13 canali analogici di ingresso multiplexati
�Vref selezionabile dall’esterno (High and low)
�Può lavorare anche in sleep mode e risvegliare il P IC
� Analog to Digital Converter
Laboratorio diElettronica
� Analog to Digital Converter
Registri interni
Laboratorio diElettronica
• A/D Result High Register (ADRESH)
• A/D Result Low Register (ADRESL)
• A/D Control Register 0 (ADCON0)
• A/D Control Register 1 (ADCON1)
• A/D Control Register 2 (ADCON2)
Risultato
Settingfunction,
PIN e Clock
� Analog to Digital Converter
�Acquisition Time è il tempo in cui il segnale è
Laboratorio diElettronica
elettricamente connesso all’hold capacitor
�TAD è il tempo di conversione
Acquisition Time + T AD = Sampling Time
� Comparatore
� Il modulo contiene due comparatori integrati analog ici
Laboratorio diElettronica
� I riferimenti possono essere esterni o interni (Vre f),
selezionabili tramite software
� Il registro CMCON controlla le varie configurazioni
� Il modulo può generare un interrupt
� Comparatore
Laboratorio diElettronica
� USART
USART (Universal Synchronous Asynchronous
Laboratorio diElettronica
Transmitter) è un modulo di comunicazione seriale
integrato
Tramite il protocollo RS232, permette al
microcontrollore di comunicare con altri dispostivi
(Master e Slave) e con PC
Programmazione
Laboratorio diElettronica
� ASM
Le istruzioni assembler dei PIC sono < 50, e possono essere riassunte in tre gruppi principali:
Laboratorio diElettronica
e possono essere riassunte in tre gruppi principali:
� Byte-Oriented (operano sui byte)
� Bit-Oriented (operano sui singoli bit)
� Literal and Control (opera su registri speciali)
� ASM
Laboratorio diElettronica
� Accendi LED
Laboratorio diElettronica
� Direttive ASMPROCESSOR 16F628 Direttiva del compilatore assembler che consente di
definire per quale PIC è stato scritto il nostro source
Laboratorio diElettronica
RADIX DEC
INCLUDE "P16F628.INC“
ORG 0CH
Informa il compilatore che i numeri riportati senza notazione sono numeri decimali
Inclusione nel sorgente del file denominato P16F628.INC
Consente di definire l'indirizzo da cui il compilatore inizia ad allocare i dati o le istruzioni seguenti (in RAM)
� Istruzioni ASMCount RES 2 È una definizione di variabile (“Count” è una label) a 16
bit, RES 2 indica la richiesta di due locazioni di memoria
Laboratorio diElettronica
ORG 00H
bsf STATUS,RP0
movlw 00011111Bmovwf TRISA
Inizio programma vero e proprio; da qui in poi i codici sono istruzioni da convertire negli opcode corrispondenti
B(it) S(et) F(ile Register) Status, RP0, ovvero mette alto il 5°bit (RP0=5) del File Register Status
Con l’istruzione precedente, si abilita l’accesso ai file register TRISA e TRISB; con questa doppia istruzionesi setta TRISA a 00011111 definendo, in tal modo, il funzionamento di ogni linea di I/O della porta A (RA7->RA0; 1 ingresso, 0 uscita)
� Istruzioni ASMmovlw B'11111110'movwf TRISB
Come l’istruzione precedente, per la porta B.
Laboratorio diElettronica
bcf STATUS,RP0
bsf PORTB, 0
MainLoopCall Delay
Si riporta basso il bit del file register status precedentemente messo alto per modificare TRISX
Accensione del LED: si ottiene ponendo a 1 il pin RB0
Nel loop principale, viene chiamata la subroutine Delayper mantenere acceso il LED circa 1 s
PROCESSOR 16F628RADIX DECINCLUDE "P16F628.INC"__CONFIG 3FF1HORG 0CHCount RES 2ORG 00H
SetToZerobcf PORTB,0goto MainLoop
Delayclrf Countclrf Count+1
DelayLoopdecfsz Count,1
Laboratorio diElettronica
ORG 00Hbsf STATUS,RP0movlw 00011111Bmovwf TRISAmovlw 11111110Bmovwf TRISBbcf STATUS,RP0bsf PORTB,0MainLoop
call Delaybtfsc PORTB,0goto SetToZerobsf PORTB,0goto MainLoop
decfsz Count,1goto DelayLoopdecfsz Count+1,1goto DelayLoopreturn
END
Laboratorio diElettronica
Laboratorio diElettronica
http://www.oshonsoft.com/
PCW è un compilatore C Windows IDE(Integrated Development Environment) chepermette di sfruttare al meglio le
� PCW C Compiler IDE
Laboratorio diElettronica
permette di sfruttare al meglio lepotenzialità offerte dai microcontrollori PICutilizzando un linguaggio ad alto livellocome il C.
void main() {while(1){
output_high(PIN_B0);delay_ms(500);output_low(PIN_B0);delay_ms(500);
}}
� PCW C Compiler IDELe funzioni, già pronte da utilizzare e parametrizzabili, sono divise per categoria:
Laboratorio diElettronica
• RS232 I/O• I2C I/O• Discrete I/O• SPI two wire I/O• Parallel Slave I/O• Delays• Processor Controls• Bit/Byte Manipulation• Timers
• Capture/Compare/PWM• A/D Conversion• Analog Compare• Voltage Ref• Internal EEPROM• Standard C Math• Standard C Char• Standard C memory• LCD
� distance = sqrt( sqrt(x1-x2) + sqrt(y1-y2) );
� Esempi
Laboratorio diElettronica
� value = read_eeprom (address)
� printf(“Hello World”);
� CCS
Laboratorio diElettronica
� CCS
Laboratorio diElettronica
� CCS
Laboratorio diElettronica
� CCS
Laboratorio diElettronica
� CCS
Laboratorio diElettronica
� CCS
Laboratorio diElettronica
� CCS
Laboratorio diElettronica
� CCS
Laboratorio diElettronica
� CCS
Laboratorio diElettronica
� CCS
Laboratorio diElettronica