• Nenhum resultado encontrado

Parte 4 PORTAS DE COMUNICAÇÃO

N/A
N/A
Protected

Academic year: 2021

Share "Parte 4 PORTAS DE COMUNICAÇÃO"

Copied!
34
0
0

Texto

(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

DEFINIÇÃO

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.

(2)

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

Bl

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

Portas

• 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/2017

Pinos (DIP 40)

Os 33 pinos de I/O

DEFINIÇÃO

1

12 25/04/2017

Pinos (DIP 40)

(3)

DEFINIÇÃO

1

13 25/04/2017

Pinos (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/2017

Pinos (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 1

SFR’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/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

(4)

19 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 PICData Bus

* ou menos

DEFINIÇÃO

1

23 25/04/2017

SFR’s para configuração do sentido

1-bit

21

MUX

1-bit

12

DEMUX

Seleção Periférico 1 Periférico 2 SFR SFR Seleção Periférico 1 Periférico 2 SFR SFR

PORTA PARALELA

2

24 25/04/2017

PORTA PARALELA

(5)

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

2

27 25/04/2017

5 portas paralelas: A, B, C, D, E

PORTA PARALELA

2

28 25/04/2017

SFR’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/2017

SFR 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 Pinos

8-bit PICData 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

(6)

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

Tipo 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/2017

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

(7)

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

Conexão ST

Input glitch filter

PORTA PARALELA

2

40 25/04/2017

SFR’s para configuração do sentido

Tris bit Pino Output Input glitch filter

PORTA PARALELA

2

41 25/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 PARALELA

2

42 25/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 PORTA 0 TTL 1 TTL 2 TTL 3 TTL 4 ST 5 TTL glitch filter

(8)

43 25/04/2017

PORTA – Pinagem

RA0 RA1 RA2 RA3 RA4 RA5 44 25/04/2017

PORTA

• 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/2017

PORTB – Multiplexação

• RB é bidirecional.

• As outras funções são unidirecionais. Outras funções LVP

PORTA PARALELA

2

46 25/04/2017

PORTB – 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/2017

PORTB – Pinagem

RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

PORTA PARALELA

2

48 25/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 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.

(9)

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

(10)

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 CS4

PORTB PULL-UP

Entradas Entradas Entradas Entradas Saídas

PORTA PARALELA

2

59 25/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 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.

(11)

PORTA PARALELA

2

61 25/04/2017

PORTB – Interrupção

4-bit REG 4-bit COMP TCY RB7 RB4 TCY RBIE RBIF

PORTA PARALELA

2

62 25/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 PARALELA

2

63 25/04/2017

PORTB – Interrupção

4-bit SUB 4-in OR 4 2-in XOR 4-in OR 4-bit COMP TCY TCY

PORTA PARALELA

2

64 25/04/2017

PORTC – Multiplexação

• RC é bidirecional.

• As outras funções são unidirecionais. Outras funções

PORTA PARALELA

2

65 25/04/2017

PORTC – Pinagem

RC7 RC6 RC5 RC4 RC0 RC1 RC2 RC3

PORTA PARALELA

2

66 25/04/2017

PORTD – Multiplexação

• RD é bidirecional.

• As outras funções são unidirecionais. Outras funções

(12)

67 25/04/2017

PORTD – Pinagem

RD7 RD6 RD5 RD4 RD0 RD1 RD3 RD2 68 25/04/2017

PORTE – Multiplexação

• RE é bidirecional.

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

PORTA PARALELA

2

69 25/04/2017 RE0 RE1 RE2

PORTE – Pinagem

PORTA PARALELA

2

70 25/04/2017

PORTE

• 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/2017

As 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/2017

As 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

(13)

PORTA PARALELA

2

73 25/04/2017

Uso das portas paralelas no kit didático 2377

ENTRADA ANALÓGICA

3

74 25/04/2017

ENTRADA ANALÓGICA

ENTRADA ANALÓGICA

3

75 25/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ÓGICA

3

76 25/04/2017

Pinagem

AN5 AN6 AN7 AN0 AN1 AN2 AN3 AN4

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

ENTRADA ANALÓGICA

3

77 25/04/2017

AN 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

(14)

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

ADCON0<7:6> ADCS1:CHS0

AD Clock ADCS1 ADCS0

fOSC/2 TOSC2 fCY2 TCY/2

0

0

fOSC/8 TOSC8 fCY/2 TCY2

0

1

fOSC/32 TOSC32 fCY/8 TCY8

1

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

ADCON0<7:6> ADCS1:CHS0

AD Clock 20MHz 50ns fOSC/2 10MHz 100ns fOSC/8 2,5MHz 400ns fOSC/32 625kHz 1,6s

A/D Conversion Clock Select Bits

AD Clock 5MHz 200ns fOSC/2 2,5MHz 400ns fOSC/8 625kHz 1,6s fOSC/32 156kHz 6,4s AD Clock 1,25MHz 800ns fOSC/2 625kHz 1,6s fOSC/8 156kHz 6,4s fOSC/32 39kHz 25,6s • 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/2017

ADCON0<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 6s Típico 250kHz 4s Máximo 500kHz 2s

ENTRADA ANALÓGICA

3

84 25/04/2017

ADCON0<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 10TAD Mínimo 6s 60s Típico 4s 40s Máximo 2s 20s AD Clock f T Máximo 625kHz 1,6s 10TAD 6,25kHz 16s

(15)

ENTRADA ANALÓGICA

3

85 25/04/2017

ADCON0<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 1

Analog Channel Select Bits

reset default ADCON0

ENTRADA ANALÓGICA

3

86 25/04/2017

ADCON0<5:3> CHS2:CHS0

Analog Channel Select Bits

analog

81

MUX

Entradas Saída AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7

C

H

S

2

C

H

S

1

C

H

S

0

ENTRADA ANALÓGICA

3

87 25/04/2017

ADCON0<5:3> CHS2:CHS0

Analog Channel Select Bits

analog

81

MUX

10-bit

A/D

O

0

O

9

2-byte

REG

ADRESH

ADRESL

/CP Sel

D

0

D

7

8-bit PICData Bus

ENTRADA ANALÓGICA

3

88 25/04/2017

ADCON0<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/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 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/2017

ADCON0<2>

t 1 0 Controle feito pelo assembler

para iniciar a conversão.

Sinalização feita pela PIC®

para o término da conversão.

(16)

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

ADCON1<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 Bits

reset default

ENTRADA ANALÓGICA

3

94 25/04/2017

ADCON1<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ógica

0011 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/2017

ADCON1<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 A

2 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

10

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

(17)

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

VREF

*Código segundo tabela anterior.

P C F G3 P C F G2 P C F G1 P C F G0

41*

DEC

VREF Entrada Pino 4/5

analog

21

DEMUX

ENTRADA ANALÓGICA

3

100 25/04/2017

VREF

analog

21

DEMUX

P C F G3 P C F G2 P C F G1 P C F G0

41

DEC A

Entrada V REF-Pino 4 AN2

A

P C F G3 P C F G2 P C F G1 P C F G0

41

DEC B

Entrada VREF+ Pino 5

B

AN3 0 1 0 1

analog

21

DEMUX

ENTRADA ANALÓGICA

3

101 25/04/2017

VREF

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 :PCFG0

A

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

VREF

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

(18)

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

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

PWM

4

PWM

107 25/04/2017

PWM

4

• Capture • Compare • PWM

CCP

108 25/04/2017 Dois módulos: • CCP1 • CCP2 • CCPx • X  {1;2}

(19)

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

Modos de operação

<CCPxM3:CCPxM2> Modo

00

Desligado

01

Capture

10

Compare

11

PWM reset default CCPxCON

PWM

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

(20)

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

DC<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/2017

DC<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

(21)

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 1111111100b

PWM

4

122 25/04/2017

DC – 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 254d

PWM

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

(22)

Controle com 8 bits

127 25/04/2017 25/04/2017 128

Geração do sinal PWM

DC<9:0> 10-bit PWM t t

Situaçã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-bit

Registrador de retenção

DC<9:0> 10-bit PWM Cópia para o registrador de retenção Slave Master t t

PWM

4

132 25/04/2017

Registrador de retenção

t t DC<9:0> t PWM Holding Register<9:0>

(23)

PWM

4

133 25/04/2017

Registrador de retenção

10-bit

REG

8-bit CCPRxL CCPxX CCPxY TCY

DC

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

TMR2<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/2017

TMR2<9:0> – Passo fragmentado

Exemplo 00h 000h Passo fragmentado de TMR2<7:0> 004h 008h 01h 02h

TMR2<9:0>

TMR2<7:0>

DC<9:0>

03h 00Ch

PWM

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

TMR2<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/2017

TMR2<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

(24)

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 TCY

1: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-bit

TMR2<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>

(25)

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

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

TMR2<9:2>

8-bit

COMPARATOR

PR2<7:0>

PWM

4

147 25/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

PWM

4

148 25/04/2017

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

10-bit

COMPARATOR

FF´s CCPRxH<7:0> TMR2<9:2> FF´s

PWM

4

149 25/04/2017

As duas comparações

10-bit COMPARATOR FF´s CCPRxH<7:0> 8-bit COMPARATOR PR2<7:0> TMR2 reset set FF´s

PWM

4

150 25/04/2017

O controle da saída

Tris bit Pino 16 ou 17 Output Input

FF

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.

(26)

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 152

O 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´s

PWM

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 3S

PWM

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 bits

PWM

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

(27)

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 00h

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

(28)

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

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

Hexadecimal

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

(29)

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 Hexadecimal

PWM

4

171 25/04/2017

Resoluçã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/2017

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

PWM

4

173 25/04/2017

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

PWM

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.

(30)

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/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> = 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/2017

Dutty-cycle de 100%

DC<9:0> PWM PR2 FFh F F R S SET 00h t t F F R S SET

PWM

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

(31)

PWM

4

181 25/04/2017

Dutty-cycle de 0%

t DC<9:0> t DC<9:0> Dutty-cycle > 0% Dutty-cycle 0 0%

PWM

4

182 25/04/2017

Dutty-cycle de 0%

Sugestão

PWM

4

183 25/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

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

PWM

4

186 25/04/2017

(32)

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

PWM

4

Cálculo do dutty-cycle

190 25/04/2017

PWM

4

191 25/04/2017

Quando DC > máxTMR2+1

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

PWM

4

192 25/04/2017

Quando DC > máxTMR2+1

000h 004h 001h 002h003h DC<9:0> 00h 04h 01h 02h03h DC<9:2> Vide exemplos

(33)

PWM

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

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

PWM

4

196 25/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 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

(34)

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

Referências

Documentos relacionados

 Mapeamento entrada-saída: as redes podem ser treinadas para fornecer uma função que reproduza para um dado conjunto de dados de entrada o conjunto esperado de dados de

Para tratar a diversidade, a complexidade, e as diferentes formas de operações de cada periférico, as interfaces empregam no seu projeto um outro componente, o

Encontre a probabilidade da chave 1 estar aberta, dado que um sinal de entrada aparece na saída

Esta publicação pretende ser um ponto de partida para suas próprias ideias e dispositivos, como uma ferramenta que atua em diferentes contextos e lugares inserindo,

 Se a comemoração do aniversário for realizada fora do ambiente escolar e os pais desejarem convidar todos os colegas de sala, sem exceção, poderão enviar o convite preenchido e

É o processo no qual uma entrada conhecida é aplicada à um dado instrumento e sua resposta à esta entrada é medida a fim de se estabelecer as relações de entrada e saída para

Os dados serão adicionados no fim do arquivo (“append“) se ele já existir, ou um novo arquivo será criado, no caso de arquivo não existente anteriormente. • “rb“: Abre

Para cada um dos espaços a serem monitorados dentro do ambiente (dispositivos), será necessário criar uma ação correspondente.. Abrir