4 portas de comunicação 1 - ufsj.edu.br - pb... · • todas as outras funções multiplexadas...

34
25/04/2017 1 1 25/04/2017 Parte 4 PORTAS DE COMUNICAÇÃO 2 25/04/2017 1. DEFINIÇÃO 2. PORTA PARALELA 3. ENTRADA ANALÓGICA 4. PWM 5. PROGRAMAÇÃO PWM 1 3 25/04/2017 DEFINIÇÃO DEFINIÇÃO 1 4 25/04/2017 Significado de porta DEFINIÇÃO 1 5 25/04/2017 Necessidade 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/2017 Tipos Entrada analógica. Saída analógica (somente DSP´s). Saída PWM. I/O digital. Paralela. Paralela escrava. Serial.

Upload: tranhanh

Post on 25-Aug-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

25/04/2017

1

125/04/2017

Parte 4PORTAS DE COMUNICAÇÃO

225/04/2017

1. DEFINIÇÃO2. PORTA PARALELA3. ENTRADA ANALÓGICA4. PWM5. PROGRAMAÇÃO PWM

DEFINIÇÃO1

325/04/2017

DEFINIÇÃO

DEFINIÇÃO1

425/04/2017

Significado de porta

DEFINIÇÃO1

525/04/2017

Necessidade• 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 queela interfira em elementos externos ao dispositivo.

• A comunicação entre o barramento de dados dodispositivo e o mundo exterior é feito através dasportas de comunicação.

• Todo programa, em alguma aplicação útil, deve fazeruso, pelo menos uma vez, de alguma porta decomunicação.

DEFINIÇÃO1

625/04/2017

Tipos

• Entrada analógica.• Saída analógica (somente DSP´s).• Saída PWM.• I/O digital.

• Paralela.• Paralela escrava.• Serial.

25/04/2017

2

DEFINIÇÃO1

725/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.

DEFINIÇÃO1

825/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ÇÃO1

925/04/2017

Bloc

os fu

ncio

nais

na

PIC

16F8

77

DEFINIÇÃO1

1025/04/2017

Portas• Todas as portas de comunicação da MCU são

periféricos, mas nem todos os periféricos são portasde comunicação.

• Sendo periféricos, todas as portas se comunicamcom 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ÇÃO1

1125/04/2017

Pinos (DIP 40)Os 33 pinos de I/O

DEFINIÇÃO1

1225/04/2017

Pinos (DIP 40)Os 7 pinos não usados para I/O

25/04/2017

3

DEFINIÇÃO1

1325/04/2017

Pinos (DIP 40)

2 33 15 19 83 34 16 20 94 35 17 21 105 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ÇÃO1

1425/04/2017

SFR’s para configuração do sentidoSFR Addr. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0TRISA 085h - - I/O I/O I/O I/O I/O I/OTRISB 086h I/O I/O I/O I/O I/O I/O I/O I/OTRISC 087h I/O I/O I/O I/O I/O I/O I/O I/OTRISD 088h I/O I/O I/O I/O I/O I/O I/O I/OTRISE 089h IBF OBF IBOV PSPMODE - I/O I/O I/O

TRIS Sentido0 Saída1 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ÇÃO1

1525/04/2017

Pinos (DIP 40)2 33 15 19 83 34 16 20 94 35 17 21 105 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ÇÃO1

1625/04/2017

SFR Addr. POR/BORTRISA 085h --11 1111TRISB 086h 1111 1111TRISC 087h 1111 1111TRISD 088h 1111 1111TRISE 089h 0000 -111

Banco 1

SFR’s para configuração do sentido

DEFINIÇÃO1

1725/04/2017

• TRISA configura o sentido dos pinos de PORTA edas demais funções que podem ser multiplexadascom 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 umdispositivo externo ao chip.

SFR’s para configuração do sentidoDEFINIÇÃO1

1825/04/2017

Buffer 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 baixo

Ativo em nível alto

25/04/2017

4

DEFINIÇÃO1

1925/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 serselecionados ao mesmo tempo.

TRIS Sentido0 Saída1 Entrada

DEFINIÇÃO1

2025/04/2017

SFR’s para configuração do sentido

Tris = 0 Tris = 1

DEFINIÇÃO1

2125/04/2017

• As portas de comunicação possuem um ou maisSFR’s associados, para dados, endereço e controle.

• Isto significa que a informação não é transmitidadiretamente do data bus para a porta, mas, sim, pormeio 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çãoDEFINIÇÃO1

2225/04/2017

Principais portas de comunicação

Serial A/DPORT PWM PSP

SFR SFR SFR SFR

8-bit* 10-bit 10-bit

8-bit 8-bit8-bit* 8-bit

SFR

8-bit

8-bit

Pinos

8-bit PIC Data Bus

* ou menos

DEFINIÇÃO1

2325/04/2017

SFR’s para configuração do sentido

1-bit21MUX

1-bit12

DEMUX

Seleção Periférico 1

Periférico 2

SFR

SFR

Seleção Periférico 1

Periférico 2

SFR

SFR

PORTA PARALELA2

2425/04/2017

PORTA PARALELA

25/04/2017

5

PORTA PARALELA2

2525/04/2017

Comunicação digital paralela

• Mais simples.• Mais rápida.• 3, 6 ou 8 bits.• 5 portas.• Bidirecionais.

PORTA PARALELA2

2625/04/2017

Comunicaçã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 PARALELA2

2725/04/2017

5 portas paralelas: A, B, C, D, EPORTA PARALELA2

2825/04/2017

SFR’s para comunicação paralela

SFR Addr.TRISA 085hTRISB 086hTRISC 087hTRISD 088hTRISE 089h

Banco 1SFR Addr.PORTA 005hPORTB 006hPORTC 007hPORTD 008hPORTE 009h

Banco 0

PORTA PARALELA2

2925/04/2017

