1 25/04/2017
Parte 4
PORTAS DE COMUNICAÇÃO
2 25/04/20171. DEFINIÇÃO
2. PORTA PARALELA
3. ENTRADA ANALÓGICA
4. PWM
5. PROGRAMAÇÃO PWM
DEFINIÇÃO
1
3 25/04/2017DEFINIÇÃO
DEFINIÇÃO
1
4 25/04/2017Significado de porta
DEFINIÇÃO
1
5 25/04/2017Necessidade
• Um processador ou controlador não tem razão de ser se sua computação de dados restringir-se, apenas, às suas memórias internas.
• Para que esta computação seja útil, é necessário que ela interfira em elementos externos ao dispositivo. • A comunicação entre o barramento de dados do
dispositivo e o mundo exterior é feito através das portas de comunicação.
• Todo programa, em alguma aplicação útil, deve fazer uso, pelo menos uma vez, de alguma porta de comunicação.
DEFINIÇÃO
1
6 25/04/2017Tipos
• Entrada analógica.• Saída analógica (somente DSP´s). • Saída PWM.
• I/O digital. • Paralela. • Paralela escrava. • Serial.
7 25/04/2017
Saída analógica
• Não é comum que P´s e MCU´s forneçam saída analógica. • DSP´s podem conter saída analógica.
• Em DSP´s de áudio e de vídeo, esta saída analógica pode conter um pré-amplificador.
8 25/04/2017
Blocos funcionais na PIC16F877
• Portas paralelas (A,B,C,D,E). • Porta paralela escrava. • Capture, Compare, PWM.
• Portas seriais (SPI™, I2C™, USART). • Conversor A/D.
DEFINIÇÃO
1
9 25/04/2017Bl
o
co
s
f
u
n
ci
o
n
a
is
n
a
PI
C
1
6
F
8
7
7
DEFINIÇÃO
1
10 25/04/2017Portas
• Todas as portas de comunicação da MCU são periféricos, mas nem todos os periféricos são portas de comunicação.
• Sendo periféricos, todas as portas se comunicam com o core por meio do data bus.
• Toda porta possui um SFR associado (ou mais). • Tais SFR’s localizam-se, fisicamente, próximos ao
bloco funcional associado à respectiva porta. • Esses SFR’s, em sua maioria, atuam como memória
para manutenção do dado associado à porta.
DEFINIÇÃO
1
11 25/04/2017Pinos (DIP 40)
Os 33 pinos de I/ODEFINIÇÃO
1
12 25/04/2017Pinos (DIP 40)
DEFINIÇÃO
1
13 25/04/2017Pinos (DIP 40)
2 33 15 19 8 3 34 16 20 9 4 35 17 21 10 5 36 18 22 -6 37 23 27 -7 38 24 28 -- 39 25 29 -- 40 26 30-• Os pinos de comunicação são multiplexados. • Podem ter uma, duas ou três funções. • Todas funções são de comunicação.
DEFINIÇÃO
1
14 25/04/2017
SFR’s para configuração do sentido
SFR Addr. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 TRISA 085h - - I/O I/O I/O I/O I/O I/O TRISB 086h I/O I/O I/O I/O I/O I/O I/O I/O TRISC 087h I/O I/O I/O I/O I/O I/O I/O I/O TRISD 088h I/O I/O I/O I/O I/O I/O I/O I/O TRISE 089h IBF OBF IBOV PSPMODE - I/O I/O I/O
TRIS Sentido 0 Saída 1 Entrada • A configuração é feita bit a bit. • O modo padrão é o 0: saída.
• O modo de saída é o padrão porque evita que dados espúrios sejam computados.
• O modo de entrada não tem o problema de curto-circuito. reset default
DEFINIÇÃO
1
15 25/04/2017Pinos (DIP 40)
2 33 15 19 8 3 34 16 20 9 4 35 17 21 10 5 36 18 22 -6 37 23 27 -7 38 24 28 -- 39 25 29 -- 40 26 30-• 33 pinos são dedicados à comunicação. • Todos os 33 pinos podem ser configurados com
entrada ou como saída individualmente. • As portas paralelas e a paralela escrava
aceitam entrada e saída (não simultaneamente). • As demais portas suportam, apenas, um tipo de
configuração por pino.
• A escolha do tipo de comunicação implica na correta configuração dos pinos, via programa.
DEFINIÇÃO
1
16 25/04/2017 SFR Addr. POR/BOR TRISA 085h --11 1111 TRISB 086h 1111 1111 TRISC 087h 1111 1111 TRISD 088h 1111 1111 TRISE 089h 0000 -111 Banco 1SFR’s para configuração do sentido
DEFINIÇÃO
1
17 25/04/2017
• TRISA configura o sentido dos pinos de PORTA e das demais funções que podem ser multiplexadas com os pinos de PORTA.
• O mesmo vale para TRISB, TRISC, TRISD e TRISE. • Um erro na programação destes SFR’s pode
provocar a queima do chip.
• A única comunicação que não é afetada por TRIS é a PSP, cujo controle de sentido é feito por um dispositivo externo ao chip.
SFR’s para configuração do sentido
DEFINIÇÃO
1
18 25/04/2017Buffer tri-state (3S)
Entrada de dado Entrada de dado Saída de dado Saída de dado Entrada de controle Entrada de controle Ativo em nível baixo19 25/04/2017
SFR’s para configuração do sentido
Tris bit Pino Demultiplexação Multiplexação Output Input
• Entrada e saída não podem ser selecionados ao mesmo tempo. TRIS Sentido
0 Saída 1 Entrada
20 25/04/2017
SFR’s para configuração do sentido
Tris = 0 Tris = 1
DEFINIÇÃO
1
21 25/04/2017
• As portas de comunicação possuem um ou mais SFR’s associados, para dados, endereço e controle. • Isto significa que a informação não é transmitida diretamente do data bus para a porta, mas, sim, por meio dos SFR’s.
• A gravação no SFR ocorre, apenas, em Q4. • A leitura no SFR ocorre, apenas, em Q2. • Alguns periféricos permitem acesso assíncrono. • Todas as portas usam FF D como elemento de
memória.
SFR’s para armazenamento da informação
DEFINIÇÃO
1
22 25/04/2017
Principais portas de comunicação
Serial A/D
PORT PWM PSP
SFR SFR SFR SFR
8-bit* 10-bit 10-bit
8-bit 8-bit 8-bit* 8-bit SFR 8-bit 8-bit Pinos
8-bit PICData Bus
* ou menos
DEFINIÇÃO
1
23 25/04/2017
SFR’s para configuração do sentido
1-bit
21
MUX
1-bit
12
DEMUX
Seleção Periférico 1 Periférico 2 SFR SFR Seleção Periférico 1 Periférico 2 SFR SFRPORTA PARALELA
2
24 25/04/2017PORTA PARALELA
PORTA PARALELA
2
25 25/04/2017
Comunicação digital paralela
• Mais simples. • Mais rápida. • 3, 6 ou 8 bits. • 5 portas. • Bidirecionais.
PORTA PARALELA
2
26 25/04/2017Comunicação digital paralela
• As portas paralelas são registradas.
• A registração libera o data bus e mantém a informação. • Os nomes dos bits das portas paralelas iniciam com a letra R. • R: Register – Um SFR para cada porta.
• As portas também são chamadas de RA, RB, RC, RD e RE.
PORTA PARALELA
2
27 25/04/20175 portas paralelas: A, B, C, D, E
PORTA PARALELA
2
28 25/04/2017SFR’s para comunicação paralela
SFR Addr. TRISA 085h TRISB 086h TRISC 087h TRISD 088h TRISE 089h Banco 1 SFR Addr. PORTA 005h PORTB 006h PORTC 007h PORTD 008h PORTE 009h Banco 0
PORTA PARALELA
2
29 25/04/2017SFR Addr. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PORTA 005h - - RA5 RA4 RA3 RA2 RA1 RA0 PORTB 006h RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 PORTC 007h RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 PORTD 008h RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 PORTE 009h - - - RE2 RE1 RE0
SFR Addr. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 TRISA 085h - - I/O I/O I/O I/O I/O I/O TRISB 086h I/O I/O I/O I/O I/O I/O I/O I/O TRISC 087h I/O I/O I/O I/O I/O I/O I/O I/O TRISD 088h I/O I/O I/O I/O I/O I/O I/O I/O TRISE 089h IBF OBF IBOV PSPMODE - I/O I/O I/O
SFR’s para comunicação paralela
PORTA PARALELA
2
30 25/04/2017 SFR SFR SFR SFR 6-bit 6-bit 8-bit SFR 3-bit 3-bit Pinos8-bit PICData Bus
SFR’s para comunicação paralela
PORT B PORT A PORT C PORT E PORT D 8-bit 8-bit 8-bit 8-bit 8-bit
31 25/04/2017
Sentido
• Em P’s, geralmente, há uma única porta de comunicação paralela, e todos os bits tem o mesmo sentido.
• Neste caso, um único bit é usado na determinação do sentido do fluxo da informação.
• Como, na PIC, os bits tem configuração individual de sentido, é preciso o uso de uma palavra de configuração.
• Em P’s, geralmente, não há buffer na porta paralela, sendo necessário o uso de um chip separado para essa função.
• Em MCU’s, essa função é incluída. 25/04/2017 32
Multiplexação
• Os pinos usados para comunicação paralela são multiplexados com outras funções.
• Cada pino pode exercer até três funções diferentes. • Só é possível exercer uma função ao mesmo tempo. • A configuração da multiplexação é realizada durante
a execução do programa.
• O sentido da informação deve ser configurado também para as outras funções multiplexadas.
PORTA PARALELA
2
33 25/04/2017
Multiplexação
• Todas as outras funções multiplexadas nos pinos das portas paralelas são associadas a periféricos que podem ser ligados e desligados. • Quando ligados, tais periféricos tomam, para si,
o uso dos pinos.
• Quando desligados, tais periféricos liberam os pinos para as portas paralelas.
PORTA PARALELA
2
34 25/04/2017
Pinagem (DIP)
Bit PORTA PORTB PORTC PORTD PORTE
0 2 33 15 19 8 1 3 34 16 20 9 2 4 35 17 21 10 3 5 36 18 22 -4 6 37 23 27 -5 7 38 24 28 -6 - 39 25 29 -7 - 40 26 30
-PORTA PARALELA
2
35 25/04/2017Tipo do buffer
Bit PORTA PORTB PORTC PORTD PORTE
0 TTL TTL ST ST ST 1 TTL TTL ST ST ST 2 TTL TTL ST ST ST 3 TTL TTL ST ST -4 ST TTL ST ST -5 TTL TTL ST ST -6 - TTL ST ST -7 - TTL ST ST
-• O buffer ST é um buffer TTL com histerese. • Estas informações se referem ao uso dos
pinos como porta paralela
• Quando o pino é usado para outra função, o buffer pode ser diferente.
glitch filter
PORTA PARALELA
2
36 25/04/2017Buffer TTL
http://138.37.35.209/staffinfo/davew /lab/74_chips/7407.gif Est e sl id e n ã o ca i n a p ro va .PORTA PARALELA
2
37 25/04/2017
Conexão ST
• A conexão ST somente tem relevância quando configurada como entrada, pois a fonte de informação externa não é controlada pela MCU e pode gerar uma oscilação de alta frequência. • No modo de saída, a máxima frequência de variação
é dada pelo relógio do sistema, o que impede oscilações de alta frequência.
• Como os circuitos digitais atuais usam, principalmente, tecnologia CMOS, com MOSFET’s, o consumo de energia em regime estacionário é muito baixo, mas, em regime transitório, muito alto. • Uma falta de controle em oscilações de alta
frequência leva ao rápido superaquecimento do chip.
PORTA PARALELA
2
38 25/04/2017
Conexão ST
• A entrada ST é especialmente indicada quando recebe um sinal digital assíncrono cuja origem da informação provém de um sensor.
• Se o sistema de sensoriamento for microcontrolado ou microprocessado, não é necessário o uso da entrada ST, pois já existe controle de relógio. • Como as portas A e B não possuem esta proteção, é
recomendável que, se elas forem usadas como entrada, então a fonte de sinal seja proveniente de um circuito digital e não de um circuito analógico.
PORTA PARALELA
2
39 25/04/2017Conexão ST
Input glitch filterPORTA PARALELA
2
40 25/04/2017SFR’s para configuração do sentido
Tris bit Pino Output Input glitch filter
PORTA PARALELA
2
41 25/04/2017SFR’s para comunicação paralela
• Os registradores são construídos com FF´s D. • Há 33 cópias deste circuito.
PORTA PARALELA
2
42 25/04/2017PORTA – Multiplexação
• RA é bidirecional.• As outras funções são unidirecionais. • RA4 tem buffer ST por causa de T0CKI.
Outras funções Bit PORTA 0 TTL 1 TTL 2 TTL 3 TTL 4 ST 5 TTL glitch filter
43 25/04/2017
PORTA – Pinagem
RA0 RA1 RA2 RA3 RA4 RA5 44 25/04/2017PORTA
• Para PORTA, ADCON1<3:0> deve receber a palavra 011xb. • Para entrada analógica, ADCON1<3:0> devem receber
0000bou 0010b ou 1001b. • O default, após reset, é 0000b.
• Outras configurações, bit a bit, podem ser obtidas. • Estes bits também controlam PORTE.
• Para configurar os pinos 2 a 7, é preciso programar ADCON1 (09Fh), visto mais adiante.
• ADCON1<3:0>, <PCFG3:PCFG0> , devem ser corretamente programados (16 combinações).
PORTA PARALELA
2
45 25/04/2017PORTB – Multiplexação
• RB é bidirecional.• As outras funções são unidirecionais. Outras funções LVP
PORTA PARALELA
2
46 25/04/2017PORTB – Tipo do buffer
Bit PORTB Outra função 0 TTL ST 1 TTL TTL 2 TTL TTL 3 TTL TTL 4 TTL TTL 5 TTL TTL 6 TTL ST 7 TTL ST
PORTA PARALELA
2
47 25/04/2017PORTB – Pinagem
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0PORTA PARALELA
2
48 25/04/2017PORTB INPUT PULL-UP
• Uma entrada digital não pode ser mantida desconectada. • A entrada desconectada atua como uma antena que pode
assumir valor zero, valor um ou oscilação de maneira imprevisível.
• Quando estas entradas são conectadas a um push button ou um toogle switch, elas podem ser mantidas abertas dependendo da posição da chave.
• Algumas fontes de sinal também podem apresentar impedância de saída infinita.
• Nesses casos, convém conectar um resistor em paralelo com a fonte de sinal.
PORTA PARALELA
2
49 25/04/2017 Resistor de pull-up Resistor de pull-down Sinal digital Sinal digital Aplicação para resistor eliminador de tri-state.PORTB INPUT PULL-UP
PORTA PARALELA
2
50 25/04/2017 Resistor de pull-up Resistor de pull-down Fontes de sinal que podem gerar nível tri-state.PORTB INPUT PULL-UP
PORTA PARALELA
2
51 25/04/2017
PORTB INPUT PULL-UP
http://pcbheaven.com/picpages/images/microsw itch_1251550992.jpg
Exemplo de aplicação
PORTA PARALELA
2
PORTB INPUT PULL-UP
PORTB PORTC 1 2 3 4 4 3 2 1
Apostila Datapool PIC-2377
Saídas ativas em 0 Entradas 52 25/04/2017 Exemplo de aplicação
PORTA PARALELA
2
53 25/04/2017PORTB INPUT PULL-UP
• O pull-up atua somente no modo de entrada.
• Os 8 bits de PORTB possuem um resistor de weak pull-up (MOSFET) habilitável.
• Trata-se de uma resistência ativa grande, que corresponde à resistência entre fonte e dreno de um MOSFET (RDF), implicando numa pequena corrente.
• Quando o resistor está desabilitado e a entrada (modo input) não recebe nenhum sinal, ela pode assumir valor 0 ou 1 imprevisivelmente, ou assumir comportamento instável. • Quando habilitada, a entrada (modo input) que não recebe
sinal vai para nível alto.
• O resistor de pull-up é desligado automaticamente quando o pino é configurado como saída.
PORTA PARALELA
2
54 25/04/2017
• Pull-up: Leva a entrada tri-state a nível alto. • Pull-down: Leva a entrada tri-state a nível baixo.
• Esses resistores devem ser altos, para que sua energia consumida seja baixa.
• Resistências altas são difíceis de serem integradas, pois a resistividade do silício é baixa, requerendo grandes comprimentos para a obtenção de resistências relevantes. • São usadas resistências ativas, por meio de transistores. • A resistência ativa é obtida na malha de saída do
transistor (RCEou RDS).
55 25/04/2017
• Para configurar pull-up, é preciso programar OPTION_REG (081h, 181h).
• OPTION_REG<7>, <NOT_RBPU> • NOT_RBPU: PORTB Pull-up Enable bit • 0: Habilita input pull-up
• 1: Desabilita input pull-up (reset default)
/
• SFR 010000001b, 081h, banco 1 • SFR 110000001b, 181h, banco 3 • SFR X10000001b
PORTB INPUT PULL-UP
56 25/04/2017
• NOT_RBPU = 1: VG=5V. VGS=0V P-MOSFET desligado • NOT_RBPU = 0: VG=0V. VGS=-5V P-MOSFET ligado
S G
PORTB INPUT PULL-UP
PORTA PARALELA
2
57 25/04/2017
• O resistor de pull-up deve ser desligado quando se coloca várias entradas de dados em paralelo. • Somente uma entrada é selecionada por vez. • A impedância de entrada das demais portas de
entradas desabilitadas não devem ser perceptíveis para a porta de entrada selecionada. • As portas de entrada não selecionadas devem
ser configuradas para alta-impedância por meio do desligamento do pull-up.
Saída tri-state
PORTA PARALELA
2
58 25/04/2017 P ou MCU Controlador do barramento n -b it e xt e rn a l d a ta b u s device 1 device 2 device 3 device 4 TOSC TOSC TOSC TOSC TOSC CS1 CS2 CS3 CS4PORTB PULL-UP
Entradas Entradas Entradas Entradas SaídasPORTA PARALELA
2
59 25/04/2017PORTB – Interrupção
• Quatro bits, PORTB<7:4> <RB7>:<RB4> possuem verificador de mudança.
• Ocorrendo mudança, uma interrupção é solicitada. • RBIF: Port B Change Interrupt Flag Bit
• INTCON<0> (Interrupt Control)
• 0: Não houve mudança em PORTB<7:4> (reset default) • 1: Houve mudança em PORTB<7:4>.
PORTA PARALELA
2
60 25/04/2017
• Não é permitido fazer BSF INTCON, RBIF. • INTCON<0> recebe “1” em /RD ou em /WR. • INTCON<0> recebe “0” manualmente. • BCF INTCON, RBIF.
• Esse comando é dado após a ciência do evento.
PORTA PARALELA
2
61 25/04/2017PORTB – Interrupção
4-bit REG 4-bit COMP TCY RB7 RB4 TCY RBIE RBIFPORTA PARALELA
2
62 25/04/2017PORTB – Interrupção
• A comparação pode ser feita de duas formas: • SUB das duas palavras de entrada. • XOR das duas palavras de entrada.
• Se não houve mudança, o nibble resultante é 0000b. • Um OR de todos os bits do nibble fornece.
• Se 0, igual. • Se 1, diferente.
PORTA PARALELA
2
63 25/04/2017PORTB – Interrupção
4-bit SUB 4-in OR 4 2-in XOR 4-in OR 4-bit COMP TCY TCYPORTA PARALELA
2
64 25/04/2017PORTC – Multiplexação
• RC é bidirecional.• As outras funções são unidirecionais. Outras funções
PORTA PARALELA
2
65 25/04/2017PORTC – Pinagem
RC7 RC6 RC5 RC4 RC0 RC1 RC2 RC3PORTA PARALELA
2
66 25/04/2017PORTD – Multiplexação
• RD é bidirecional.• As outras funções são unidirecionais. Outras funções
67 25/04/2017
PORTD – Pinagem
RD7 RD6 RD5 RD4 RD0 RD1 RD3 RD2 68 25/04/2017PORTE – Multiplexação
• RE é bidirecional.• As outras funções são unidirecionais.
PORTA PARALELA
2
69 25/04/2017 RE0 RE1 RE2PORTE – Pinagem
PORTA PARALELA
2
70 25/04/2017PORTE
• Para PORTE, ADCON1<3:0> devem receber a palavra 11xxb ou outras opções. • Estes bits também controlam PORTA. • É preciso programar ADCON1<3:0>,
<PCFG3:PCFG0> (09Fh), visto mais adiante.
PORTA PARALELA
2
71 25/04/2017As cinco portas paralelas
RE0 RE1 RE2 RD7 RD6 RD5 RD4 RD0 RD1 RD3 RD2 RC7 RC6 RC5 RC4 RC0 RC1 RC2 RC3 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 RA0 RA1 RA2 RA3 RA4 RA5 33 pinos
PORTA PARALELA
2
72 25/04/2017As cinco portas paralelas
Porta B Porta C Porta A Porta D Porta E
PORTA PORTB PORTC PORTD SFR’s
6-bit
PORTE 3-bit 8-bit 8-bit 8-bit
6-bit 8-bit 8-bit 8-bit 3-bit Pinos
PORTA PARALELA
2
73 25/04/2017
Uso das portas paralelas no kit didático 2377
ENTRADA ANALÓGICA
3
74 25/04/2017ENTRADA ANALÓGICA
ENTRADA ANALÓGICA
3
75 25/04/2017Comunicação Analógica
• Somente entrada.• Um conversor A/D de 10 bits. • Oito conexões multiplexadas. • Compartilhada com as portas A e E.
ENTRADA ANALÓGICA
3
76 25/04/2017Pinagem
AN5 AN6 AN7 AN0 AN1 AN2 AN3 AN48 input channels 10-bit Analog-to-Digital Module
ENTRADA ANALÓGICA
3
77 25/04/2017AN PIN
Nome
0
2
RA0/AN0
1
3
RA1/AN1
2
4
RA2/AN2/V
REF-3
5
RA3/AN3/V
REF+4
7
RA5/SS/AN4
5
8
RE0/RD/AN5
6
9
RE1/WR/AN6
7
10 RE2/CS/AN7
Pinagem
• ADON = 0: Funções em verde.
• ADON = 1: Funções em vermelho ou preto.
ENTRADA ANALÓGICA
3
78 25/04/2017
AN PIN
Nome
Função em preto Móduo
4
7
RA5/SS/AN4
Slave select
SSP
5
8
RE0/RD/AN5
Read
PSP
6
9
RE1/WR/AN6 Write
PSP
7
10
RE2/CS/AN7
Chip select
PSP
79 25/04/2017
SFR’s
• ADRESH AD result high byte
• ADRESL AD result low byte
• ADCON0 AD control byte 0
• ADCON1 AD control byte 1
• ADRESH 000011110b, 01Eh, banco 0 • ADRESL 000011111b, 01Fh, banco 0 • ADCON0 010011110b, 09Eh, banco 1 • ADCON1 010011111b, 09Fh, banco 1
80 25/04/2017
SFR’s
• ADRESH:ADRESL: Os 10 bits obtidos na conversão. • ADCON0: Controle da conversão.
• ADCON1: Controle dos pinos.
ADCON0 ADCON1
ENTRADA ANALÓGICA
3
81 25/04/2017ADCON0<7:6> ADCS1:CHS0
AD Clock ADCS1 ADCS0
fOSC/2 TOSC2 fCY2 TCY/2
0
0
fOSC/8 TOSC8 fCY/2 TCY20
1
fOSC/32 TOSC32 fCY/8 TCY81
0
fRCINT
1
1
A/D Conversion Clock Select Bits
reset default
• Não há motivação para escolher taxas de conversão baixas. • Deve-se escolher a conversão mais rápida disponível.
ADCON0
ENTRADA ANALÓGICA
3
82 25/04/2017ADCON0<7:6> ADCS1:CHS0
AD Clock 20MHz 50ns fOSC/2 10MHz 100ns fOSC/8 2,5MHz 400ns fOSC/32 625kHz 1,6sA/D Conversion Clock Select Bits
AD Clock 5MHz 200ns fOSC/2 2,5MHz 400ns fOSC/8 625kHz 1,6s fOSC/32 156kHz 6,4s AD Clock 1,25MHz 800ns fOSC/2 625kHz 1,6s fOSC/8 156kHz 6,4s fOSC/32 39kHz 25,6s • O máximo fADé de 625kHz. • Dependendo do valor do
clock da PIC, nem todas as possibilidades estão disponíveis. AD Clock MáxfOSC fOSC/2 1,25MHz fOSC/8 5MHz fOSC/32 20MHz
ENTRADA ANALÓGICA
3
83 25/04/2017ADCON0<7:6> ADCS1:CHS0
A/D Conversion Clock Select Bits
• A partir de 1,25MHz, é possível obter 625kHz para fAD. • Para 1MHz, o máximo fADé de 500kHz.
• Abaixo de 1MHz, é recomendado o uso do modo RC a fim de que fADnão se torne mais baixo ainda.
Modo RC fAD TAD Mínimo 167kHz 6s Típico 250kHz 4s Máximo 500kHz 2s
ENTRADA ANALÓGICA
3
84 25/04/2017ADCON0<7:6> ADCS1:CHS0
A/D Conversion Clock Select Bits • O conversor A/D é de dez bits. • Cada bit é obtido por uma comparação. • Cada comparação é feita em um TAD. • São necessários 10 TAD’s em uma conversão.
Modo RC TAD 10TAD Mínimo 6s 60s Típico 4s 40s Máximo 2s 20s AD Clock f T Máximo 625kHz 1,6s 10TAD 6,25kHz 16s
ENTRADA ANALÓGICA
3
85 25/04/2017ADCON0<5:3> CHS2:CHS0
AN CHS2 CHS1 CHS0 0 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1Analog Channel Select Bits
reset default ADCON0
ENTRADA ANALÓGICA
3
86 25/04/2017ADCON0<5:3> CHS2:CHS0
Analog Channel Select Bits
analog
81
MUX
Entradas Saída AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7C
H
S
2C
H
S
1C
H
S
0ENTRADA ANALÓGICA
3
87 25/04/2017ADCON0<5:3> CHS2:CHS0
Analog Channel Select Bits
analog
81
MUX
10-bit
A/D
O
0O
92-byte
REG
ADRESH
ADRESL
/CP SelD
0D
78-bit PICData Bus
ENTRADA ANALÓGICA
3
88 25/04/2017ADCON0<0> ADON
Habilitador do conversor AD• 1: Habilita conversor AD.
• 0: Desabilita conversor AD (reset default) .
• No modo desabilitado, há redução no consumo de energia. ADCON0
ENTRADA ANALÓGICA
3
89 25/04/2017ADCON0<2>
• 1: GO. • 0: /DONE.• 1: A conversão AD está em andamento. • 0: A conversão AD está concluída.
• ADCON0<2>, GO_DONE, é colocado em nível 1 por meio de BSF ADCON0, GO_DONE.
• Ao fazer GO_DONE=1, a conversão é iniciada.
• Ao término da conversão, GO_DONE=0 automaticamente. • Não é permitido fazer BCF ADCON0, GO_DONE.
ADCON0
ENTRADA ANALÓGICA
3
90 25/04/2017ADCON0<2>
t 1 0 Controle feito pelo assemblerpara iniciar a conversão.
Sinalização feita pela PIC®
para o término da conversão.
91 25/04/2017
ADCON1<7> ADFM
A/D Result Format Select Bit
92 25/04/2017
ADCON1<7> ADFM
• O alinhamento à direita é útil quando todos os 10 bits são usados.
• Ao usar os 10 bits, duas palavras são usadas, o que requer o dobro de instruções e de tempo de execução. • Para evitar esse problema, é possível usar, apenas, 8
bits, quando não se necessitar de toda a resolução.
• O alinhamento à esquerda é útil quando se usa 8 bits sobre toda a faixa de valores analógicos.
• Os dois bits menos significativos são descartados; apenas uma palavra é usada.
ADCON1
ENTRADA ANALÓGICA
3
93 25/04/2017ADCON1<3:0> PCFG3:PCFG0
PCFG3 :PCFG0 AN7 RE2 AN6 RE1 AN5 RE0 AN4 RA5 AN3 RA3 AN2 RA2 AN1 RA1 AN0 RA0 0000 A A A A A A A A 0001 A A A A VREF+ A A A 0010 D D D A A A A A 0011 D D D A VREF+ A A A 0100 D D D D A D A A 0101 D D D D VREF+ D A A 011x D D D D D D D D 1000 A A A A VREF+ VREF- A A 1001 D D A A A A A A 1010 D D A A VREF+ A A A 1011 D D A A VREF+ VREF- A A 1100 D D D A VREF+ VREF- A A 1101 D D D D VREF+ VREF- A A 1110 D D D D D D D A 1111 D D D D VREF+ VREF- D A A: Entrada analógica D: Porta paralela ou SSP ou PSP A/D Port Configuration Control Bitsreset default
ENTRADA ANALÓGICA
3
94 25/04/2017ADCON1<3:0> PCFG3:PCFG0
PCFG3 :PCFG0 AN7 RE2 AN6 RE1 AN5 RE0 AN4 RA5 AN3 RA3 AN2 RA2 AN1 RA1 AN0 RA0 Explicação 011x D D D D D D D D Nenhum pino para entrada analógica 1110 D D D D D D D A 1 pino para entrada analógica 0100 D D D D A D A A 3 pinos para entrada analógica 0010 D D D A A A A A 5 pinos para entrada analógica 1001 D D A A A A A A 6 pinos para entrada analógica 0000 A A A A A A A A 8 pinos para entrada analógica 0101 D D D D VREF+ D A A VREF+e 2 pinos para entrada analógica0011 D D D A VREF+ A A A VREF+e 4 pinos para entrada analógica
1010 D D A A VREF+ A A A VREF+e 5 pinos para entrada analógica
0001 A A A A VREF+ A A A VREF+e 7 pinos para entrada analógica
1111 D D D D VREF+ VREF- D A VREF+, VREF-e 1 pinos para entrada analógica
1101 D D D D VREF+ VREF- A A VREF+, VREF-e 2 pinos para entrada analógica
1100 D D D A VREF+ VREF- A A VREF+, VREF-e 3 pinos para entrada analógica
1011 D D A A VREF+ VREF- A A VREF+, VREF-e 4 pinos para entrada analógica
1000 A A A A VREF+ VREF- A A VREF+, VREF-e 6 pinos para entrada analógica
reset default 10 9 8 7 5 4 3 2
ENTRADA ANALÓGICA
3
95 25/04/2017ADCON1<3:0> PCFG3:PCFG0
AN7 RE2 AN6 RE1 AN5 RE0 AN4 RA5 AN3 RA3 AN2 RA2 AN1 RA1 AN0 RA0 D D D D D D D D D D D D D D D A D D D D A D A A D D D A A A A A D D A A A A A A A A A A A A A A D D D D VREF+ D A A D D D A VREF+ A A A D D A A VREF+ A A A A A A A VREF+ A A A D D D D VREF+ VREF- D A D D D D VREF+ VREF- A A D D D A VREF+ VREF- A A D D A A VREF+ VREF- A A A A A A VREF+ VREF- A A2 RA0/AN0
3 RA1/AN1
4 RA2/AN2/V
REF-5 RA3/AN3/V
REF+7 RA5/SS/AN4
8 RE0/RD/AN5
9 RE1/WR/AN6
10RE2/CS/AN7
• Como AN4, AN5, AN6 e AN7 compartilham o pino com outras duas funções, eles são usados por menos opções de PCFG.
ENTRADA ANALÓGICA
3
96 25/04/2017
VREF
Analog reference voltage
VREF-VREF+
• Analog reference voltage.
• Tensão de referência para o conversor AD. • VREF+padrão: VDD.
ENTRADA ANALÓGICA
3
97 25/04/2017
VREF
• Todo conversor A/D requer referência mínima e máxima. • Sem essa referência não há como realizar as
comparações, etapa fundamental na conversão A/D. • O nome “analógico” vem de “analogia”, um sinal
analógico tem seu valor baseado em referências, o que não acontece com o digital.
• Geralmente definem-se VREF+e VREF-.
ENTRADA ANALÓGICA
3
98 25/04/2017
Seleção das entradas
VREF-VREF+ Entrada 10 9 8 7 5 4 3 2
ENTRADA ANALÓGICA
3
99 25/04/2017VREF
*Código segundo tabela anterior.
P C F G3 P C F G2 P C F G1 P C F G0
41*
DEC
VREF Entrada Pino 4/5analog
21
DEMUX
ENTRADA ANALÓGICA
3
100 25/04/2017VREF
analog
21
DEMUX
P C F G3 P C F G2 P C F G1 P C F G041
DEC A
Entrada V REF-Pino 4 AN2A
P C F G3 P C F G2 P C F G1 P C F G041
DEC B
Entrada VREF+ Pino 5B
AN3 0 1 0 1analog
21
DEMUX
ENTRADA ANALÓGICA
3
101 25/04/2017VREF
PCFG3 :PCFG0 AN3 RA3 AN2 RA2 011x D D 1110 D D 0100 A D 0010 A A 1001 A A 0000 A A 0101 VREF+ D 0011 VREF+ A 1010 VREF+ A 0001 VREF+ A 1111 VREF+ V REF-1101 VREF+ V REF-1100 VREF+ V REF-1011 VREF+ V REF-1000 VREF+ V REF-PCFG3 :PCFG0A
B
011x 0 0 1110 0 0 0100 0 0 0010 0 0 1001 0 0 0000 0 0 0101 1 0 0011 1 0 1010 1 0 0001 1 0 1111 1 1 1101 1 1 1100 1 1 1011 1 1 1000 1 1• Agora é só efetuar a síntese da função e construir o circuito lógico que direciona o sinal ou para a entrada de referência ou para a entrada do conversor.
ENTRADA ANALÓGICA
3
102 25/04/2017VREF
AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 Usando VREF+ Usando VREF-Não usando VREF+Não usando VREF-Entrada 10 9 8 7 5 4 3 2 Pino 5 Pino 4
103 25/04/2017
VREF
PCFG3 :PCFG0 AN3 RA3 0001 VREF+ 0011 VREF+ 0101 VREF+ 1000 VREF+ 1010 VREF+ 1011 VREF+ 1100 VREF+ 1101 VREF+ 1111 VREF+ PCFG3 :PCFG0 AN2 RA2 1000 V REF-1011 V REF-1100 V REF-1101 V REF-1111 V REF-AN CHS2 CHS1 CHS0 2 0 1 0 3 0 1 1• Se VREF+ e/ou VREF- são selecionados, <PCFG3:PCFG0>, suas respectivas entradas não devem ser selecionadas, <CHS2:CHS0>. • Selecionando VREF+ e AN3, se obtém 3FFh. • Selecionando VREF- e AN2, se obtém 000h. Pino 7 Pino 8 104 25/04/2017
Na conclusão da conversão AD
• Uma solicitação de interrupção é realizada. • ADIF: A/D Interrupt Flag Bit
• PIR1<6> Peripheral Interrupts 1
• 0: Conversão A/D em andamento (reset default). • 1: Conversão A/D concluída.
• ADIE: A/D Converter Interrupt Enable Bit
• PIE1<7> Peripheral Interrupts Enable Bits 1
• 0: Desabilita interrupção A/D (reset default). • 1: Habilita interrupção A/D.
• O byte menos significativo do resultado é gravado em ADRESL. • O byte mais significativo do resultado é gravado em ADRESH. • O bit GO_DONE recebe “0”.
ENTRADA ANALÓGICA
3
105 25/04/2017Amostra e retenção
http://w w w.synthesizers.com/q117f1.gif• Sample and hold
• Todo conversor A/D possui, na entrada, um circuito S/H.
• Trata-se de um registrador analógico. • Um capacitor armazena a tensão. • A tensão precisa ficar retida para o
processo de aproximações sucessivas. http://w w w.eecs.tufts.edu/~dsculley/tutorial/opamps/sampleAndHold.JPG t t t
ENTRADA ANALÓGICA
3
106 25/04/2017Aproximações sucessivas
1. Determine n, a quantidade de Bits do conversor. 2. Determine a faixa de valores analógicos válidos. 3. Determine o valor médio dessa faixa.
4. A entrada é maior do que essa média? 5. Sim: Bit n-1 = 1.
6. Não: Bit n-1 = 0. 7. Para o próximo bit (n-2):
8. Sim: Usar, apenas, a metade superior da faixa. 9. Não: Usar, apenas, a metade superior da faixa. 10.Repetir passos 2 a 9 até a obtenção do bit 0.
Vide exemplos
PWM
4
PWM
107 25/04/2017PWM
4
• Capture • Compare • PWMCCP
108 25/04/2017 Dois módulos: • CCP1 • CCP2 • CCPx • X {1;2}PWM
4
Modos de operação
• Três modos de operação. • CCP – Capture/Compare/PWM. • Dois módulos CCP: CCP1 e CCP2.• CCP1 e CCP2 podem operar em modos diferentes. • Na configuração PWM-PWM, os módulos operam
à mesma frequência, pelo TMR2.
109 25/04/2017
Modo Base de tempo
Capture TMR1 Compare TMR1 PWM TMR2
PWM
4
110 25/04/2017Modos de operação
<CCPxM3:CCPxM2> Modo00
Desligado01
Capture10
Compare11
PWM reset default CCPxCONPWM
4
Pinagem na PIC
CCP2 CCP1 111 25/04/2017 Multiplexação Saídas PWM• Os pinos do módulo devem ser configurados como saída. • TRISC<1> = 0 PWM2 • TRISC<2> = 0 PWM1
PWM
4
SFR’s
• CCPR1: Registrador de 16 bits. • CCPR2: Registrador de 16 bits. • CCPRx: Registrador de 16 bits.• No modo PWM, são usados registradores de 10 bits.
112 25/04/2017
PWM
4
SFR’s
• CCPR1 Registrador de 16 bits • CCPR2 Registrador de 16 bits • CCPR1L Capture/Compare/PWM Register1 (LSB) 015h • CCPR1H Capture/Compare/PWM Register1 (MSB) 016h • CCPR2L Capture/Compare/PWM Register2 (LSB) 01Bh • CCPR2H Capture/Compare/PWM Register2 (MSB) 01Ch• CCP1CON Capture/Compare/PWM Control Register1 017h
• CCP2CON Capture/Compare/PWM Control Register2 01Dh
• PR2 Timer2 Module’s Period Register 092h
• TMR2 Timer2 Module’s Register 011h
• T2CON Timer2 Control Register 012h
113 25/04/2017
PWM
4
CCP1CON e CCP2CON
• CCPx Control Register .• <CCPxX:CCPxY>Bits menos significativos PWM.
• <CCPxX:CCPxY>são usados apenas no modo PWM, não são usados nos modos capture e compare. • <CCPxM3:CCPxM0> : Modo de operação.
• 11XXb: Modo PWM.
• Em alguns modelos, esses bits são chamados de <DCx1:DCx0>.
114 25/04/2017
115 25/04/2017
Interação entre os módulos CCP1 e CCP2
CCP1 CCP2 Interação
PWM PWM Mesma base de tempo
PWM Capture Nenhuma PWM Compare Nenhuma Capture PWM Nenhuma Compare PWM Nenhuma
DC<9:0>
• Dutty-Cycle Register• Em eletricidade, dutty-cycle é um número entre 0% e 100%. • Na PIC, DC significa uma palavra de comparação. • DC é uma palavra de 10 bits, DC<9:0>.
• DC<9:0> representa a entrada “analógica” do PWM. • DC<9:0> quantiza um valor analógico em 1024 níveis. • Os oito bits mais significativos, DC<9:2>, são registrados
em CCPRxL<7:0>.
• Os dois bits menos significativos, DC<1:0>, são registrados em CCPxX e CCPxY, CCPxCON<5:4>. 116 25/04/2017
PWM
4
117 25/04/2017 0 15 CCPRx<15:0> 0 9 DC<9:0> CCPRLx<7:0> CCPRHx<7:0> 0 7 0 7 0 7 CCPxCON<7:0>DC<9:0>
• Não se trata de uma cópia. • Os bits foram, apenas, dispostos de forma agrupada.PWM
4
118 25/04/2017DC<9:0>
• DC<9:2> = CCPRxL<7:0>. • DC<1:0> = CCPxCON<5:4>. • DC<1> = CCPxX. • DC<0> = CCPxY.PWM
4
119 25/04/2017DC<9:2>
• Para simplificar a programação, principalmente quando se trabalha em conjunto com o conversor A/D, é possível lidar, apenas, com 8 bits. • Esta palavra de 8 bits é chamada de DC<9:2> ou
CCPRxL<7:0>.
• Em muitas situações, é possível lidar com DC<9:2> sem que ocorra nenhum erro de cálculo, como será mostrado mais adiante. • Em outras situações, há erro de cálculo, mas
esse erro é desprezível.
• Poucas são as situações práticas onde é, realmente, necessário lidar com DC<9:0>.
PWM
4
120 25/04/2017
PWM de 10 bits – DC<9:0>
• Informações meramente introdutórias.
• Ver próximos slides sobre obtenção de 0% e 100%. • Pequenos erros nestes valores serão evidenciados.
DC% 10 bitsreal aproximado para 8 bits Mínimo 0% 000h 0000d 0000000000b 00h 000d 00000000b Máximo 100% 3FFh 1023d 1111111111b FFh 255d 11111111b
PWM
4
121 25/04/2017
• Usando 8 bits, o máximo valor analógico correspondente é menor do que usando 10 bits.
• Isso ocorre porque os dois bits menos significativos são zero (reset default).
• Os valores de DC<9:2>, em uma análise de 8 bits,
correspondem aos valores de DC<9:0> divisíveis por quatro.
PWM de 10 bits – DC<9:0>
Níveis analógicos real 10 bits aproximado para 8 bits Mínimo 000h 0000d 0000000000b 000h 000d 000000000b Máximo 3FFh 1023d 1111111111b 3FCh 1020d 1111111100bPWM
4
122 25/04/2017DC – Faixa de valores admitidos
000h 3FFh 00h FFh 01h 02h FEh 001h 002h 003h 004h 005h 3FEh 3FDh 3FCh 3FBh 3FAh 10-bit DC 006h007h 008h
DC<9:0>
DC<9:2>
DC<1:0>=00b
1023d 1022d 1021d 1020 1019d 1018d 255d 254dPWM
4
Controle com 10 bits
• DC<9:0> está apto a receber uma entrada analógica ADRES<9:0>.
• Fazendo DC<9:0> = f(ADRES<9:0>) é possível implementar um sistema de controle em malha fechada com resolução de 10 bits, onde “f” é a função de transferência em malha aberta.
• CCPRxL<7:0> = ADRESH<7:0> • CCPxCON<5:4> = ADRESL<7:6>
• É preciso configurar ADCON1<7> = 0 (left justified).
123 25/04/2017
PWM
4
Controle de malha fechada
124 25/04/2017
Atuador
Sensor
PWM
AD
F(s)
PWM
4
Controle com 10 bits
125 25/04/2017
PWM
4
Controle com 8 bits
• DC<9:2> está apto a receber ADRESH<7:0>.
• Fazendo DC<9:2> = f(ADRESH<7:0>) é possível implementar um sistema de controle em malha fechada com resolução de 8 bits, onde “f” é a função de transferência em malha aberta.
• Configurar ADCON1<7> = 0. • CCPRxL<7:0> = ADRESH<7:0>
• A vantagem em usar 8 bits é que a função de transferência é aplicada sobre uma única palavra, o que reduz o tempo de cálculo à metade, bem como a quantidade de linhas de instrução pertinentes a essa função.
126 25/04/2017
Controle com 8 bits
127 25/04/2017 25/04/2017 128Geração do sinal PWM
DC<9:0> 10-bit PWM t tSituação real – 10 bits
DC<9:2> 8-bit PWM t t Aproximação – 8 bits
PWM
4
Registrador de retenção
129 25/04/2017 • Holding register.• Durante a rampa, a palavra que retrata o valor analógico a ser modulado não pode sofrer alteração.
• Havendo alteração, podem haver mais de um ponto de cruzamento em uma mesma rampa.
• A presença de dois ou mais pontos de cruzamento pode gerar um dutty-cycle não proporcional ao valor analógico desejado. • CCPRxL<7:0> é copiado em CCPRxH<7:0>, que age como
um registrador de retenção. • A letra “h” de CCPRxH significa “hold”. • CCPxCON<5:4> também é copiado.
• A cópia é efetuada no TOSCem que uma nova rampa se inicia.
PWM
4
Registrador de retenção
130 25/04/2017
• O registrador de retenção não está acessível ao usuário, não suporta nem leitura nem escrita.
• Nos modos capture e compare, CCPRxH<7:0> age como
byte mais significativo (high) e está acessível ao usuário.
• Os dois bits menos significativos são obtidos a partir de dois FF’s adicionais específicos para esta finalidade.
PWM
4
131 25/04/2017 Registrador de retenção 10-bitRegistrador de retenção
DC<9:0> 10-bit PWM Cópia para o registrador de retenção Slave Master t tPWM
4
132 25/04/2017Registrador de retenção
t t DC<9:0> t PWM Holding Register<9:0>PWM
4
133 25/04/2017Registrador de retenção
10-bit
REG
8-bit CCPRxL CCPxX CCPxY TCYDC
CCPR<8> CCPR<9> CCPR<7:0>PWM
4
134 25/04/2017• O passo de contagem do TMR2<9:0> é quatro vezes rápido do que o do TMR2<7:0>, mas a contagem completa leva o mesmo tempo.
• O período de TMR2<9:0> é igual ao de TMR2<7:0>. • Trata-se do mesmo contador, mas com dois bits
menos significativos adicionais.
• O passo de contagem do TMR2<7:0> pode ser fragmentado em quatro partes.
• Isso é feito para que o PWM tenha uma resolução máxima de dez bits.
• A comparação é feita entre DC<9:0> e TMR2<9:0>. • Não é possível fazer comparação com palavras de
tamanho de bits diferentes.
TMR2<9:0> – Dez bits de contagem
PWM
4
FFh 00h 000h 004h 008h 01h 02h 001h 002h003h TCY 1:1 TOSC 1:1 FEh 135 25/04/2017TMR2<9:0>
TMR2<7:0>
TMR2<9:0> – Geração da rampa de 10 bits
3FFh 3FEh 3FDh 3FCh 3FBh 3FAh 1023d 1022d 1021d 1020 1019d 1028d Prescaler ratio 1:1
PWM
4
136 25/04/2017TMR2<9:0> – Passo fragmentado
Exemplo 00h 000h Passo fragmentado de TMR2<7:0> 004h 008h 01h 02hTMR2<9:0>
TMR2<7:0>
DC<9:0>
03h 00ChPWM
4
8-bit TMR2<7:0> 10-bit TMR2<9:0> 00h 000h DC<9:0> Passo fragmentado de TMR2<7:0> 004h 008h 01h 02h t PWM TCY 1:1 TCY 1:1 TCY 1:1 3/4TCY 1:1 Largura de Pulso 137 25/04/2017TMR2<9:0> – Determinação da largura de pulso
Exemplo 03h 00Ch
PWM
4
00h 000h DC<9:0>=00Fh=0000001111b 004h 008h 01h 02h t 138 25/04/2017TMR2<9:0> – Determinação da largura de pulso
00Ch DC<9:0>=00Ch=0000001100b CCPRxL=00000011b=03h 03h CCPRxL=00000011b=03h t 10-bit PWM 8-bit PWM Exemplo
139 25/04/2017
TMR2<9:0> – Determinação da largura de pulso
Exemplo 00h 000h 004h 008h 01h 02h t 00Ch 03h t 10-bit PWM 8-bit PWM • No PWM de 10 bits, há mais opções para a escolha do ciclo ativo ou largura de pulso.
140 25/04/2017
• Os dois bits mais significativos do contador prescaler formam os dois bits menos significativos de TMR2<9:0>, para que seja comparado com CCPRx<9:0>.
• Mesmo se o prescaler ratio for de 1:1, dois bits são fornecidos, neste caso, por dois FF’s extras.
TMR2<9:0> – Prescaler
PWM
4
141 25/04/2017 3FFh 000h 1:1 TOSC 1:4 TCY1:16 4TCY <T2CKPS1:T2OUTPS0> Rate
00 1:1 01 1:4 1x 1:16 1:1 TCY 1:4 4TCY 1:16 16TCY
TMR2<9:0> – Prescaler
TMR2<9:0>
PWM
4
TMR2<9:0> – Prescaler 1:16
142 25/04/2017 TMR2<9:2> <1:0> <9> <8> <7> <6> <5> <4> <3> <2>Contador Prescaler – 4-bit
TMR2<1:0> <1> <0> LSb MSb TCY
PWM
4
TMR2<9:0> – Prescaler 1:4
143 25/04/2017 TMR2<9:2> TCY <1:0> <9> <8> <7> <6> <5> <4> <3> <2> <1> <0> Contador Prescaler – 2-bitTMR2<1:0> LSb MSb
PWM
4
TMR2<9:0> – Prescaler 1:1
144 25/04/2017 TMR2<9:2> <9> <8> <7> <6> <5> <4> <3> <2> FF’s extras <1:0> <1> <0> TOSC TCY LSb MSb TMR2<1:0>PWM
4
Modo PWM – Módulo 1
145 25/04/2017
• O circuito gerador do sinal PWM é composto de duas partes:
1. Controle do período ou gerador da rampa. 2. Controle do dutty-cycle.
• A primeira parte integra o TMR2 e é usada pelos dois módulos PWM, ou seja, as duas saídas PWM usam a mesma rampa.
• A segunda parte integra os módulos CCP e pode possuir configurações diferentes para cada módulo. • A primeira parte emprega 8 bits.
• A segunda parte emprega 10 bits.
PWM
4
146 25/04/2017TMR2<9:2> – Comparador com PR2<7:0>
TMR2<9:2>8-bit
COMPARATOR
PR2<7:0>PWM
4
147 25/04/2017TMR2<9:0> – Comparador com DC<9:0>
DC<9:2> DC<1:0> CCPRxL<7:0> CCPxCON<5:4> CCPRxH<7:0> 2 FF´sPWM
4
148 25/04/2017TMR2<9:0> – Comparador com DC<9:0>
10-bit
COMPARATOR
FF´s CCPRxH<7:0> TMR2<9:2> FF´sPWM
4
149 25/04/2017As duas comparações
10-bit COMPARATOR FF´s CCPRxH<7:0> 8-bit COMPARATOR PR2<7:0> TMR2 reset set FF´sPWM
4
150 25/04/2017O controle da saída
Tris bit Pino 16 ou 17 Output InputFF
RS
R S CAPTURE 10-bit COMPARATOR FF´s CCPRxH<7:0> 8-bit COMPARATOR PR2<7:0> TMR2 reset set FF´s• Quando o módulo CCP está desligado, a saída do FF RS assume valor zero.
TRISC<2> Pino 17 Output Input FF RS 1 R S CAPTURE 1 10-bit COMPARATOR 1 FF´s CCPR1H<7:0> 8-bit COMPARATOR PR2<7:0> TMR2 FF´s TRISC<1> Pino 16 Output Input FF RS 2 R S CAPTURE 2 CCP1 CCP2 10-bit COMPARATOR 2 FF´s CCPR2H<7:0> 151 25/04/2017
Os dois módulos
25/04/2017 152O controle da saída
Tris bit FF RS R S PWM DC<9:0> t t t t PWM R S 10-bit COMPARATOR FF´s CCPRxH<7:0> 8-bit COMPARATOR PR2<7:0> TMR2 reset set FF´sPWM
4
Modo PWM – Módulo 1
153 25/04/2017 (*) 10-bit 10-bit 10-bit 8-bit 8-bit 10-bit 0: Saída - Ligado 1: Entrada - Desligado Buffer 3SPWM
4
Modo PWM – Módulo 1
Controle do período Controle do dutty-cycle 154 25/04/2017 (*) 10-bit 10-bit 10-bit 10-bit 8 bits 8 bitsPWM
4
Controle de 8 bits do período
PR2<7:0> FFh
00h
155 25/04/2017
• A linha inclinada representa o SFR TMR2<7:0>. • Esta é uma propriedade de TMR2<7:0> e não do CCPx. • O reset em TMR2 ocorre após a conclusão do passo do match.
8-bit 8-bit 8-bit TMR2Reset t t
PWM
4
25/04/2017 156 PR2<7:0> TPWM • É realizada a operação TMR2<7:0> – PR2<7:0>. • Quando TMR2<7:0> sofre um reset, o FF RS sofre um set. • Os dois bits extras (TMR2<1:0>) também são reiniciados. • O ciclo PWM inicia em nível alto.t
t
Controle de 8 bits do período
7 0
<7:0>
7 0
7 0
PWM
4
Controle de 10 bits do dutty-cycle
157 25/04/2017
• A linha inclinada representa TMR2<9:0>. • A linha horizontal representa DC<9:0>.
DC<9:0> PWM t t
PWM
4
Controle de 10 bits do dutty-cycle
158 25/04/2017
• O FF RS set ocorre após o passo onde ocorre match. • O FF RS set observa o match de 8 bits entre TMR2<7:0> e
PR2<7:0>.
• O FF RS reset ocorre no início do passo onde ocorre o match. • O FF RS reset observa o match de 10 bits entre TMR2<9:0> e
DC<9:0>.
• A saída Q do FF RS é o próprio sinal PWM.
DC<9:0> PWM t t
PWM
4
F F R S SET DC<9:0> FF RS Q PWM PR2<7:0> FFh F F R S R ESET TPWM 00hControle por 8 bits
Controle por 10 bits
159 25/04/2017
t
t
Controle de 10 bits do dutty-cycle
PWM
4
160 25/04/2017 Fora do dutty-cycle DC<9:0>TMR2<9:0> PW M = 0 Dentro do dutty-cycle DC<9:0>maior que TMR2<9:0> PW M = 1 DC<9:0> (*) t t <9:2> <1:0>Controle de 10 bits do dutty-cycle
PWM
4
• Período: Base de tempo
161 25/04/2017 <9:0> <7:0> <7:0> DC<9:0> Tempo alto <7:0> <7:0>
Controle de 10 bits do dutty-cycle
Controle por 8 bits Controle por 10 bits
PWM
4
If TMR2<7:0> = PR2<7:0> + 1 Then TMR2<9:0> = 0h End 162 25/04/2017• Os dois bits extras também são reiniciados.If TMR2<9:0> < DC<9:0> Then PWM = 1b Else PWM = 0b End 163 25/04/2017
Controle de 10 bits do dutty-cycle
164 25/04/2017
Os dois módulos operando simultaneamente
DC1<9:0> PWM1 t t PWM2 t DC2<9:0> CCP1 CCP2
PWM
4
165 25/04/2017Resolução PWM
• É desejável aumentar a resolução PWM quando se deseja realizar um controle preciso.
• Uma maior resolução implica em maior quantidade de valores possíveis para DC.
• O aumento na resolução implica na diminuição da frequência PWM.
• Baixas frequências podem ser usadas quando algum elemento físico do sistema exerce a função de filtro passa-baixas, encontrado em sistemas de alta inércia. • Exemplos: Lâmpadas incandescentes, motores, fornos. • Outras situações, porém, podem requerer alta frequência de operação, como, por exemplo, aplicações em telecomunicações.
PWM
4
• O número de passos de TMR2<7:0> é dado por PR2+1. • O aumento de PR2+1 aumenta a resolução PWM. • A diminuição de PR2+1 aumenta a frequência PWM. • Na verdade, a diminuição de PR2+1 aumenta a frequência
de TMR2, que, por sua vez, é a base de tempo do PWM. • A variação na resolução PWM em função de PR2+1 não é
linear.
• A variação do período PWM em função de PR2+1 é linear.
166 25/04/2017
Resolução PWM
PWM
4
Resolução PWM – Configuração do PR2
167 25/04/2017 • 10 bits: 1111_1111b PR2 1000_0000b • 9 bits: 0111_1111b PR2 0100_0000b • 8 bits: 0011_1111b PR2 0010_0000b • 7 bits: 0001_1111b PR2 0001_0000b • 6 bits: 0000_1111b PR2 0000_1000b • 5 bits: 0000_0111b PR2 0000_0100b • 4 bits: 0000_0011b PR2 0000_0010b • 3 bits: 0000_0001b PR2 0000_0001b Binário• A resolução PWM é dada pela quantidade de bits usados em PR2 mais 2.
PWM
4
• 10 bits: FFh PR2 80h • 9 bits: 7Fh PR2 40h • 8 bits: 3Fh PR2 20h • 7 bits: 1Fh PR2 10h • 6 bits: 0Fh PR2 08h • 5 bits: 07h PR2 04h • 4 bits: 03h PR2 02h • 3 bits: 01h PR2 01h 168 25/04/2017Resolução PWM – Configuração do PR2
Hexadecimal• A resolução PWM é dada pela quantidade de bits usados em PR2 mais 2.
PWM
4
Resolução PWM – DC<9:0> máximo
169 25/04/2017
• O DC pode assumir diversos valores em um mesmo programa. • Dentre esses valores, o maior
deles determina a resolução PWM. • 10 bits: 11_1111_1111b DCMÁX 10_0000_0000b • 9 bits: 01_1111_1111b DCMÁX 01_0000_0000b • 8 bits: 00_1111_1111b DCMÁX 00_1000_0000b • 7 bits: 00_0111_1111b DCMÁX 00_0100_0000b • 6 bits: 00_0011_1111b DCMÁX 00_0010_0000b • 5 bits: 00_0001_1111b DCMÁX 00_0001_0000b • 4 bits: 00_0000_1111b DCMÁX 00_0000_1000b • 3 bits: 00_0000_0111b DCMÁX 00_0000_0100b Binário X,Y
PWM
4
Resolução PWM – DC<9:0> máximo
• 10 bits: 3FFh DCMÁX 200h • 9 bits: 1FFh DCMÁX 100h • 8 bits: 0FFh DCMÁX 080h • 7 bits: 07Fh DCMÁX 040h • 6 bits: 03Fh DCMÁX 020h • 5 bits: 01Fh DCMÁX 010h • 4 bits: 00Fh DCMÁX 008h • 3 bits: 007h DCMÁX 004h 170 25/04/2017 HexadecimalPWM
4
171 25/04/2017Resolução do conversor A/D e do PWM
Uso da faixa total
• Para usar 10 bits, a faixa de valores analógicos deve superar a metade mais baixa da faixa total admissível. • Para usar 9 bits, a faixa de valores analógicos deve
estar na metade mais baixa da faixa total admissível. • Para usar 8 bits, a faixa de valores analógicos deve
estar no quarto mais baixo da faixa total admissível. • Para usar 7 bits, a faixa de valores analógicos deve
estar no oitavo mais baixo da faixa total admissível. • E assim por diante.
PWM
4
172 25/04/2017Efeito da frequência
t DC<9:0> t PWM • PR2 = FFh • TMR2<7:0> máx. = FFh (256 passos) • TMR2<9:0> máx. = 3FFh (1024 passos) • DC<9:2> máx. = FFh • DC<9:0> máx. = 3FFh Máximo períodoPWM
4
173 25/04/2017Efeito da frequência
t t PWM DC<9:0> • PR2 = 7Fh • TMR2<7:0> máx. = 7Fh (128 passos) • TMR2<9:0> máx. = 1FFh (512 passos) • DC<9:2> máx. = 7Fh • DC<9:0> máx. = 1FFh Metade do máximo períodoPWM
4
Conversão de 8 bits para 10 bits
174 25/04/2017
• x8bit: Número de 0 a 255. • x10bit: Número de 0 a 1023.
• A adição de 1 se deve à proporcionalidade sobre as faixas, e não sobre os valores.
• A conversão contrária, de 10 para 8, pode gerar um número fracionário.
Obtenção de dutty-cycle de 100%
• Se DC<9:0> for superior a PR2<7:0>4, então a situação em que TMR2<9:0> = DC<9:0> jamais será satisfeita.
• A saída PWM jamais vai a zero.
• Isto permite a obtenção de um dutty-cycle de 100%. • Trata-se de um desrespeito à regra de que o valor
de comparação jamais deva exceder a rampa. • Esta regra vale para o PWM gerado analogicamente. • Este desrespeito, porém, permite compensar uma limitação da arquitetura do PWM da PIC, que impediria a obtenção dos 100%.
175
25/04/2017 25/04/2017 176
Obtenção de dutty-cycle de 100%
• Para PR2<7:0>=FFh (reset default), DC<9:2> máximo (FFh) faz com que a saída PWM vá a zero quando TMR2<7:0> = FFhpor causa do match no último passo de contagem. • Isso leva a um dutty-cycle de 255/256.
• DC% = 99,609375%.
• Para PR2=FEh, o DC<9:2> máximo (FFh) faria com que o sinal PWM sofresse um reset em função do match de dez bits no momento em que TMR2<7:0> atinge FFh, porém TMR2<7:0> conta até FEh, o match não ocorre, o reset não é efetuado, e o sinal PWM permanece em 1 por todo o período.
8 bits
PWM
4
177 25/04/2017Obtenção de dutty-cycle de 100%
• Para PR2<7:0>=FFh (reset default), DC<9:0> máximo (3FFh) faz com que a saída PWM vá a zero quando TMR2<9:0> = 3FFhpor causa do match no último passo de contagem. • Isso leva a um dutty-cycle de 1023/1024.
• DC% = 99,90234375 %.
• Para PR2=FEh, o DC<9:0> máximo (3FFh) faria com que o sinal PWM sofresse um reset em função do match de dez bits no momento em que TMR2<9:0> atinge 3FFh, porém TMR2<9:0> conta até 3FBh, o match não ocorre, o reset não é efetuado, e o sinal PWM permanece em 1 por todo o período. 10 bits
PWM
4
178 25/04/2017 • O máximo DC<9:0> é de 3FFh. • O máximo DC<9:2> é de FFh.• Não é possível obter dutty-cycle de 100% com PR2=FFh. • Mas é possível obter dutty-cycle de 100% com PR2<FFh. • Escolher um DC<9:0> maior ou igual a (PR2+1)4. • Escolher um DC<9:2> maior ou igual a (PR2+1).
• A saída PWM jamais vai a zero e o dutty-cycle é de 100%.
Obtenção de dutty-cycle de 100%
PWM
4
179 25/04/2017Dutty-cycle de 100%
DC<9:0> PWM PR2 FFh F F R S SET 00h t t F F R S SETPWM
4
180 25/04/2017• Quando a rampa é reiniciada, o FF RS recebe o comando set.
• Quando TMR2<9:0> encontra DC<9:0>, o FF RS recebe o comando reset no mesmo passo de contagem. • Quando DC<9:0> = 000h, os dois fenômenos ocorrem
no mesmo passo, o que implica em dar, ao FF RS, os comandos set e reset ao mesmo tempo, o que é proibido.
• Graças a um circuito adicional, quando DC<9:0> = 000h, excepcionalmente, PWM não é levado a 1, isto permite a obtenção de um dutty-cycle de 0%.
PWM
4
181 25/04/2017Dutty-cycle de 0%
t DC<9:0> t DC<9:0> Dutty-cycle > 0% Dutty-cycle 0 0%PWM
4
182 25/04/2017Dutty-cycle de 0%
SugestãoPWM
4
183 25/04/2017Máximo TMR2<9:0> em função de PR2<7:0>
• PR2<7:0>é um parâmetro de programação. • Um DC% de 100% é obtido com DC<9:0>=MáxTMR2<9:0>+1. • Como descobrir o valor de MáxTMR2<9:0>?• Veja o exemplo sugeridos.
Vide exemplos
PWM
4
• Trata-se do cálculo do período do TMR2<7:0>. • Até 10 bits de resolução na saída PWM. • O período é dado por PR2<7:0>.
• O Duty-Cycle é dado por CCPRxL e CCPxCON<5:4>. • CCPRxL<7:0>: Oito bits mais significativos. • CCPxCON<5:4>: Dois bits menos significativos. • DC<9:0>: Todos os 10 bits. 184 25/04/2017
Cálculo do período PWM
PWM
4
185 25/04/2017Controle do período
• TOSC: Período do relógio. • TCY: Período de instrução. • TSTEP: Tempo do passo de contagem. • TRAMP: Tempo de uma contagem completa.
PWM
4
186 25/04/2017
187 25/04/2017
Controle do período
Cálculo do dutty-cycle
188 25/04/2017
PWM
4
Cálculo do dutty-cycle
189 25/04/2017PWM
4
Cálculo do dutty-cycle
190 25/04/2017PWM
4
191 25/04/2017Quando DC > máxTMR2+1
• DC% não pode superar 100%. • Se DC > DC100%, então DC% = 100%.
PWM
4
192 25/04/2017Quando DC > máxTMR2+1
000h 004h 001h 002h003h DC<9:0> 00h 04h 01h 02h03h DC<9:2> Vide exemplosPWM
4
193 25/04/2017
Fazendo PR2=7Fh
• Usando PR2<7:0>=7Fh, a resolução é de 9 bits. • O máximo TMR2<9:0> é 1FFh.
• É possível fazer DC<9:0> > 1FFh, basta configurar DC<9:0> = 200h ou mais.
• É possível obter DC%=100%.
• Porém, se DC<9:0> > 1FFh, a resolução é de 10 bits. • Pergunta: A resolução PWM é de 9 ou 10 bits?
• Usando PR2<7:0>=FFh, a resolução é de 10 bits. • O máximo TMR2<9:0> é 3FFh.
• Não é possível fazer DC<9:0> > 3FFh. • Não é possível obter DC%=100%.
PWM
4
194 25/04/2017Os casos de 0% e de 100%
t t dutty-cycle = 50% t t dutty-cycle = 0% t t dutty-cycle = 100%PWM
4
195 25/04/2017Os casos de 0% e de 100%
• Em 0% e em 100% o sinal PWM é contínuo. • Não há determinação de frequência nem de período. • Não há pulso.• Se não há pulso, não pode haver modulação por largura de pulso.
• Em 0% e em 100%, não há PWM.
• Por estar fora do conceito de PWM, os bits usados para 100% não são considerados no cálculo da resolução PWM. • Um PWM analógico não aceita 0% nem 100%.
Vide exemplos
PWM
4
196 25/04/2017DC<9:0> – Divisões
• Pode-se dividir o DC<9:0> em meias, terças, quartas, quintas, e assim por diante. • Em meias, há três valores, em terças há
quatro, em quartas cinco, e assim por diante. • A divisão em quartas é suficiente para grande parte das aplicações práticas para controle de tensão média em malha aberta.
PWM
4
197 25/04/2017
DC<9:0> – Divisões – Escolha do PR2
• O valor de PR2 deve ser o maior possível, a fim de que se obtenha a menor frequência.
• PR2 somente deve ser pequeno em situações específicas onde a frequência precisa ser alta ou precisa ter um valor especificado por fatores externos.
• Quanto menor for a frequência, menor é o consumo de energia elétrica em tecnologia CMOS.
PWM
4
198 25/04/2017
DC<9:0> – Divisões – Escolha do PR2
• O uso de um PR2 alto garante uma melhor resolução analógica do valor médio PWM.
• A resolução analógica não é a resolução em bits, ela, tal como no conversor A/D, expressa o quanto da faixa analógica permitida está sendo usada; quanto mais, melhor. • O erro percentual, inerente a qualquer regulador de tensão,
é calculado sobre a faixa total de tensão admissível. • O uso de uma pequena faixa implica em um alto erro
199 25/04/2017
DC<9:0> – Divisões – Escolha do PR2
• Preferencialmente, deve-se usar, apenas, 8 bits,
DC<9:2>, e não 10 bits, DC<9:0>.
• Neste caso, o valor de PR2<7:0> deve ser tal que todos os valores parciais de dez bits sejam divisíveis por 4, isto é, os dois bits menos significativos, DC<1:0> são zero. • Isto permite a obtenção de um programa assembly mais
simples sem a geração de erros de aproximação. • Para conseguir isso, é preciso escolher o máximo valor
de PR2<7:0>+1 e que seja divisível por n, as divisões. • A máxima resolução analógica em DC<9:2> é observada
quando todos os oito bits são usados.
200 25/04/2017
DC<9:0> – Divisões – Construção das tabelas
• Na tabela de 8 bits, um dutty-cycle de 100% é obtido com DC<9:2> = PR2<7:0>+1.
• Se a divisão é em terças, n=3. se são quartas, n=4, e assim por diante.
• PR2<7:0>+1 deve receber o máximo valor divisível por n. • As linhas vão de 0/n, 1/n até n/n.
• O valor de 0/n é sempre zero.
• O valor 1/n é obtido com o valor de 100% dividido por n. • Os demais valores são obtidos multiplicando o valor de 1/n
por números inteiros.
• Para a tabela de 10 bits, basta multiplicar estes valores por 4.
PWM
4
201 25/04/2017
Passos de 8 bits e passos de 10 bits
• Quando o cálculo de PR2 fornece um número fracionário, precisa ser arredondado para baixo.
Vide exemplos
PWM
4
202 25/04/2017
Arredondamento para 10 bits
000h 004h 001h 002h003h DC100%<9:0> 00h 04h 01h 02h03h DC100%<9:2>
Arredondamento para baixo - correto Arredondamento para cima - errado