SFR Addr. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0PORTA 005h - - RA5 RA4 RA3 RA2 RA1 RA0PORTB 006h RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0PORTC 007h RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0PORTD 008h RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0PORTE 009h - - - - - RE2 RE1 RE0

SFR Addr. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0TRISA 085h - - I/O I/O I/O I/O I/O I/OTRISB 086h I/O I/O I/O I/O I/O I/O I/O I/OTRISC 087h I/O I/O I/O I/O I/O I/O I/O I/OTRISD 088h I/O I/O I/O I/O I/O I/O I/O I/OTRISE 089h IBF OBF IBOV PSPMODE - I/O I/O I/O

SFR’s para comunicação paralelaPORTA PARALELA2

3025/04/2017

SFR SFR SFR SFR

6-bit

6-bit 8-bit

SFR

3-bit

3-bit

Pinos

8-bit PIC Data Bus

SFR’s para comunicação paralela

PORTB

PORTA

PORTC

PORTE

PORTD

8-bit 8-bit

8-bit 8-bit 8-bit

25/04/2017

6

PORTA PARALELA2

3125/04/2017

Sentido• Em P’s, geralmente, há uma única porta

de comunicação paralela, e todos os bitstem o mesmo sentido.

• Neste caso, um único bit é usado nadeterminação do sentido do fluxo dainformação.

• Como, na PIC, os bits tem configuraçãoindividual de sentido, é preciso o uso deuma palavra de configuração.

• Em P’s, geralmente, não há buffer naporta paralela, sendo necessário o usode um chip separado para essa função.

• Em MCU’s, essa função é incluída.

PORTA PARALELA2

3225/04/2017

Multiplexação

• Os pinos usados para comunicação paralela sãomultiplexados 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 PARALELA2

3325/04/2017

Multiplexação

• Todas as outras funções multiplexadas nospinos das portas paralelas são associadas aperifé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 ospinos para as portas paralelas.

PORTA PARALELA2

3425/04/2017

Pinagem (DIP)

Bit PORTA PORTB PORTC PORTD PORTE0 2 33 15 19 81 3 34 16 20 92 4 35 17 21 103 5 36 18 22 -4 6 37 23 27 -5 7 38 24 28 -6 - 39 25 29 -7 - 40 26 30 -

PORTA PARALELA2

3525/04/2017

Tipo do buffer

Bit PORTA PORTB PORTC PORTD PORTE0 TTL TTL ST ST ST1 TTL TTL ST ST ST2 TTL TTL ST ST ST3 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 PARALELA2

3625/04/2017

Buffer TTL

http://138.37.35.209/staff info/davew/lab/74_chips/7407.gif

Este slidenão cai na prova.

25/04/2017

7

PORTA PARALELA2

3725/04/2017

Conexão ST• A conexão ST somente tem relevância quando

configurada como entrada, pois a fonte deinformação externa não é controlada pela MCU epode 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 impedeoscilações de alta frequência.

• Como os circuitos digitais atuais usam,principalmente, tecnologia CMOS, com MOSFET’s, oconsumo de energia em regime estacionário é muitobaixo, mas, em regime transitório, muito alto.

• Uma falta de controle em oscilações de altafrequência leva ao rápido superaquecimento do chip.

PORTA PARALELA2

3825/04/2017

Conexão ST• A entrada ST é especialmente indicada quando

recebe um sinal digital assíncrono cuja origem dainformação provém de um sensor.

• Se o sistema de sensoriamento for microcontroladoou microprocessado, não é necessário o uso daentrada 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 comoentrada, então a fonte de sinal seja proveniente deum circuito digital e não de um circuito analógico.

PORTA PARALELA2

3925/04/2017

Conexão ST

Input

glitch filter

PORTA PARALELA2

4025/04/2017

SFR’s para configuração do sentido

Tris bit

Pino

Output

Input

glitch filter

PORTA PARALELA2

4125/04/2017

SFR’s para comunicação paralela

• Os registradores são construídos com FF´s D.• Há 33 cópias deste circuito.

PORTA PARALELA2

4225/04/2017

PORTA – Multiplexação

• RA é bidirecional.• As outras funções são unidirecionais.• RA4 tem buffer ST por causa de T0CKI.

Outras funções

Bit PORTA0 TTL1 TTL2 TTL3 TTL4 ST5 TTL

glitch filter

25/04/2017

8

PORTA PARALELA2

4325/04/2017

PORTA – Pinagem

RA0RA1RA2RA3RA4RA5

PORTA PARALELA2

4425/04/2017

PORTA

• Para PORTA, ADCON1<3:0> deve receber a palavra 011xb.• Para entrada analógica, ADCON1<3:0> devem receber 0000b ou 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 corretamenteprogramados (16 combinações).

PORTA PARALELA2

4525/04/2017

PORTB – Multiplexação

• RB é bidirecional.• As outras funções são unidirecionais.

Outras funções

LVP

PORTA PARALELA2

4625/04/2017

PORTB – Tipo do buffer

Bit PORTB Outra função

0 TTL ST1 TTL TTL2 TTL TTL3 TTL TTL4 TTL TTL5 TTL TTL6 TTL ST7 TTL ST

PORTA PARALELA2

4725/04/2017

PORTB – PinagemRB7RB6RB5RB4RB3RB2RB1RB0

PORTA PARALELA2

4825/04/2017

PORTB 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 maneiraimprevisível.

• Quando estas entradas são conectadas a um push buttonou um toogle switch, elas podem ser mantidas abertasdependendo da posição da chave.

• Algumas fontes de sinal também podem apresentarimpedância de saída infinita.

• Nesses casos, convém conectar um resistor em paralelocom a fonte de sinal.

25/04/2017

9

PORTA PARALELA2

4925/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 PARALELA2

5025/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 PARALELA2

5125/04/2017

PORTB INPUT PULL-UP

http://pcbheaven.com/picpages/images/microswitch_1251550992.jpg

Exemplo de aplicação

PORTA PARALELA2PORTB INPUT PULL-UP

PORTB

PORTC

1

2

3

4

4

3

2

1Apostila Datapool PIC-2377

Saídasativas em 0

Entradas

5225/04/2017

Exemplo de aplicação

PORTA PARALELA2

5325/04/2017

PORTB 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 1imprevisivelmente, ou assumir comportamento instável.

• Quando habilitada, a entrada (modo input) que não recebesinal vai para nível alto.

• O resistor de pull-up é desligado automaticamente quando opino é configurado como saída.

PORTA PARALELA2

5425/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 grandescomprimentos 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 (RCE ou RDS).

PORTB INPUT PULL-UP

25/04/2017

10

PORTA PARALELA2

5525/04/2017

• Para configurar pull-up, é preciso programarOPTION_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-UPPORTA PARALELA2

5625/04/2017

• NOT_RBPU = 1: VG=5V. VGS=0V P-MOSFET desligado• NOT_RBPU = 0: VG=0V. VGS=-5V P-MOSFET ligado

SG

PORTB INPUT PULL-UP

PORTA PARALELA2

5725/04/2017

• O resistor de pull-up deve ser desligado quandose 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 serperceptíveis para a porta de entrada selecionada.

• As portas de entrada não selecionadas devemser configuradas para alta-impedância por meiodo desligamento do pull-up.

Saída tri-statePORTA PARALELA2

5825/04/2017

P ou MCUControlador do barramento

n-bit externaldata bus

device1

device2

device3

device4

TOSC

TOSC

TOSC

TOSC

TOSC

CS1

CS2

CS3

CS4

PORTB PULL-UP

Entradas

Entradas

Entradas

Entradas

Saídas

PORTA PARALELA2

5925/04/2017

PORTB – 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 PARALELA2

6025/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.

PORTB – Interrupção

25/04/2017

11

PORTA PARALELA2

6125/04/2017

PORTB – Interrupção

4-bitREG

4-bitCOMP

TCY

RB7 RB4

TCYRBIE

RBIF

PORTA PARALELA2

6225/04/2017

PORTB – 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 PARALELA2

6325/04/2017

PORTB – Interrupção

4-bitSUB

4-inOR

42-inXOR

4-inOR

4-bitCOMP

TCY

TCY

PORTA PARALELA2

6425/04/2017

PORTC – Multiplexação

• RC é bidirecional.• As outras funções são unidirecionais.

Outras funções

PORTA PARALELA2

6525/04/2017

PORTC – Pinagem

RC7RC6RC5RC4

RC0RC1RC2RC3

PORTA PARALELA2

6625/04/2017

PORTD – Multiplexação

• RD é bidirecional.• As outras funções são unidirecionais.

Outras funções

25/04/2017

12

PORTA PARALELA2

6725/04/2017

PORTD – Pinagem

RD7RD6RD5RD4

RD0RD1

RD3RD2

PORTA PARALELA2

6825/04/2017

PORTE – Multiplexação

• RE é bidirecional.• As outras funções são unidirecionais.

PORTA PARALELA2

6925/04/2017

RE0RE1RE2

PORTE – PinagemPORTA PARALELA2

7025/04/2017

PORTE

• Para PORTE, ADCON1<3:0> devemreceber a palavra 11xxb ou outras opções.

• Estes bits também controlam PORTA.

• É preciso programar ADCON1<3:0>,<PCFG3:PCFG0> (09Fh), visto maisadiante.

PORTA PARALELA2

7125/04/2017

As cinco portas paralelas

RE0RE1RE2

RD7RD6RD5RD4

RD0RD1

RD3RD2

RC7RC6RC5RC4

RC0RC1RC2RC3

RB7RB6RB5RB4RB3RB2RB1RB0

RA0RA1RA2RA3RA4RA5

33 pinos

PORTA PARALELA2

7225/04/2017

As cinco portas paralelas

PortaB

PortaC

PortaA

PortaD

PortaE

PORTA PORTB PORTC PORTDSFR’s

6-bit

PORTE

3-bit8-bit 8-bit 8-bit

6-bit 3-bit8-bit 8-bit 8-bit

Pinos

8-bit PIC Data Bus

25/04/2017

13

PORTA PARALELA2

7325/04/2017

Uso das portas paralelas no kit didático 2377ENTRADA ANALÓGICA3

7425/04/2017

ENTRADA ANALÓGICA

ENTRADA ANALÓGICA3

7525/04/2017

Comunicaçã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ÓGICA3

7625/04/2017

Pinagem

AN5AN6AN7

AN0AN1AN2AN3

AN4

8 input channels 10-bit Analog-to-Digital Module

ENTRADA ANALÓGICA3

7725/04/2017

AN PIN Nome0 2 RA0/AN01 3 RA1/AN12 4 RA2/AN2/VREF-3 5 RA3/AN3/VREF+4 7 RA5/SS/AN45 8 RE0/RD/AN56 9 RE1/WR/AN67 10 RE2/CS/AN7

Pinagem

• ADON = 0: Funções em verde.• ADON = 1: Funções em vermelho ou preto.

ENTRADA ANALÓGICA3

7825/04/2017

AN PIN Nome Função em preto Móduo4 7 RA5/SS/AN4 Slave select SSP5 8 RE0/RD/AN5 Read PSP6 9 RE1/WR/AN6 Write PSP7 10 RE2/CS/AN7 Chip select PSP

Pinagem

25/04/2017

14

ENTRADA ANALÓGICA3

7925/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

ENTRADA ANALÓGICA3

8025/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ÓGICA3

8125/04/2017

ADCON0<7:6> ADCS1:CHS0

AD Clock ADCS1 ADCS0

fOSC/2 TOSC2 fCY2 TCY/2 0 0fOSC/8 TOSC8 fCY/2 TCY2 0 1

fOSC/32 TOSC32 fCY/8 TCY8 1 0fRC

INT 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ÓGICA3

8225/04/2017

ADCON0<7:6> ADCS1:CHS0

AD Clock 20MHz 50nsfOSC/2 10MHz 100nsfOSC/8 2,5MHz 400ns

fOSC/32 625kHz 1,6s

A/D Conversion Clock Select Bits

AD Clock 5MHz 200nsfOSC/2 2,5MHz 400nsfOSC/8 625kHz 1,6s

fOSC/32 156kHz 6,4sAD Clock 1,25MHz 800ns

fOSC/2 625kHz 1,6sfOSC/8 156kHz 6,4s

fOSC/32 39kHz 25,6s

• O máximo fAD é de 625kHz.• Dependendo do valor do

clock da PIC, nem todasas possibilidades estãodisponíveis.

AD Clock MáxfOSCfOSC/2 1,25MHzfOSC/8 5MHz

fOSC/32 20MHz

ENTRADA ANALÓGICA3

8325/04/2017

ADCON0<7:6> ADCS1:CHS0A/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 fAD não se torne mais baixo ainda.

Modo RC fAD TADMínimo 167kHz 6sTípico 250kHz 4s

Máximo 500kHz 2s

ENTRADA ANALÓGICA3

8425/04/2017

ADCON0<7:6> ADCS1:CHS0A/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 10TADMínimo 6s 60sTípico 4s 40s

Máximo 2s 20s

AD Clock f TMáximo 625kHz 1,6s10TAD 6,25kHz 16s

25/04/2017

15

ENTRADA ANALÓGICA3

8525/04/2017

ADCON0<5:3> CHS2:CHS0

AN CHS2 CHS1 CHS00 0 0 01 0 0 12 0 1 03 0 1 14 1 0 05 1 0 16 1 1 07 1 1 1

Analog Channel Select Bits

reset default

ADCON0

ENTRADA ANALÓGICA3

8625/04/2017

ADCON0<5:3> CHS2:CHS0Analog Channel Select Bits

analog81MUX

Entradas

Saída

AN0AN1AN2AN3AN4AN5AN6AN7

CH

S 2C

HS 1

CH

S 0

ENTRADA ANALÓGICA3

8725/04/2017

ADCON0<5:3> CHS2:CHS0Analog Channel Select Bits

analog81MUX

10-bitA/D

O0

O9

2-byteREG

ADRESHADRESL

/CPSel

D0

D7

8-bit PIC Data Bus

ENTRADA ANALÓGICA3

8825/04/2017

ADCON0<0> ADONHabilitador 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ÓGICA3

8925/04/2017

ADCON0<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 deBSF 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ÓGICA3

9025/04/2017

ADCON0<2>

t

1

0

Controle feito pelo assemblerpara iniciar a conversão.

Sinalização feita pela PIC®

para o término da conversão.

GO /DONE

25/04/2017

16

ENTRADA ANALÓGICA3

9125/04/2017

ADCON1<7> ADFMA/D Result Format Select Bit

ENTRADA ANALÓGICA3

9225/04/2017

ADCON1<7> ADFM

• O alinhamento à direita é útil quando todos os 10 bitssão usados.

• Ao usar os 10 bits, duas palavras são usadas, o querequer o dobro de instruções e de tempo de execução.

• Para evitar esse problema, é possível usar, apenas, 8bits, quando não se necessitar de toda a resolução.

• O alinhamento à esquerda é útil quando se usa 8 bitssobre toda a faixa de valores analógicos.

• Os dois bits menos significativos são descartados;apenas uma palavra é usada.

ADCON1

ENTRADA ANALÓGICA3

9325/04/2017

ADCON1<3:0> PCFG3:PCFG0PCFG3:PCFG0

AN7

RE2

AN6

RE1

AN5

RE0

AN4

RA5

AN3

RA3

AN2

RA2

AN1

RA1

AN0

RA00000 A A A A A A A A0001 A A A A VREF+ A A A0010 D D D A A A A A0011 D D D A VREF+ A A A0100 D D D D A D A A0101 D D D D VREF+ D A A011x D D D D D D D D1000 A A A A VREF+ VREF- A A1001 D D A A A A A A1010 D D A A VREF+ A A A1011 D D A A VREF+ VREF- A A1100 D D D A VREF+ VREF- A A1101 D D D D VREF+ VREF- A A1110 D D D D D D D A1111 D D D D VREF+ VREF- D A

A: Entrada analógicaD: Porta paralela ou SSP ou PSP

A/D Port Configuration Control Bits

reset default

ENTRADA ANALÓGICA3

9425/04/2017

ADCON1<3:0> PCFG3:PCFG0

PCFG3:PCFG0

AN7RE2

AN6RE1

AN5RE0

AN4RA5

AN3RA3

AN2RA2

AN1RA1

AN0RA0 Explicação

011x D D D D D D D D Nenhum pino para entrada analógica1110 D D D D D D D A 1 pino para entrada analógica0100 D D D D A D A A 3 pinos para entrada analógica0010 D D D A A A A A 5 pinos para entrada analógica1001 D D A A A A A A 6 pinos para entrada analógica0000 A A A A A A A A 8 pinos para entrada analógica0101 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ógica1010 D D A A VREF+ A A A VREF+ e 5 pinos para entrada analógica0001 A A A A VREF+ A A A VREF+ e 7 pinos para entrada analógica1111 D D D D VREF+ VREF- D A VREF+, VREF- e 1 pinos para entrada analógica1101 D D D D VREF+ VREF- A A VREF+, VREF- e 2 pinos para entrada analógica1100 D D D A VREF+ VREF- A A VREF+, VREF- e 3 pinos para entrada analógica1011 D D A A VREF+ VREF- A A VREF+, VREF- e 4 pinos para entrada analógica1000 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ÓGICA3

9525/04/2017

ADCON1<3:0> PCFG3:PCFG0AN7RE2

AN6RE1

AN5RE0

AN4RA5

AN3RA3

AN2RA2

AN1RA1

AN0RA0

D D D D D D D DD D D D D D D AD D D D A D A AD D D A A A A AD D A A A A A AA A A A A A A AD D D D VREF+ D A AD D D A VREF+ A A AD D A A VREF+ A A AA A A A VREF+ A A AD D D D VREF+ VREF- D AD D D D VREF+ VREF- A AD D D A VREF+ VREF- A AD D A A VREF+ VREF- A AA A A A VREF+ VREF- A A

2 RA0/AN03 RA1/AN14 RA2/AN2/VREF-5 RA3/AN3/VREF+7 RA5/SS/AN48 RE0/RD/AN59 RE1/WR/AN610 RE2/CS/AN7

• Como AN4, AN5, AN6 e AN7 compartilhamo pino com outras duas funções, eles sãousados por menos opções de PCFG.

ENTRADA ANALÓGICA3

9625/04/2017

VREFAnalog reference voltage

VREF-VREF+

• Analog reference voltage.• Tensão de referência para o conversor AD.• VREF+ padrão: VDD.• VREF- padrão: VSS.

25/04/2017

17

ENTRADA ANALÓGICA3

9725/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 quenão acontece com o digital.

• Geralmente definem-se VREF+ e VREF-.

ENTRADA ANALÓGICA3

9825/04/2017

Seleção das entradas

VREF-VREF+

Entrada

10

9

8

7

5

4

3

2

ENTRADA ANALÓGICA3

9925/04/2017

VREF

*Código segundo tabela anterior.

PCFG

3PC

FG2

PCFG

1PC

FG0

41*DEC

VREF

Entrada

Pino 4/5analog21

DEMUX

ENTRADA ANALÓGICA3

10025/04/2017

VREF

analog21

DEMUX

PCFG

3PC

FG2

PCFG

1PC

FG0

41DEC A

Entrada

VREF-

Pino 4

AN2

APC

FG3

PCFG

2PC

FG1

PCFG

0

41DEC B

Entrada

VREF+

Pino 5

B

AN3

0

1

0

1

analog21

DEMUX

ENTRADA ANALÓGICA3

10125/04/2017

VREFPCFG3:PCFG0

AN3RA3

AN2RA2

011x D D1110 D D0100 A D0010 A A1001 A A0000 A A0101 VREF+ D0011 VREF+ A1010 VREF+ A0001 VREF+ A1111 VREF+ VREF-

1101 VREF+ VREF-

1100 VREF+ VREF-

1011 VREF+ VREF-

1000 VREF+ VREF-

PCFG3:PCFG0 A B011x 0 01110 0 00100 0 00010 0 01001 0 00000 0 00101 1 00011 1 01010 1 00001 1 01111 1 11101 1 11100 1 11011 1 11000 1 1

• Agora é só efetuar a síntese da função e construir ocircuito lógico que direciona o sinal ou para a entradade referência ou para a entrada do conversor.

ENTRADA ANALÓGICA3

10225/04/2017

VREF AN7AN6AN5AN4AN3AN2AN1AN0

Usando VREF+

Usando VREF-

Não usando VREF+

Não usando VREF-

Entrada

10

9875432

Pino 5

Pino 4

25/04/2017

18

ENTRADA ANALÓGICA3

10325/04/2017

VREF

PCFG3:PCFG0

AN3

RA30001 VREF+

0011 VREF+

0101 VREF+

1000 VREF+

1010 VREF+

1011 VREF+

1100 VREF+

1101 VREF+

1111 VREF+

PCFG3:PCFG0

AN2

RA21000 VREF-

1011 VREF-

1100 VREF-

1101 VREF-

1111 VREF-

AN CHS2 CHS1 CHS02 0 1 03 0 1 1

• Se VREF+ e/ou VREF- sãoselecionados, <PCFG3:PCFG0>,suas respectivas entradas nãodevem ser selecionadas,<CHS2:CHS0>.

• Selecionando VREF+ e AN3, seobtém 3FFh.

• Selecionando VREF- e AN2, seobtém 000h.

Pino 7 Pino 8

ENTRADA ANALÓGICA3

10425/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ÓGICA3

10525/04/2017

Amostra e retenção

http://www.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çõessucessivas.

http://www.eecs.tufts.edu/~dsculley/tutorial/opamps/sampleAndHold.JPG

t

t

t

ENTRADA ANALÓGICA3

10625/04/2017

Aproximaçõ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

PWM4

PWM

10725/04/2017

PWM4

• Capture• Compare• PWM

CCP

10825/04/2017

Dois módulos:• CCP1• CCP2• CCPx• X {1;2}

25/04/2017

19

PWM4Modos 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.

10925/04/2017

Modo Base de tempoCapture TMR1Compare TMR1

PWM TMR2

PWM4

11025/04/2017

Modos de operação

<CCPxM3:CCPxM2> Modo00 Desligado01 Capture10 Compare11 PWM

reset default

CCPxCON

PWM4Pinagem na PIC

CCP2CCP1

11125/04/2017

Multiplexação

Saídas PWM

• Os pinos do módulo devemser configurados como saída.

• TRISC<1> = 0 PWM2• TRISC<2> = 0 PWM1

PWM4SFR’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.

11225/04/2017

PWM4SFR’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 012h11325/04/2017

PWM4CCP1CON 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>.

11425/04/2017

25/04/2017

20

PWM4

11525/04/2017

Interação entre os módulos CCP1 e CCP2

CCP1 CCP2 InteraçãoPWM PWM Mesma base de tempoPWM Capture NenhumaPWM Compare Nenhuma

Capture PWM NenhumaCompare PWM Nenhuma

PWM4DC<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>.

11625/04/2017

PWM4

11725/04/2017

015

CCPRx<15:0>

09

DC<9:0>

CCPRLx<7:0>CCPRHx<7:0>0707

07

CCPxCON<7:0>

DC<9:0>

• Não se trata deuma cópia.

• Os bits foram,apenas, dispostosde forma agrupada.

PWM4

11825/04/2017

DC<9:0>

• DC<9:2> = CCPRxL<7:0>.• DC<1:0> = CCPxCON<5:4>.• DC<1> = CCPxX.• DC<0> = CCPxY.

PWM4

11925/04/2017

DC<9:2>• Para simplificar a programação, principalmente

quando se trabalha em conjunto com o conversorA/D, é possível lidar, apenas, com 8 bits.

• Esta palavra de 8 bits é chamada de DC<9:2> ouCCPRxL<7:0>.

• Em muitas situações, é possível lidar comDC<9:2> sem que ocorra nenhum erro decálculo, como será mostrado mais adiante.

• Em outras situações, há erro de cálculo, masesse erro é desprezível.

• Poucas são as situações práticas onde é,realmente, necessário lidar com DC<9:0>.

PWM4

12025/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% real10 bits

aproximado para 8 bits

Mínimo0%

000h0000d

0000000000b

00h000d

00000000b

Máximo100%

3FFh1023d

1111111111b

FFh255d

11111111b

25/04/2017

21

PWM4

12125/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ógicosreal

10 bitsaproximado para 8 bits

Mínimo000h0000d

0000000000b

000h000d

000000000b

Máximo3FFh1023d

1111111111b

3FCh1020d

1111111100b

PWM4

12225/04/2017

DC – Faixa de valores admitidos

000h

3FFh

00h

FFh

01h

02h

FEh

001h002h003h004h005h

3FEh3FDh

3FCh3FBh

3FAh

10-bit DC

006h007h008h

DC<9:0>

DC<9:2>DC<1:0>=00b

1023d1022d

1021d1020

1019d1018d

255d

254d

PWM4Controle com 10 bits

• DC<9:0> está apto a receber uma entrada analógicaADRES<9:0>.

• Fazendo DC<9:0> = f(ADRES<9:0>) é possívelimplementar um sistema de controle em malhafechada com resolução de 10 bits, onde “f” é afunçã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).

12325/04/2017

PWM4Controle de malha fechada

12425/04/2017

Atuador

Sensor

PWMAD F(s)

PWM4Controle com 10 bits

12525/04/2017

PWM4Controle 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 fechadacom resolução de 8 bits, onde “f” é a função detransferê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 tempode cálculo à metade, bem como a quantidade de linhas deinstrução pertinentes a essa função.

12625/04/2017

25/04/2017

22

PWM4Controle com 8 bits

12725/04/2017

PWM4

12825/04/2017

Geração do sinal PWM

DC<9:0>

10-bit PWMt

t

Situação real – 10 bits

DC<9:2>

8-bit PWMt

t

Aproximação – 8 bits

PWM4Registrador de retenção

12925/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 TOSC em que uma nova rampa se inicia.

PWM4Registrador de retenção

13025/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 comobyte mais significativo (high) e está acessível ao usuário.

• Os dois bits menos significativos são obtidos a partir dedois FF’s adicionais específicos para esta finalidade.

PWM4

13125/04/2017

Registrador de retenção10-bit

Registrador de retenção

DC<9:0>

10-bit PWM

Cópia para o registrador de retenção

Slave

Master

t

t

PWM4

13225/04/2017

Registrador de retenção

t

t

DC<9:0>

tPWM

Holding Register<9:0>

• DC<9:0> pode receber valores imprevisíveis.

25/04/2017

23

PWM4

13325/04/2017

Registrador de retenção

10-bitREG

8-bitCCPRxL

CCPxX

CCPxY

TCY

DCCCPR<8>

CCPR<9>

CCPR<7:0>

PWM4

13425/04/2017

• O passo de contagem do TMR2<9:0> é quatrovezes rápido do que o do TMR2<7:0>, mas acontagem 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

PWM4

FFh

00h000h

004h

008h

01h

02h

001h002h003h

TCY1:1

TOSC1:1

FEh

13525/04/2017

TMR2<9:0>

TMR2<7:0>

TMR2<9:0> – Geração da rampa de 10 bits3FFh

3FEh3FDh

3FCh3FBh

3FAh

1023d1022d

1021d1020

1019d1028d

Prescaler ratio 1:1

PWM4

13625/04/2017

TMR2<9:0> – Passo fragmentadoExemplo

00h000h

Passo fragmentadode TMR2<7:0>004h

008h

01h

02h

TMR2<9:0>TMR2<7:0>

DC<9:0>

03h

00Ch

PWM4

8-bit TMR2<7:0>

10-bit TMR2<9:0>

00h000h

DC<9:0>

Passo fragmentadode TMR2<7:0>004h

008h

01h

02h

tPWMTCY1:1

TCY1:1

TCY1:1

3/4TCY1:1

Largura de Pulso

13725/04/2017

TMR2<9:0> – Determinação da largura de pulsoExemplo

03h

00Ch

PWM4

00h000h

DC<9:0>=00Fh=0000001111b

004h

008h

01h

02h

t13825/04/2017

TMR2<9:0> – Determinação da largura de pulso

00ChDC<9:0>=00Ch=0000001100b

CCPRxL=00000011b=03h

03hCCPRxL=00000011b=03h

t10-bit PWM

8-bit PWM

Exemplo

25/04/2017

24

PWM4

13925/04/2017

TMR2<9:0> – Determinação da largura de pulsoExemplo

00h000h

004h

008h

01h

02h

t

00Ch03h

t10-bit PWM

8-bit PWM

• No PWM de 10 bits, há maisopções para a escolha dociclo ativo ou largura de pulso.

PWM4

14025/04/2017

• Os dois bits mais significativos do contador prescalerformam 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ãofornecidos, neste caso, por dois FF’s extras.

TMR2<9:0> – Prescaler

PWM4

14125/04/2017

3FFh

000h

1:1 TOSC1:4 TCY1:16 4TCY

<T2CKPS1:T2OUTPS0> Rate

00 1:101 1:41x 1:16

1:1 TCY1:4 4TCY1:16 16TCY

TMR2<9:0> – Prescaler

TMR2<9:0>

PWM4TMR2<9:0> – Prescaler 1:16

14225/04/2017

TMR2<9:2>

<1:0>

<9> <8> <7> <6> <5> <4> <3> <2>

Contador Prescaler – 4-bit

TMR2<1:0>

<1> <0>

LSbMSbTCY

PWM4TMR2<9:0> – Prescaler 1:4

14325/04/2017

TMR2<9:2>

TCY

<1:0>

<9> <8> <7> <6> <5> <4> <3> <2>

<1> <0>

Contador Prescaler – 2-bit

TMR2<1:0>

LSbMSb

PWM4TMR2<9:0> – Prescaler 1:1

14425/04/2017

TMR2<9:2>

<9> <8> <7> <6> <5> <4> <3> <2>

FF’s extras <1:0>

<1> <0>

TOSC

TCY

LSbMSb

TMR2<1:0>

25/04/2017

25

PWM4Modo PWM – Módulo 1

14525/04/2017

• O circuito gerador do sinal PWM é composto deduas partes:1. Controle do período ou gerador da rampa.2. Controle do dutty-cycle.

• A primeira parte integra o TMR2 e é usada pelosdois módulos PWM, ou seja, as duas saídas PWMusam a mesma rampa.

• A segunda parte integra os módulos CCP e podepossuir configurações diferentes para cada módulo.

• A primeira parte emprega 8 bits.• A segunda parte emprega 10 bits.

PWM4

14625/04/2017

TMR2<9:2> – Comparador com PR2<7:0>TMR2<9:2>

8-bitCOMPARATOR

PR2<7:0>

PWM4

14725/04/2017

TMR2<9:0> – Comparador com DC<9:0>

DC<9:2> DC<1:0>CCPRxL<7:0> CCPxCON<5:4>

CCPRxH<7:0> 2 FF´s

PWM4

14825/04/2017

TMR2<9:0> – Comparador com DC<9:0>

10-bitCOMPARATOR

FF´sCCPRxH<7:0>

TMR2<9:2> FF´s

PWM4

14925/04/2017

As duas comparações

10-bitCOMPARATOR

FF´sCCPRxH<7:0>

8-bitCOMPARATOR

PR2<7:0>

TMR2

reset

set

FF´s

PWM4

15025/04/2017

O controle da saída

Tris bit

Pino 16 ou 17

Output

Input

FFRS

R

S

CAPTURE

10-bitCOMPARATOR

FF´sCCPRxH<7:0>

8-bitCOMPARATOR

PR2<7:0>

TMR2

reset

set

FF´s

• Quando o módulo CCP está desligado,a saída do FF RS assume valor zero.

25/04/2017

26

PWM4

TRISC<2>

Pino 17

Output

Input

FFRS 1

R

S

CAPTURE 1

10-bitCOMPARATOR 1

FF´sCCPR1H<7:0>

8-bitCOMPARATOR

PR2<7:0>

TMR2

FF´s

TRISC<1>

Pino 16

Output

Input

FFRS 2

R

S

CAPTURE 2

CCP1

CCP2

10-bitCOMPARATOR 2

FF´sCCPR2H<7:0>

15125/04/2017

Os dois módulosPWM4

25/04/2017 152

O controle da saída

Tris bit

FFRS

R

S

PWM

DC<9:0>

t

t

t

tPWM

R

S

10-bitCOMPARATOR

FF´sCCPRxH<7:0>

8-bitCOMPARATOR

PR2<7:0>

TMR2

reset

set

FF´s

PWM4Modo PWM – Módulo 1

15325/04/2017

(*)

10-bit

10-bit

10-bit

8-bit

8-bit

10-bit

0: Saída - Ligado1: Entrada - Desligado

Buffer 3S

PWM4Modo PWM – Módulo 1

Controle do período

Controle do dutty-cycle

15425/04/2017

(*)

10-bit

10-bit

10-bit

10-bit

8 bits

8 bits

PWM4Controle de 8 bits do período

PR2<7:0>FFh

00h

15525/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

TMR2 Reset

t

t

PWM4

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

Reset

25/04/2017

27

PWM4Controle de 10 bits do dutty-cycle

15725/04/2017

• A linha inclinada representa TMR2<9:0>.• A linha horizontal representa DC<9:0>.

DC<9:0>

PWMt

t

PWM4Controle de 10 bits do dutty-cycle

15825/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> ePR2<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>

PWMt

t

PWM4

FF R

S SE

T

DC<9:0>

FF RS Q

PWM

PR2<7:0>

FFh

FF R

S R

ESET

TPWM

00h

Controle por 8 bits

Controle por 10 bits

15925/04/2017

t

t

Controle de 10 bits do dutty-cyclePWM4

16025/04/2017

Fora do dutty-cycleDC<9:0>TMR2<9:0>

PWM = 0

Dentro do dutty-cycleDC<9:0>maior que TMR2<9:0>

PWM = 1

DC<9:0>

(*)

t

t

<9:2> <1:0>

Controle de 10 bits do dutty-cycle

PWM4

• Período: Base de tempo16125/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

PWM4

If TMR2<7:0> = PR2<7:0> + 1

Then TMR2<9:0> = 0hEnd

16225/04/2017• Os dois bits extras também são reiniciados.

Controle de 10 bits do dutty-cycle

25/04/2017

28

PWM4

If TMR2<9:0> < DC<9:0>

Then PWM = 1bElse PWM = 0b

End

16325/04/2017

Controle de 10 bits do dutty-cyclePWM4

16425/04/2017

Os dois módulos operando simultaneamente

DC1<9:0>

PWM1

t

t

PWM2t

DC2<9:0> CCP1

CCP2

PWM4

16525/04/2017

Resoluçã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 filtropassa-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.

PWM4

• 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.

16625/04/2017

Resolução PWM

PWM4Resolução PWM – Configuração do PR2

16725/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 quantidadede bits usados em PR2 mais 2.

PWM4

• 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

16825/04/2017

Resolução PWM – Configuração do PR2Hexadecimal

• A resolução PWM é dada pela quantidadede bits usados em PR2 mais 2.

25/04/2017

29

PWM4Resolução PWM – DC<9:0> máximo

16925/04/2017

• O DC pode assumir diversosvalores em um mesmo programa.

• Dentre esses valores, o maiordeles 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

PWM4Resoluçã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

17025/04/2017

Hexadecimal

PWM4

17125/04/2017

Resolução do conversor A/D e do PWMUso da faixa total

• Para usar 10 bits, a faixa de valores analógicos devesuperar a metade mais baixa da faixa total admissível.

• Para usar 9 bits, a faixa de valores analógicos deveestar na metade mais baixa da faixa total admissível.

• Para usar 8 bits, a faixa de valores analógicos deveestar no quarto mais baixo da faixa total admissível.

• Para usar 7 bits, a faixa de valores analógicos deveestar no oitavo mais baixo da faixa total admissível.

• E assim por diante.

PWM4

17225/04/2017

Efeito da frequência

t

DC<9:0>

tPWM

• 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íodo

PWM4

17325/04/2017

Efeito da frequência

t

tPWM

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íodo

PWM4Conversão de 8 bits para 10 bits

17425/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.

25/04/2017

30

PWM4Obtenção de dutty-cycle de 100%

• Se DC<9:0> for superior a PR2<7:0>4, então asituaçã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, queimpediria a obtenção dos 100%.

17525/04/2017

PWM4

17625/04/2017

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> =FFh por 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 bitsno momento em que TMR2<7:0> atinge FFh, porémTMR2<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

PWM4

17725/04/2017

Obtençã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> =3FFh por 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 bitsno momento em que TMR2<9:0> atinge 3FFh, porémTMR2<9:0> conta até 3FBh, o match não ocorre, o reset nãoé efetuado, e o sinal PWM permanece em 1 por todo operíodo.

10 bits

PWM4

17825/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%

PWM4

17925/04/2017

Dutty-cycle de 100%

DC<9:0>

PWM

PR2

FFh

FF R

S SE

T

00h t

tFF R

S SE

T

PWM4

18025/04/2017

• Quando a rampa é reiniciada, o FF RS recebe ocomando set.

• Quando TMR2<9:0> encontra DC<9:0>, o FF RS recebeo comando reset no mesmo passo de contagem.

• Quando DC<9:0> = 000h, os dois fenômenos ocorremno mesmo passo, o que implica em dar, ao FF RS, oscomandos 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, istopermite a obtenção de um dutty-cycle de 0%.

Dutty-cycle de 0%

25/04/2017

31

PWM4

18125/04/2017

Dutty-cycle de 0%

t

DC<9:0>

t

DC<9:0>

Dutty-cycle > 0%

Dutty-cycle 0 0%

PWM4

18225/04/2017

Dutty-cycle de 0%

Sugestão

PWM4

18325/04/2017

Má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

PWM4

• 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.

18425/04/2017

Cálculo do período PWM

PWM4

18525/04/2017

Controle 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.

PWM4

18625/04/2017

Controle do período

25/04/2017

32

PWM4

18725/04/2017

Controle do períodoPWM4

Cálculo do dutty-cycle

18825/04/2017

PWM4Cálculo do dutty-cycle

18925/04/2017

PWM4Cálculo do dutty-cycle

19025/04/2017

PWM4

19125/04/2017

Quando DC > máxTMR2+1

• DC% não pode superar 100%.• Se DC > DC100%, então DC% = 100%.

PWM4

19225/04/2017

Quando DC > máxTMR2+1

000h

004h

001h002h003h

DC<9:0>

00h

04h

01h02h03h

DC<9:2>

Vide exemplos

25/04/2017

33

PWM4

19325/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%.

PWM4

19425/04/2017

Os casos de 0% e de 100%

t

t

dutty-cycle = 50%

t

t

dutty-cycle = 0%

t

t

dutty-cycle = 100%

PWM4

19525/04/2017

Os 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

PWM4

19625/04/2017

DC<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 paragrande parte das aplicações práticas paracontrole de tensão média em malha aberta.

PWM4

19725/04/2017

DC<9:0> – Divisões – Escolha do PR2

• O valor de PR2 deve ser o maior possível, a fim deque se obtenha a menor frequência.

• PR2 somente deve ser pequeno em situaçõesespecíficas onde a frequência precisa ser alta ouprecisa ter um valor especificado por fatoresexternos.

• Quanto menor for a frequência, menor é o consumode energia elétrica em tecnologia CMOS.

PWM4

19825/04/2017

DC<9:0> – Divisões – Escolha do PR2

• O uso de um PR2 alto garante uma melhor resoluçãoanalógica do valor médio PWM.

• A resolução analógica não é a resolução em bits, ela, talcomo no conversor A/D, expressa o quanto da faixaanaló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 erropercentual, já que o erro absoluto é o mesmo da faixa total.

25/04/2017

34

PWM4

19925/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 todosos 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 maissimples sem a geração de erros de aproximação.

• Para conseguir isso, é preciso escolher o máximo valorde 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> é observadaquando todos os oito bits são usados.

PWM4

20025/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.

PWM4

20125/04/2017

Passos de 8 bits e passos de 10 bits

• Quando o cálculo de PR2 fornece um númerofracionário, precisa ser arredondado para baixo.

Vide exemplos

PWM4

20225/04/2017

Arredondamento para 10 bits

000h

004h

001h002h003h

DC100%<9:0>

00h

04h

01h02h03h

DC100%<9:2>

Arredondamento para baixo - correto Arredondamento para cima - errado

match