• Nenhum resultado encontrado

Parte 6 EXEMPLOS IDE 1. IDE 2. PIC 3. RECURSOS 4. PORTAS DE COMUNICAÇÃO 1 5. PROGRAMAÇÃO PWM 6. PORTAS DE COMUNICAÇÃO 2

N/A
N/A
Protected

Academic year: 2021

Share "Parte 6 EXEMPLOS IDE 1. IDE 2. PIC 3. RECURSOS 4. PORTAS DE COMUNICAÇÃO 1 5. PROGRAMAÇÃO PWM 6. PORTAS DE COMUNICAÇÃO 2"

Copied!
36
0
0

Texto

(1)

Parte 6

EXEMPLOS

1 25/04/2017 25/04/2017 2

1. IDE

2. PIC

3. RECURSOS

4. PORTAS DE COMUNICAÇÃO 1

5. PROGRAMAÇÃO PWM

6. PORTAS DE COMUNICAÇÃO 2

IDE

1

IDE

3 25/04/2017

IDE

1

4 25/04/2017

Exemplo 1

• C=0 • file = 43h • file = 0100_0011b • Aplicando RLF: • file = 1000_0110b • file = 86h • C=0

Multiplicação por dois sem estouro

• O programa deve interpretar C=0 no início como um sinalizador de operando inteiro e menor do que 100h. • O programa interpreta C=0 no final como um sinalizador de resultado inteiro e menor do que 100h.

IDE

1

5 25/04/2017

Exemplo 2

• C=0 • file = 92h • file = 10010010b • Aplicando RRF: • file = 01001001b • file = 49h • C=0

Divisão inteira por dois

• O programa deve interpretar C=0 no início como um sinalizador de operando inteiro e menor do que 100h. • O programa interpreta C=0 no final como um sinalizador de resultado inteiro e menor do que 100h.

IDE

1

6 25/04/2017

Exemplo 3

• C=0 • file = 93h • file = 10010011b • Aplicando RLF: • file = 00100110b • file = 26h • C=1 • Valor: 100100110b • Valor: 100h + 26h = 126h

Multiplicação por dois com estouro

• Em RLF, caso C mude de 0 para 1, um número inteiro foi multiplicado e o resultado é maior do que FFh. • C=1no final tem a função de somar 100h.

• O programa deve interpretar C=0 no início como um sinalizador de operando inteiro e menor do que 100h. • O programa deve interpretar

C=1 no final como um sinalizador de resultado inteiro e maior do que FFh (estouro).

(2)

7 25/04/2017

Exemplo 4

• C=0 • file = 93h • file = 10010011b • Aplicando RRF: • file = 01001001b • file = 49h • C=1 • Valor: 01001001,1b • Valor: 49h + 0,8h = 49,8h

• Em RRF, caso C mude de 0 para 1, um número inteiro foi dividido e o resultado é fracionário. • C=1no final tem a função de somar 0,8h.

Divisão fracionária por dois

• O programa deve interpretar C=0 no início como um sinalizador de operando inteiro e menor do que 100h.

• O programa deve interpretar C=1 no final como um sinalizador de resultado fracionário e menor do que 100h. 8 25/04/2017

Exemplo 5

• C=1 • file = 26h = 00100110b • Valor: 00100110,1b • Valor: 0,8h + 26h = 26,8h • Aplicando RLF: • Valor: 01001101,0b • file = 01001101b = 4Dh • C=0

Multiplicação por dois de um número fracionário menor do que FFh

• Em RLF, caso C mude de 1 para 0, um número fracionário foi multiplicado e o resultado é inteiro. • C=1no início tem a função de somar 0,8h.

• O programa deve interpretar C=1 no início como um sinalizador de operando fracionário e menor do que 100h.

• O programa deve interpretar C=0 no final como um sinalizador de resultado inteiro e menor do que 100h.

IDE

1

9 25/04/2017

Exemplo 6

• C=1 • file = 26h = 00100110b • Valor: 100100110b • Valor: 100h + 26h = 126h • Aplicando RRF: • Valor: 010010011b • file = 10010011b = 93h • C=0

Divisão inteira por dois de um número inteiro maior do que FFh

• Em RRF, caso C mude de 1 para 0, um número maior do que FFh foi dividido e o resultado é inteiro. • C=1no início tem a função de somar 100h.

• O programa deve interpretar C=1 no início como um sinalizador de operando inteiro e maior do que FFh. • O programa deve interpretar

C=0 no final como um sinalizador de resultado inteiro e menor do que 100h.

IDE

1

10 25/04/2017 • file = 93h = 10010011b • C=1(função de somar 0,8h) • Valor: 93h + 0,8h = 93,8h • Valor: 10010011,1b • Aplicando RLF: • Valor: 100100111b • file = 00100111b = 27h • C=1(função de somar 100h) • Valor: 100h + 27h = 127h • Em RLF, se C valia um e permaneceu

em um, é porque um número fracionário foi multiplicado e o resultado é inteiro e maior do que FFh.

Exemplo 7

• O programa deve interpretar C=1 no início como um sinalizador de operando fracionário e menor do que 100h. • O programa deve interpretar C=1 no final como um sinalizador de resultado inteiro e maior do que FFh.

IDE

1

11 25/04/2017 • file = 27h = 00100111b. • C=1(função de somar 100h) • Valor: 100h + 27h = 127h • Valor: 100100111b • Aplicando RRF: • Valor: 10010011,1b • file = 10010011b = 93h • C=1(função de somar 0,8h) • Valor: 93h + 0,8h = 93,8h • Em RRF, se C valia um e permaneceu

em um, é porque um número inteiro e maior do que FFh foi dividido e o resultado é fracionário.

Exemplo 8

• O programa deve interpretar C=1 no início como um sinalizador de operando e maior do que FFh.

• O programa deve interpretar C=1 no final como um sinalizador de resultado fracionário e menor do que 100h.

IDE

1

12 25/04/2017

Exemplos 1 a 8

Exemplo Operação C antes C depois

1 RLF

0

0

2 RRF 3 RLF

0

1

4 RRF 5 RLF

1

0

6 RRF 7 RLF

1

1

8 RRF

(3)

PIC

2

13 25/04/2017

PIC

PIC

2

14 25/04/2017

Exemplo 1

• Instruções de 18 bits.

• Memória de programa para 16k instruções. • Determine o tamanho da memória.

18  16  1024 = 294912 bits 294912 / 8 = 36864 bytes 36864 / 1024 = 36 kB

PIC

2

15 25/04/2017

Exemplo 2

• Instruções de 10 bits. • Memória de programa de 11,25kB.

• Determine a quantidade de instruções armazenável. 11,25  8  1024 = 92160 bits 92160 / 10 = 9216 words 9216 / 1024 = 9 k words

PIC

2

16 25/04/2017

Exemplo 3

• Instruções de 13 bits.

• Memória de programa de 12k words.

• Determine a os valores máximos de dado e de endereço. Dado: 1 1111 1111 1111b 1FFFh Endereço: 11 1111 1111b 1k 111 1111 1111b 2k 00 1111 1111 1111b 4k 01 1111 1111 1111b 8k 10 1111 1111 1111b 12k 2FFFh

PIC

2

17 25/04/2017

Exemplo 3

Último endereço: 11 1111 1111b 1k 111 1111 1111b 2k 1111 1111 1111b 4k 1 1111 1111 1111b 8k

Outra forma para o cálculo do endereço

Endereços: 100 0000 0000b 1k 1 000 0000 0000b 2k 1 0000 0000 0000b 4k 10 0000 0000 0000b 8k Adição: 1 0000 0000 0000b 4k 10 0000 0000 0000b 8k ---11 0000 0000 0000b 12k Último endereço: 11 0000 0000 0000b -1 ---10 1111 1111 1111b 2FFFh

PIC

2

18 25/04/2017

• A memória de programa de uma MCU é de 24k instruções.

• Cada instrução usa 12 bits de opcode. • A memória é dividida em 6 páginas.

• A primeira página perde as 10 primeiras posições para uso interno da MCU.

(4)

19 25/04/2017

1. Qual o tamanho do barramento de endereço da memória? 2. Qual o maior tamanho de programa aceito?

3. Qual o tamanho das páginas 1 a 5? 4. Qual o tamanho da página 0?

5. Quais os limites inferior e superior da memória útil? 6. Quantos bits de seleção de página são necessários? 7. Quais os endereços na seleção de páginas? 8. Quantos bits de endereço cada página usa?

9. Quais os limites inferior e superior dos bits de endereço em cada página?

10. Quais os limites inferior e superior de cada página?

Exemplo 4

20 25/04/2017

Exemplo 4

PIC

2

21 25/04/2017

Exemplo 4

PIC

2

22 25/04/2017

• Neste exercício, foi escolhida uma divisão em 6 páginas apenas para um treinamento dos cálculos Posições acessíveis na etapa de programação. • Na prática, o número de páginas é sempre

uma potência de 2, pois está relacionado à quantidade de bits mais significativos que foram retirados da palavra de endereço da memória em questão.

Exemplo 4

PIC

2

23 25/04/2017

• Na prática, a divisão em páginas sempre forma páginas cuja quantidade de palavras é uma potência de 2.

• Se, porém, esse tamanho não for uma potência de dois, haverá uma faixa de endereços proibidos entre as páginas.

Exemplo 4

PIC

2

24 25/04/2017

Exemplo 5 – Erro no uso de GOTO

org 0x0

CLRF 0x0a ;PCLATH = 00000b NOP ;estamos na página 0

GOTO $+0x2 ;o pulo vai dar certo porque PCLATH = 00000b

NOP ;pulado

NOP

GOTO 0x7ff ;último endereço da página 0 org 0x7ff

NOP

NOP ;entrada para a página 1, mas PCLATH = 00000b GOTO $+0x2 ;o pulo não vai dar certo porque PCLATH = 00000b NOP

NOP end

(5)

PIC

2

25 25/04/2017

Exemplo 6 – Erro anterior corrigido

org 0x0

CLRF 0x0a ;PCLATH = 00000b NOP ;estamos na página 0

GOTO $+0x2 ;o pulo vai dar certo porque PCLATH = 00000b

NOP ;pulado

NOP

GOTO 0x7ff ;último endereço da página 0 org 0x7ff

BSF 0x0a, 0x3 ;PCLATH = 01000b NOP ;entrada para a página 1

GOTO $+0x2 ;o pulo vai dar certo porque PCLATH = 01000b

NOP ;pulado NOP end

RECURSOS

3

26 25/04/2017

RECURSOS

RECURSOS

3

27 25/04/2017

• Uma MCU suporta um clock de até 50MHz. • O clock aplicado é de 40MHz.

• Cada instrução usa 6 ciclos de clock.

• Um contador programável da MCU tem 12 bits. • Foi configurado um prescaler ratio de 1:16. • Foi configurado um postscaler ratio de 1:3. • A contagem é iniciada em zero.

• Quanto tempo a interrupção de postscaler levará para ser dada?

Exemplo 1

RECURSOS

3

28 25/04/2017

Exemplo 1

RECURSOS

3

29 25/04/2017

Exemplo 2 – Passo para 20MHz

Ratio fSTEP TSTEP

1:1(PSA=1) 5MHz 200ns 1:2 2,5MHz 400ns 1:4 1,25MHz 800ns 1:8 625kHz 1,6s 1:16 313kHz 3,2s 1:32 156kHz 6,4s 1:64 78,1kHz 12,8s 1:128 39,1kHz 25,6s 1:256 19,5kHz 51,2s Reset default • Este tempo é a duração de um degrau da rampa. • É preciso saber fazer estes cálculos para outros

valores de fOSC.

Timer 0 – Modo temporizador

RECURSOS

3

30 25/04/2017

Exemplo 3 – Rampa para 20MHz

Ratio fRAMP TRAMP

1:1(PSA=1) 19,53kHz 51,2s 1:2 9,766kHz 102,4s 1:4 4,883kHz 204,8s 1:8 2,441kHz 409,6s 1:16 1,221kHz 819,2s 1:32 610,4Hz 1,638ms 1:64 305,2Hz 3,277ms 1:128 152,6Hz 6,554ms 1:256 76,29Hz 13,11ms Reset default • Este tempo é a duração de uma contagem completa. • É preciso saber fazer estes cálculos para outros

valores de fOSC.

(6)

31 25/04/2017

Exemplo 4 – T

CY

e T

OSC

por rampa

Ratio TCY´s TOSC´s 1:1(PSA=1) 256 1024 1:2 512 2048 1:4 1024 4096 1:8 2048 8192 1:16 4096 16384 1:32 8192 32768 1:64 16384 65536 1:128 32768 131072 1:256 65536 262144Reset default Timer 0 – Modo temporizador

32 25/04/2017

t 1:2 obtido no modo temporizador – TSTEP= 400ns

1:1 obtido no modo temporizador – TSTEP= 200ns

t

t 1:4 obtido no modo temporizador – TSTEP= 800ns

Exemplo 5 – Inclinação no modo temporizador

• É preciso saber fazer estes cálculos para outros valores de fOSC.

Timer 0 – Exemplos para 20MHz

RECURSOS

3

33 25/04/2017

t 1:2 obtido no modo temporizador – TSTEP= 400ns

1:1 obtido no modo temporizador – TSTEP= 200ns

t

1:3 obtido no modo contador – TSTEP= 600ns

• Na rampa 1:3, o pino T0CKI precisa receber 5/3 MHz a um prescaler ratio de 1:1.

t

Exemplo 6 – Inclinação no modo contador

Timer 0 – Exemplos para 20MHz

RECURSOS

3

34 25/04/2017

• O caso de 1:3, não significa que haja um contador

prescaler com este division ratio. Significa que o

relógio externo gera, em TMR0, uma rampa de inclinação equivalente à daquela obtida caso existisse a opção de prescaler ratio de 1:3. • Como a rampa obtida é três vezes mais lenta do

que a de 1:1, então TSTEP= 3TCY.

• Como 3 é um número inteiro, então não seria necessária a atuação do circuito de sincronia.

Exemplo 6 – Inclinação no modo contador

Timer 0 – Exemplos para 20MHz

RECURSOS

3

35 25/04/2017

1:2 obtido no modo temporizador 1:1 obtido no modo temporizador

1:3 obtido no modo contador

Exemplo 6 – Inclinação no modo contador

Timer 0 – Exemplos para 20MHz

RECURSOS

3

36 25/04/2017

t 2:5 obtido no modo contador – TSTEP=500ns

1:1 obtido no modo temporizador – TSTEP=200ns

t

3:7 obtido no modo contador – TSTEP=467ns

t

Exemplo 7 – Inclinação no modo contador

Timer 0 – Exemplos para 20MHz

• 2:5 = 1:2,5 • 3:7 = 1:2,3

(7)

RECURSOS

3

37 25/04/2017

• O caso de 2:5, não significa que haja um contador

prescaler com este division ratio. Significa que o

relógio externo gera, em TMR0, uma rampa de inclinação equivalente à daquela obtida caso existisse a opção de prescaler ratio de 1:2,5. • Como a rampa obtida é duas vezes e meia mais

lenta do que a de 1:1, então TSTEPmédio= 2,5TCY.

• Alguns valores de TSTEPsão de 2TCY.

• Alguns valores de TSTEPsão de 3TCY.

• Como 2,5 é um número fracionário, então é necessária a atuação do circuito de sincronia, responsável pelos dois valores inteiros de TSTEP.

Exemplo 7 – Inclinação no modo contador

Timer 0 – Exemplos para 20MHz

RECURSOS

3

38 25/04/2017

1:2.5 obtido no modo contador

200ns 600ns 400ns 1000ns T0CKI 500ns

1:1 obtido no modo temporizador – TSTEP=200ns

2:5 obtido no modo contador – TSTEP=500ns

atraso para sincronia

Exemplo 7 – Inclinação no modo contador

Timer 0 – Exemplos para 20MHz

RECURSOS

3

39 25/04/2017

Ratio fSTEP TSTEP

1:1 5MHz 200ns

1:2 2,5MHz 400ns 1:4 1,25MHz 800ns 1:8 625kHz 1,6s

Reset default

• Este tempo é a duração de um degrau da rampa. • É preciso saber fazer estes cálculos para outros

valores de fOSC.

Exemplo 8 – Passo para 20MHz

Timer 1 – Modo temporizador

RECURSOS

3

40 25/04/2017

Ratio fRAMP TRAMP

1:1 76,29Hz 13,11ms 1:2 38,15Hz 26,21ms 1:4 19,07Hz 52,43ms 1:8 9,537Hz 104,9ms

Reset default

Exemplo 8 – Rampa para 20MHz

• Este tempo é a duração de uma contagem completa. • É preciso saber fazer estes cálculos para outros

valores de fOSC.

Timer 1 – Modo temporizador

RECURSOS

3

41 25/04/2017 Ratio TCY´s TOSC´s 1:1 65536 262144 1:2 131072 524288 1:4 262144 1048576 1:8 524288 2097152 Reset default

Exemplo 8 – T

CY

e T

OSC

por rampa

Timer 1 – Modo temporizador

• Esta é a quantidade de ciclos por rampa. • Estes valores não dependem de fOSC.

RECURSOS

3

42 25/04/2017 • PIC16F877. • PR2 = 2h. • TMR2conta de 0 a PR2. • TMR2conta de 0 a 2. • Passos: (0,1,2). • O período é de três passos.

• O período é calculado a partir de PR2+1. • No passo três, TMR2 recebe o comando reset

que entra em ação no próximo ciclo de instrução.

Exemplo 9 – Controle do período

• PIC16F877. • PR2 = 02h.

(8)

<T2CKPS1: T2CKPS0> Ratio 00 1:1 01 1:4 10 1:16 11 1:16 43 25/04/2017

Exemplo 10 – Controle do período

• PIC16F877. • fOSC= 20MHz.

• PR2 = 3Bh.

• Considerar todos os prescaler ratios. • Determine a frequência das rampas.

Timer 2

44 25/04/2017

Exemplo 10 – Controle do período

Timer 2

RECURSOS

3

45 25/04/2017 • PIC16F877. • fOSC= 8MHz. • PR2 = 31h. • Prescaler de 1:16.

• Qual a frequência das rampas?

Exemplo 11 – Controle do período

Timer 2

RECURSOS

3

46 25/04/2017 • TMR2conta de 00h até 31h. • Frequência de instrução: fCY= fOSC/4 fCY= 8MHz/4 fCY= 2MHz

• Frequência usada na contagem: fSTEP= fCY/prescaler

fSTEP= 2MHz/16

fSTEP= 125kHz

• Frequência de uma contagem completa: fRAMP= fSTEP/(PR2+1)

fRAMP= 125kHz/32h

fRAMP= 2,5kHz

Exemplo 11 – Controle do período

Timer 2

RECURSOS

3

47 25/04/2017 • PIC16F877. • PR2(1) = 80h.

• A frequência das rampas é de 1,6kHz.

• Qual a frequência das rampas para PR2(2) = 70h?

Exemplo 12 – Controle do período

Timer 2

RECURSOS

3

48 25/04/2017

Exemplo 12 – Controle do período

(9)

RECURSOS

3

49 25/04/2017

PR2 • fOSC= 32MHz (outra MCU).

• 8 ciclos por instrução (outra MCU). • Prescaler ratio = 1:6 (outra MCU). • PR2 = 150d.

• Determine a frequência das rampas. t

t

Exemplo 13 – Controle do período

Timer 2

PORTAS DE COMUNICAÇÃO 1

4

50 25/04/2017

PORTAS DE COMUNICAÇÃO 1

PORTAS DE COMUNICAÇÃO 1

4

51 25/04/2017

Exemplo 1 – Conversor AD

• ADRESH = 02h. • ADRESL = 59h. • Right justified.

• Determine o valor destes SFR’s para a mesma conversão A/D no modo left justified.

PORTAS DE COMUNICAÇÃO 1

4

52 25/04/2017

Exemplo 1 – Conversor AD

• ADRESH = 02h = 00000010b (right) • ADRESL = 59h = 01011001b (right) • ADRES = 10_01011001b (right) • ADRES = 10010110_01b (left) • ADRESH = 10010110b = 96h (left) • ADRESL = 01000000b = 40h (left)

PORTAS DE COMUNICAÇÃO 1

4

53 25/04/2017

Exemplo 2 – Conversor AD

• ADRESH = 5Ah. • ADRESL = C0h. • Left justified.

• Determine o valor destes SFR’s para a mesma conversão A/D no modo right justified.

PORTAS DE COMUNICAÇÃO 1

4

54 25/04/2017

Exemplo 2 – Conversor AD

• ADRESH = 5Ah = 01011010b (left) • ADRESL = C0h = 11000000b (left) • ADRES = 01011010_11b (left) • ADRES = 01_01101011b (right) • ADRESH = 00000001b = 01h (right) • ADRESL = 01101011b = 6Bh (right)

(10)

55 25/04/2017

Exemplo 3 – Conversor AD

• 7 bits. • VREF– = 3V. • VREF+ = 5V. • VIN = 3,7V.

• Determine a palavra gerada.

56 25/04/2017

Exemplo 3 – Conversor AD

2a – Cálculo de VINpara VREF-=0V:

VIN’ = VIN– V REF-VIN’ = 3,7V – 3V VIN’ = 0,7V 3a – Cálculo da palavra 7Fh  A X  VIN’ 127d  2V X  0,7V X = 44,45 1 – Cálculo da amplitude: A = VREF+– V REF-A = 5V – 3V A = 2V 2b – Cálculo do mínimo V: VMÍN= A / (n-1) VMÍN= 2V / (27– 1) VMÍN= 0,01575V (não arredondar). 3b – Cálculo da palavra (X  VMÍN) + VREF-= VIN (X  0,01575V) + 3V = 3,7V X = 44,45

Inteiro mais próximo: X = 44 Palavra: 2Ch

PORTAS DE COMUNICAÇÃO 1

4

57 25/04/2017

Exemplo 4 – Conversor AD

• 7 bits. • VREF–= -3V. • VREF+= 5V. • VIN = 1,5V.

• Determine a palavra gerada.

PORTAS DE COMUNICAÇÃO 1

4

58 25/04/2017

Exemplo 4 – Conversor AD

1 – Cálculo da amplitude: A = VREF+– V REF-A = 5V – (-3V) A = 8V

2a – Cálculo de VINpara VREF-=0V:

VIN’ = VIN– V REF-VIN’ = 1,5V – (-3V) VIN’ = 4,5V 3a – Cálculo da palavra 7Fh  A X  VIN’ 127d  8V X  4,5V X = 71,4375

Inteiro mais próximo: X = 71 Palavra: 47h 2b – Cálculo do mínimo V: VMÍN= A / (n-1) VMÍN= 8V / (27– 1) VMÍN= 0,06299V (não arredondar). 3b – Cálculo da palavra (X  VMÍN) + VREF-= VIN (X  0,06299V) + (-3)V = 1,5V X = 71,4375

PORTAS DE COMUNICAÇÃO 1

4

59 25/04/2017

Exemplo 5 – Conversor AD

• 7 bits. • VREF–= -3V. • VREF+= 5V. • VIN = -1,5V.

• Determine a palavra gerada.

PORTAS DE COMUNICAÇÃO 1

4

60 25/04/2017

Exemplo 5 – Conversor AD

1 – Cálculo da amplitude: A = VREF+– V REF-A = 5V – (-3V) A = 8V

2a – Cálculo de VINpara VREF-=0V:

VIN’ = VIN– V REF-VIN’ = (-1,5V) – (-3V) VIN’ = 1,5V 3a – Cálculo da palavra 7Fh  A X  VIN’ 127d  8V X  1,5V X = 23,8125

Inteiro mais próximo: X = 24 Palavra: 18h 2b – Cálculo do mínimo V: VMÍN= A / (n-1) VMÍN= 8V / (27– 1) VMÍN= 0,06299V (não arredondar). 3b – Cálculo da palavra (X  VMÍN) + VREF-= VIN (X  0,06299V) + (-3)V = -1,5V X = 23,8125

(11)

PORTAS DE COMUNICAÇÃO 1

4

61 25/04/2017

Exemplo 6 – Conversor AD

• 7 bits. • VREF–= 3V.

• A palavra 1Bh está associada a VIN= 4,5V.

• Determine VREF+.

PORTAS DE COMUNICAÇÃO 1

4

62 25/04/2017

Exemplo 6 – Conversor AD

2a – Cálculo da amplitude total: 7Fh  A 1Bh  A4,5V 127  VREF+’ 27  1,5V VREF+’ = A VREF+’ = 7,056 V 1 – Eliminação de VREF-: A4,5V= VIN– V REF-A4,5V= 4,5V – 3V A4,5V= 1,5V 2b – Cálculo do mínimo V: Entre 00h e 1Bh, há 27 intervalos. VMÍN= A4,5V/ 1Bh VMÍN= 1,5V / 27 VMÍN= 0,0556V (não arredondar).

3b – Cálculo da amplitude total: Em VREF+, a palavra é 127d, 7Fh

Até VREF+ , há 127 intervalos.

VREF+’ = (27– 1)  VMÍN

VREF+’ = 127  0,0556V

VREF+’ = 7,056V

VIN  1Bh = 027d

VREF+  7Fh = 127d

Cálculo de VREF+para VREF-= -3V

VREF+= VREF-+ VREF+’

VREF+= 3V + 7,056V VREF+= 10,056V

PORTAS DE COMUNICAÇÃO 1

4

63 25/04/2017

Exemplo 7 – Conversor AD

• 7 bits. • VREF–= 3V. • VREF+= 5V. • A palavra obtida é 2Ch. • Determine VIN.

PORTAS DE COMUNICAÇÃO 1

4

64 25/04/2017

Exemplo 7 – Conversor AD

1 – Cálculo da amplitude: A = VREF+– V REF-A = 5V – 3V A = 2V

2a – Cálculo de VINpara VREF-=0V:

1111111b  A

X  VIN’

127d  2V 044d  VIN’

VIN’ = 0,6929V

2b1 - Cálculo do intervalo de quantização. Entre 000d e 127d, há 127 intervalos. VMÍN= A / (n-1)

VMÍN= 2V / 127

VMÍN= 0,0158V (não arredondar)

2b2 - Cálculo de VINpara VREF-=0V:

VIN’ = 44  VMÍN

VIN’ = 44  0,0158V

VIN’ = 0,6929V

VIN  2Ch = 044d

VREF+  7Fh = 127d

3 – Cálculo de VINpara VREF-= -3V

VIN= VREF-+ VIN’ VIN= 3V + 0,6929V VIN= 3,6929V

PORTAS DE COMUNICAÇÃO 1

4

65 25/04/2017

Exemplo 8 – Conversor AD

• 7 bits. • VREF+= 15V.

• A palavra 1Bh está associada a VIN= 10V.

• Determine VREF-.

PORTAS DE COMUNICAÇÃO 1

4

1b - Cálculo do complemento da amplitude do ponto de operação:

ACOMPL= VREF+– VIN ACOMPL= 15V – 10V ACOMPL= 5V 7Fh  VREF+– V REF-1Bh  VIN– V REF-127  15V – V REF-27  10V – V REF-1270V – (127  VREF-) = 405V – (27  VREF-) 865V = 100  V REF-VREF-= 8,65V 66 25/04/2017

Exemplo 8 – Conversor AD

A = VREF+– V REF-VIN  1Bh = 027d VREF+  7Fh = 127d

2b - Cálculo do intervalo de quantização. Entre 027d e 127d, há 100 intervalos. VMÍN= ACOMPL/ (7Fh – 1Bh) VMÍN= 5V / 100 VMÍN= 0,05V 3b - Cálculo do A10V Entre 000d e 027d, há 27 intervalos. A4,5V = (1Bh – 00h)  VMÍN A4,5V = 27  0,05V A4,5V = 1,35V 4b - Cálculo do V REF-VIN– A4,5V= V REF-10V – 1,35V = V REF-VREF-= 8,65V

(12)

67 25/04/2017

Exemplo 8 – Conversor AD

1111111b 0000000b 7Fh 00h VREF+= 15V VREF-= 8,65V ACOMPL= 5V 101 níveis 7Fh– 1Bh = 100 intervalos VMÍN= 0,05V 1Bh VIN= 10V A10V= 1,35V 28 níveis 1Bh– 00h = 27 intervalos 127 27 128 níveis 7Fh– 00h = 127 intervalos 0 25/04/2017 68

Exemplo 9 – PWM

• Opção 1: • TMR2<7:0>conta de 00h a 9Ch.

• TMR2<7:0>possui 9Dh passos de contagem. • 9Dh 4 = 274h.

• TMR2<9:0> possui 274h passos de contagem. • TMR2<9:0> conta de 000h a 273h. • MáxTMR2<9:0> = 273h. • PR2<7:0> = 9Ch • Determine o MáxTMR2<9:0>. • Determine o MínDC<9:0> para DC%=100%.

PORTAS DE COMUNICAÇÃO 1

4

69 25/04/2017 • Opção 2: • MáxTMR2<9:0> = (PR2  4) +3. • MáxTMR2<9:0> = (9Ch  4) +3. • MáxTMR2<9:0> = 273h. • PR2<7:0> = 9Ch • Determine o MáxTMR2<9:0>. • Determine o MínDC<9:0> para DC%=100%. • Opção 3: • PR2 = 10011100. • MáxTMR2<9:0> = 1001110011. • MáxTMR2<9:0> = 273h. Acrescentar

Exemplo 9 – PWM

PORTAS DE COMUNICAÇÃO 1

4

70 25/04/2017 • MínDC<9:0> = 273h +1. • MínDC<9:0> = 274h. • Se 000h≤ DC<9:0> ≤ 273h então DC% < 100%. • Se 274h≤ DC<9:0> ≤ 3FFh então DC% = 100%.

Exemplo 9 – PWM

PORTAS DE COMUNICAÇÃO 1

4

71 25/04/2017

Exemplo 10 – DC=3FFh e PR2=FFh

3FFh 10-bit TMR2<9:0> 3FCh 000h 004h 001h 002h003h 3FDh 3FEh DC<9:0> t PWM

PORTAS DE COMUNICAÇÃO 1

4

72 25/04/2017

Exemplo 11 – DC=3FCh e PR2=FFh

3FFh 10-bit TMR2<9:0> 3FCh 000h 004h 001h 002h003h 3FDh 3FEh DC<9:0> PWM t

(13)

PORTAS DE COMUNICAÇÃO 1

4

3FCh 3FBh 73 25/04/2017

Exemplo 12 – DC=3FBh e PR2=FEh

3FFh 000h 004h 001h 002h 003h 3FDh 3FEh DC<9:0> t PWM 3FAh

PORTAS DE COMUNICAÇÃO 1

4

3FCh 3FBh 74 25/04/2017

Exemplo 13 – DC=3FCh e PR2=FEh

3FFh 000h 004h 001h 002h 003h 3FDh 3FEh DC<9:0> t PWM 3FAh

PORTAS DE COMUNICAÇÃO 1

4

3FCh 3FBh 75 25/04/2017

Exemplo 14 – DC=3FDh e PR2=FEh

3FFh 000h 004h 001h 002h003h 3FDh 3FEh DC<9:0> t PWM 3FAh

• DC% não pode superar 100%. • Então DC% = 100%.

PORTAS DE COMUNICAÇÃO 1

4

Exemplo 15

76 25/04/2017 • PR2 = FFh. • DC% = 68%.

• Determine o valor dos SFR’s envolvidos no DC<9:0>.

• O número de passos precisa ser inteiro. • Passos = 696 (arredondado). • O valor DC em TMR2<9:0> já implica em PWM = 0. • PWM = 1 para TMR2<9:0> = 0d a 695d. • DC<9:0> = 696d = 2B8h.

PORTAS DE COMUNICAÇÃO 1

4

Exemplo 15

77 25/04/2017 • DC = 10_1011_1000b • DC = 1010_1110_00b. • CCPRxL<7:0> = 1010_1110b • CCPRxL<7:0> = AEh • CCPxCON<5:4> = 00b

PORTAS DE COMUNICAÇÃO 1

4

Exemplo 16

78 25/04/2017 • PR2 = 7Fh. • DC% = 68%.

• Determine o valor dos SFR’s envolvidos no DC<9:0>. • TMR2<7:0> conta de 00h a 7Fh.

• TMR2<7:0> conta de 000d a 127d.

• TMR2<7:0> conta de 00000000b a 01111111b. • TMR2<7:0> possui 128 passos de contagem.

• TMR2<9:0> conta de 0000000000b a 0111111111b. • TMR2<9:0> conta de 0000d a 0511d.

• TMR2<9:0> conta de 000h a 1FFh. • TMR2<9:0> possui 512 passos de contagem.

(14)

Exemplo 16

79 25/04/2017

Exemplo 16

80 25/04/2017 • Passos = 348 (arredondado). • PWM = 1 para TMR2<9:0> = 0d a 347d. • DC<9:0> = 348d. • DC = 0101_0111_00b. • CCPRxL<7:0> = 0101_0111b • CCPRxL<7:0> = 57h • CCPxCON<5:4> = 00b

PORTAS DE COMUNICAÇÃO 1

4

Efeito do PR2

81 25/04/2017 DC DC% PR2 Passos DC Exemplo 15 68% FFh 696,32 696d Exemplo 16 68% 7Fh 348,16 348d • 696,32/256 = 2,73 • 348,16/128 = 2,73

• Para um mesmo DC%, (PR2+1) e DC<9:0> são proporcionais. • A proporção não é exata por causa dos arredondamentos. • Desta forma, é possível aumentar a frequência PWM

facilmente sem alterar DC% caso seja necessário.

Não muda

PORTAS DE COMUNICAÇÃO 1

4

Exemplo 17

82 25/04/2017 • CCPR1L<7:0> = 3Bh • CCPxCON<5:4> = reset default

• Determine o valor do DC<9:0>. • Reset default: CCPxCON<5:4> = 00b • CCPR1L<7:0> = 0011_1011b • DC<9:0> = 0011_1011_00b • DC<9:0> = 00_1110_1100b • DC<9:0> = 0ECh

PORTAS DE COMUNICAÇÃO 1

4

Exemplo 18

83 25/04/2017 • DC<9:0> = 10Fh • PR2 = FFh

• Determine o dutty-cycle percentual • DC<9:0> = 271d • O valor DC<9:0> em TMR2<9:0> já implica em PWM = 0. • PWM vale 1 para TMR2<9:0>=0d a TMR2<9:0>=270d. • PWM vale 1 em 271 passos de TMR2<9:0>.

PORTAS DE COMUNICAÇÃO 1

4

Exemplo 19

84 25/04/2017 • DC<9:0> = 10Fh • PR2 = 7Fh

• Determine o dutty-cycle percentual • DC<9:0> = 271d

• PR2 = 127d

• PWM vale 1 para TMR2<9:0>=0d a TMR2<9:0>=270d. • PWM vale 1 em 271 passos de TMR2<9:0>.

(15)

PORTAS DE COMUNICAÇÃO 1

4

Exemplo 19

85 25/04/2017

• O valor PR2 em TMR2<7:0> está incluído na contagem. • TMR2<7:0>conta de 000d a 127d.

• TMR2<7:0>conta de 0000_0000b a 0111_1111b. • TMR2<9:0>conta de 0000_0000_00b a 0111_1111_11b. • TMR2<9:0>conta de 00_0000_0000b a 01_1111_1111b. • TMR2<9:0>conta de 0d a 511d.

• TMR2<9:0>possui 512 passos de contagem.

PORTAS DE COMUNICAÇÃO 1

4

Efeito do PR2

86 25/04/2017 DC <9:0> PR2 TMR2 <9:0> máximo DC% Exemplo 18 10Fh FFh 3FFh 26,46% Exemplo 19 10Fh 7Fh 1FFh 52,93%

• Dividindo PR2 por dois, o DC% é multiplicado por dois. • (PR2+1) e DC% são inversamente proporcionais. • É possível ajustar DC% através de PR2.

Não muda

PORTAS DE COMUNICAÇÃO 1

4

87 25/04/2017 DC% PR2 Passos Divisão 25% FFh 100% do Tmáx 256 64/256 1/4 33,3...% BFh 75% do Tmáx 192 64/192 1/3 50% 7Fh 50% do Tmáx 128 64/128 1/2 100% 3Fh 25% do Tmáx 64 64/64 1/1

Exemplo 20 – DC<9:2>=40h

• Mantendo DC<9:2> constante, a relação entre DC% e PR2+1 não é linear.

PR2+1 DC% 100% 50% 25% 256 128 192 64

PORTAS DE COMUNICAÇÃO 1

4

88 25/04/2017 PR 2 +1 DC% 100% 50% 33% 25% 12,5% 256 128 64 32 96 160

DC% PR2 Passos8 bits Passos10 bits Divisão 12,5% FFh 100% do Tmáx 256 1024 128/1024 20% 9Fh 62,5% do Tmáx 160 640 128/640 25% 7Fh 50% do Tmáx 128 512 128/512 33,3% 5Fh 37,5% do Tmáx 96 384 128/384 50% 3Fh 25% do Tmáx 64 256 128/256 100% 1Fh 12,5% do Tmáx 32 128 128/128

Exemplo 21 – DC<9:0>=80h

PORTAS DE COMUNICAÇÃO 1

4

Exemplo 22

89 25/04/2017 • DC<9:0> = 10Fh • PR2 = 54h

• Determine o dutty-cycle percentual • Para PR2 = FFh, DC% = 26,46% (exemplo 18). • PR2 = 54h, são 55h passos de contagem. • Passos: 85d.

PORTAS DE COMUNICAÇÃO 1

4

Exemplo 22

90 25/04/2017

• Caso o valor de 26,46% não fosse sabido: • TMR2<7:0>conta de 000d a 084d.

• TMR2<7:0>conta de 0000_0000b a 0101_0100b. • TMR2<9:0>conta de 0000_0000_00b a 0101_0100_11b. • TMR2<9:0>conta de 00_0000_0000b a 01_0101_0011b. • TMR2<9:0>conta de 0d a 339d.

(16)

Exemplo 23 – 8 bits

91 25/04/2017

• DC% = 68%.

• Você deseja usar DC<9:2> sem erros. • Determine o valor de PR2 e de DC<9:2>.

• TMR2<7:0>conta de 00h a F9h (250 passos). • PWM=1 para TMR2<7:0> de 00h a A9h (170 passos).

• PR2+1 = 250d • PR2 = 249d • PR2 = F9h • DC<9:2>=170d • DC<9:2>=AAh

Exemplo 23 – Valores típicos – 8 bits

92 25/04/2017 DC% Passos Passos em 1 100% 255 255 80% 255 204 60% 255 153 40% 255 102 20% 255 51 DC% Passos Passos em 1 90% 250 225 70% 250 175 30% 250 075 10% 250 025 DC% Passos Passos em 1 75% 256 192 50% 256 128 25% 256 064 DC% Passos Passos em 1 95% 240 228 85% 240 204 65% 240 156 55% 240 132 45% 240 108 35% 240 084 15% 240 036 05% 240 012 DC% Passos Passos em 1 33% 200 66 67% 200 74 P R 2 = F E h P R 2 = F 9 h P R 2 = F F h P R 2 = E F h P R 2 = C 7 h

PORTAS DE COMUNICAÇÃO 1

4

93 25/04/2017 DC% Passos Passos em 1 98% 250 245 96% 250 240 94% 250 235 92% 250 230 90% 250 225 88% 250 220 86% 250 215 84% 250 210 DC% Passos Passos em 1 99% 200 198 97% 200 194 95% 200 190 93% 200 186 91% 200 182 89% 200 178 87% 200 174 85% 200 170

Exemplo 23 – Valores típicos – 8 bits

P R 2 = F 9 h P R 2 = C 7 h

PORTAS DE COMUNICAÇÃO 1

4

Exemplo 24 – data sheet – Efeito do prescaler

94 25/04/2017

PORTAS DE COMUNICAÇÃO 1

4

95 25/04/2017

Exemplo 25 – Data Sheet – Efeito do PR2+1

PORTAS DE COMUNICAÇÃO 1

4

96 25/04/2017

(17)

PORTAS DE COMUNICAÇÃO 1

4

97 25/04/2017

Exemplo 26 – Data Sheet – Resolução

PORTAS DE COMUNICAÇÃO 1

4

98 25/04/2017

Exemplo 26 – Data Sheet – Resolução

PORTAS DE COMUNICAÇÃO 1

4

Exemplo 27

99 25/04/2017

PWM period = [(PR2) + 1]  4  TOSC (TMR2 prescale value)

PORTAS DE COMUNICAÇÃO 1

4

Exemplo 28

100 25/04/2017 • DC% = 62,5%. • Determine o valor de PR2 e de DC<9:2>. • 256 × 62,5% = 160 • PR2 = FFh • CCPR1L = A0h • DC% = 18,75%. • Determine o valor de PR2 e de DC<9:2>. • 256 × 18,75% = 48 • PR2 = FFh • CCPR1L = 30h

PROGRAMAÇÃO PWM

5

PROGRAMAÇÃO PWM

101 25/04/2017

PROGRAMAÇÃO PWM

5

PR2+1=100h 100h/4=40h 100h*4=400h 102 25/04/2017

Exemplo 1 – Quartas – PR2=FFh

DC% 10-bit DC<9:0> 0% - 0/4 000h 0000d 00_0000_0000b 25% - 1/4 100h 0256d 01_0000_0000b 50% - 2/4 200h 0512d 10_0000_0000b 75% - 3/4 300h 0768d 11_0000_0000b 100% - 4/4 400h 1024d 100_0000_0000b DC% 8-bit DC<9:2> CCPRxL 0% - 0/4 00h 000d 0000_0000b 25% - 1/4 40h 064d 0100_0000b 50% - 2/4 80h 128d 1000_0000b 75% - 3/4 C0h 192d 1100_0000b 100% - 4/4 100h 256d 1_0000_0000b

Dois bits decisivos TMR2<7:0>configurado para 100% do máximo período

(18)

PR2+1=80h 80h/4=20h 80h*4=200h 103 25/04/2017 DC% 10-bit DC<9:0> 0% - 0/4 000h 0000d 00_0000_0000b 25% - 1/4 080h 0128d 00_1000_0000b 50% - 2/4 100h 0256d 01_0000_0000b 75% - 3/4 180h 0384d 01_1000_0000b 100% - 4/4 200h 0512d 10_0000_0000b DC% 8-bit DC<9:2> CCPRxL 0% - 0/4 00h 000d 0000_0000b 25% - 1/4 20h 032d 0010_0000b 50% - 2/4 40h 064d 0100_0000b 75% - 3/4 60h 096d 0110_0000b 100% - 4/4 80h 128d 1000_0000b

Exemplo 2 – Quartas – PR2=7Fh

Três bits decisivos TMR2<7:0>configurado para 1/2 do máximo período

PR2+1=C0h C0h/4=30h C0h*4=300h 104 25/04/2017 DC% 10-bit DC<9:0> 0% - 0/4 000h 0000d 00_0000_0000b 25% - 1/4 0C0h 0192d 00_1100_0000b 50% - 2/4 180h 0384d 01_1000_0000b 75% - 3/4 240h 0576d 10_0100_0000b 100% - 4/4 300h 0768d 11_0000_0000b DC% 8-bit DC<9:2> CCPRxL 0% - 0/4 00h 000d 0000_0000b 25% - 1/4 30h 048d 0011_0000b 50% - 2/4 60h 096d 0110_0000b 75% - 3/4 90h 144d 1001_0000b 100% - 4/4 C0h 192d 1100_0000b

Exemplo 3 – Quartas – PR2=BFh

Quatro bits decisivos TMR2<7:0>configurado para 3/4 do máximo período

PROGRAMAÇÃO PWM

5

PR2+1=E0h E0h/4=38h E0h*4=380h 105 25/04/2017 DC% 10-bit DC<9:0> 0% - 0/4 000h 0000d 00_0000_0000b 25% - 1/4 0E0h 0224d 00_1110_0000b 50% - 2/4 1C0h 0448d 01_1100_0000b 75% - 3/4 2A0h 0672d 10-1010_0000b 100% - 4/4 380h 0896d 11-1000-0000b DC% 8-bit DC<9:2> CCPRxL 0% - 0/4 00h 000d 0000_0000b 25% - 1/4 38h 056d 0011_1000b 50% - 2/4 70h 112d 0111_0000b 75% - 3/4 A8h 168d 1010_1000b 100% - 4/4 E0h 224d 1110_0000b

Exemplo 4 – Quartas – PR2=DFh

Cinco bits decisivos TMR2<7:0>configurado para 7/8 do máximo período

PROGRAMAÇÃO PWM

5

PR2+1=F0h F0h/4=3Ch F0h*4=3C0h 106 25/04/2017 DC% 10-bit DC<9:0> 0% - 0/4 000h 0000d 00_0000_0000b 25% - 1/4 0F0h 0240d 00_1111_0000b 50% - 2/4 1E0h 0480d 01_1110_0000b 75% - 3/4 2D0h 0720d 10_1101_0000b 100% - 4/4 3C0h 0960d 11_1100_0000b DC% 8-bit DC<9:2> CCPRxL 0% - 0/4 00h 000d 0000_0000b 25% - 1/4 3Ch 060d 0011_1100b 50% - 2/4 78h 120d 0111_1000b 75% - 3/4 B4h 180d 1011_0100b 100% - 4/4 F0h 240d 1111_0000b

Exemplo 5 – Quartas – PR2=EFh

Seis bits decisivos TMR2<7:0>configurado para 15/16 do máximo período

PROGRAMAÇÃO PWM

5

PR2+1=F8h F8h/4=3Eh F8h*4=3E0h 107 25/04/2017 DC% 10-bit DC<9:0> 0% - 0/4 000h 0000d 00_0000_0000b 25% - 1/4 0F8h 0248d 00_1111_1000b 50% - 2/4 1F0h 0496d 01_1111_0000b 75% - 3/4 2E8h 0744d 10_1110_1000b 100% - 4/4 3E0h 0992d 11_1110_0000b DC% 8-bit DC<9:2> CCPRxL 0% - 0/4 00h 000d 0000_0000b 25% - 1/4 3Eh 062d 0011_1110b 50% - 2/4 7Ch 124d 0111_1100b 75% - 3/4 BAh 186d 1011_1010b 100% - 4/4 F8h 248d 1111_1000b

Exemplo 6 – Quartas – PR2=F7h

Sete bits decisivos TMR2<7:0>configurado para 31/32 do máximo período

PROGRAMAÇÃO PWM

5

PR2+1=FCh FCh/4=3Fh FCh*4=3F0h 108 25/04/2017 DC% 10-bit DC<9:0> 0% - 0/4 000h 0000d 00_0000_0000b 25% - 1/4 0FCh 0252d 00_1111_1100b 50% - 2/4 1F8h 0504d 01_1111_1000b 75% - 3/4 2F4h 0756d 10_1111_0100b 100% - 4/4 3F0h 1008d 11_1111_0000b DC% 8-bit DC<9:2> CCPRxL 0% - 0/4 00h 000d 0000_0000b 25% - 1/4 3Fh 063d 0011_1111b 50% - 2/4 7Eh 126d 0111_1110b 75% - 3/4 BDd 189d 1011_1101b 100% - 4/4 FCh 252d 1111_1100b

Exemplo 7 – Quartas – PR2=FBh

Oito bits decisivos TMR2<7:0>configurado para 63/64 do máximo período

(19)

PROGRAMAÇÃO PWM

5

109 25/04/2017

Comparação dos quatro primeiros exemplos

100h 00h 80h C0h 40h 25% 50% 100% 25% 50% 75% 100% 25% 50% 75% 100% 75% 25% 50% 75% 100% • Exemplo 1, PR2 = FF • Exemplo 2, PR2 = 7F • Exemplo 3, PR2 = BF • Exemplo 4, PR2 = DF

PROGRAMAÇÃO PWM

5

110 25/04/2017

Comparação dos quatro primeiros exemplos

100h 80h 40h C0h 40h 20h 60h 80h C0h 30h 60h 90h E0h A8h 70h 38h

PROGRAMAÇÃO PWM

5

111 25/04/2017

Comparação dos exemplos anteriores

00h F a ix a p e rm it id a p a ra D C <9 :2 > 00h FFh 80h C0h E0h F0h F8h FCh P R 2 = 7 F h , 8 0 h p a s s o s 1 /2 d o m á x im o p e rí o d o P R 2 = B F h , C 0 h p a s s o s 3 /4 d o m á x im o p e rí o d o P R 2 = D F h , E 0 h p a s s o s 7 /8 d o m á x im o p e rí o d o P R 2 = E F h , F 0 h p a s s o s 1 5 /1 6 d o m á x im o p e rí o d o P R 2 = F 7 h , F 8 h p a s s o s 3 1 /3 2 d o m á x im o p e rí o d o P R 2 = F B h , F C h p a s s o s 6 3 /6 4 d o m á x im o p e rí o d o • Para DC%=100%, o valor de DC<9:2> é dado por PR2+1, em vermelho.

• Quanto maior o valor de PR2, maior é a faixa admissível para DC<9:2>, maior é a resolução analógica.

PROGRAMAÇÃO PWM

5

112 25/04/2017

Bits menos significativos

• Quando se trabalha com DC<9:2>, incorpora-se o erro decorrente de DC<1:0>=00b (reset default). • Nos exemplos apresentados, entretanto, as palavras

DC<9:0> empregadas possuem, todas, DC<1:0>=00b.

• Isto significa que não há erro incorporado ao se lidar, apenas, com DC<9:2>.

• Sendo este o caso, compensa, sempre que possível, criar o programa para oito bits, mais simples.

PROGRAMAÇÃO PWM

5

113 25/04/2017 DC% 10-bit DC<9:0> 0% - 0/4 000h 0000d 00_0000_0000b 25% - 1/4 0FEh 0254d 00_1111_1110b 50% - 2/4 1FCh 0508d 01_1111_1100b 75% - 3/4 2FAh 0762d 10_1111_1010b 100% - 4/4 3F8h 1016d 11_1111_1000b DC% 8-bit DC<9:2> CCPRxL 0% - 0/4 00,0h 000,0d 0000_0000,0b 25% - 1/4 3F,8h 063,5d 0011_1111,1b 50% - 2/4 7F,0h 127,0d 0111_1111,0b 75% - 3/4 BE,8h 190,5d 1011_1111,1b 100% - 4/4 FE,0h 254,0d 1111_1110,0b

Exemplo 8 – Quartas – PR2=FDh

Nove bits decisivos

O uso de DC<9:2> implica em erro. TMR2<7:0>configurado para 127/128 do máximo período

PROGRAMAÇÃO PWM

5

114 25/04/2017 DC% 10-bit DC<9:0> 0% - 0/4 000h 0000d 00_0000_0000b 25% - 1/4 0FFh 0255d 00_1111_1111b 50% - 2/4 1FEh 0510d 01_1111_1110b 75% - 3/4 2FDh 0765d 10_1111_1101b 100% - 4/4 3FCh 1020d 11-1111_1100b DC% 8-bit DC<9:2> CCPRxL 0% - 0/4 00,0h 000,00d 0000_0000,00b 25% - 1/4 3F,Ch 063,75d 0011_1111,11b 50% - 2/4 7F,8h 127,50d 0111_1111,10b 75% - 3/4 BF,4h 191,25d 1011_1111,01b 100% - 4/4 FF,0h 255,00d 1111_1111,00b

Exemplo 9 – Quartas – PR2=FEh

Dez bits decisivos

O uso de DC<9:2> implica em erro. TMR2<7:0>configurado para 255/256 do máximo período

(20)

115 25/04/2017

Limite para o aumento de PR2

• Nos exemplos 8 e 9, há erro no uso de DC<9:2>. • Isto se deve ao fato de que a quantidade de bits

decisivos em DC<9:0> é maior do que oito.

• Isto também quer dizer que nem todas as palavras DC<9:0> são divisíveis por quatro.

• Também significa que algumas palavras DC<9:2>, na forma exata, não são números inteiros.

• Esta situação não é recomendada.

• PR2+1 deve ser o maior valor possível e que seja divisível pelos intervalos.

• PR2+1 deve ser menor do que 100h.

116 25/04/2017

DC<9:2>, DC<9:1>, DC<9:0>

• Nos exemplos 1 a 7, se usa DC<9:2>, 8 bits. • No exemplo 8, se usa DC<9:1>, 9 bits. • No exemplo 9, se usa DC<9:0>, 10 bits.

PROGRAMAÇÃO PWM

5

117 25/04/2017

DC% 10-bit DC<9:0> valor real 0% - 0/3 000h 0000d 00_0000_0000b 0

33% - 1/3 155h 0341d 01_0101_0101b 341,3...

67% - 2/3 2ABh 0683d 10_1010_1011b 682,6...

100% - 3/3 400h 1024d 100_0000_0000b 1024

DC% 8-bit DC<9:2> CCPRxL valor real

0% - 0/3 00h 000d 0000_0000b 0 33% - 1/3 55h 085d 0101_0101b 85,3... 67% - 2/3 ABh 171d 1010_1011b 170,6... 100% - 3/3 100h 256d 1_0000_0000b 256

Exemplo 10 – Terças – PR2=FFh

1024 não é divisível por três

PROGRAMAÇÃO PWM

5

118 25/04/2017

• No slide anterior, há erros de aproximação decorrentes da divisão por três.

• Uma solução para esse problema é o uso de um valor divisível por três em PR2+1.

• Os valores de DC<1:0> nem sempre valem zero.

• Isto significa que há um pequeno erro no uso do DC<9:2>.

Exemplo 10 – Terças – PR2=FFh

PROGRAMAÇÃO PWM

5

119 25/04/2017 DC% 10-bit DC<9:0> 0% - 0/3 000h 0000d 00_0000_0000b 33% - 1/3 155h 0341d 01_0101_0101b 67% - 2/3 2AAh 0682d 10_1010_1010b 100% - 3/3 3FFh 1023d 11_1111_1111b

Exemplo 11 – Terças – 10 bits

1023 é divisível por três DC% 8-bit DC<9:2> CCPRxL 0% - 0/3 00,0h 000,00d 0000_0000,00b 33% - 1/3 58,4h 088,25d 0101_0101,01b 67% - 2/3 AA,8h 170,50d 1010_1010,10b 100% - 3/3 FF,Ch 255,75d 1111_1111,11b    D e z b its d e ci si vo s C á lcu lo d o P R 2 : M a is a d ia n te . PR2+1=FF,Ch?

PROGRAMAÇÃO PWM

5

120 25/04/2017

Exemplo 12 – Terças – PR2=FEh

DC% 10-bit DC<9:0> 0% - 0/3 000h 0000d 00_0000_0000b 33% - 1/3 154h 0340d 01_0101_0100b 67% - 2/3 2A8h 0680d 10_1010_1000b 100% - 3/3 3FCh 1020d 11_1111_1100b DC% 8-bit DC<9:2> CCPRxL 0% - 0/3 00h 000d 0000_0000b 33% - 1/3 55h 085d 0101_0101b 67% - 2/3 AAh 170d 1010_1010b 100% - 3/3 FFh 255d 1111_1111b PR2+1=FFh FFh/3=55h FFh*4=3FCh

Oito bits decisivos

(21)

PROGRAMAÇÃO PWM

5

121 25/04/2017

• A alteração de PR2 para FEh resolveu três problemas: • O dutty-cycle de 100% pôde ser obtido.

• Os valores percentuais são exatos, pois o ciclo é divisível por três.

• As palavras DC<9:0> empregadas possuem, todas, os dois bits menos significativos sempre em zero, não há erro incorporado ao se usar DC<9:2>.

Exemplo 12 – Terças – PR2=FEh

PROGRAMAÇÃO PWM

5

122 25/04/2017

• O valor escolhido para PR2+1 deve ser o máximo valor, que seja divisível pelo fator de divisibilidade empregado (meias, terças, quartas, etc). • Este é o valor de DC<9:2> para 100%.

Obtenção do máximo período – 8 bits

DC% 8-bit DC<9:2> CCPRxL 0% - 0/3 00h 000d 0000_0000b 33% - 1/3 55h 085d 0101_0101b 67% - 2/3 AAh 170d 1010_1010b 100% - 3/3 FFh 255d 1111_1111b DC% 8-bit DC<9:2> CCPRxL 0% - 0/4 00h 000d 0000_0000b 25% - 1/4 3Fh 063d 0011_1111b 50% - 2/4 7Eh 126d 0111_1110b 75% - 3/4 BDd 189d 1011_1101b 100% - 4/4 FCh 252d 1111_1100b P R 2 = F E h P R 2 = F B h

PROGRAMAÇÃO PWM

5

123 25/04/2017

• O valor escolhido para DC<9:0> para 100% deve ser o máximo valor, que seja divisível pelo fator de divisibilidade empregado (meias, terças, quartas, etc).

DC% 10-bit DC<9:0> 0% - 0/3 000h 0000d 00_0000_0000b 33% - 1/3 155h 0341d 01_0101_0101b 67% - 2/3 2AAh 0682d 10_1010_1010b 100% - 3/3 3FFh 1023d 11_1111_1111b DC% 10-bit DC<9:0> 0% - 0/4 000h 0000d 00_0000_0000b 25% - 1/4 0FFh 0255d 00_1111_1111b 50% - 2/4 1FEh 0510d 01_1111_1110b 75% - 3/4 2FDh 0765d 10_1111_1101b 100% - 4/4 3FCh 1020d 11-1111_1100b

Obtenção do máximo período – 10 bits

C á lcu lo d o P R 2 : M a is a d ia n te .

PROGRAMAÇÃO PWM

5

124 25/04/2017

Exemplo 13 – Meias – PR2=FFh

DC% 10-bit DC<9:0> 0% - 0/2 000h 0000d 00_0000_0000b 50% - 1/2 200h 0512d 10_0000_0000b 100% - 2/2 400h 1024d 100_0000_0000b DC% 8-bit DC<9:2> CCPRxL 0% - 0/2 00h 000d 0000_0000b 50% - 1/2 80h 128d 1000_0000b 100% - 2/2 100h 256d 1_0000_0000b

PROGRAMAÇÃO PWM

5

125 25/04/2017

Exemplo 14 – Meias – PR2=FDh

DC% 10-bit DC<9:0> 0% - 0/2 000h 0000d 00_0000_0000b 50% - 1/2 1FCh 0508d 01_1111_1100b 100% - 2/2 3F8h 1016d 11_1111_1000b DC% 8-bit DC<9:2> CCPRxL 0% - 0/2 00h 000d 0000_0000b 50% - 1/2 7Fh 127d 0111_1111b 100% - 2/2 FEh 254d 1111_1110b Oito bits decisivos PR2+1=FEh FEh/2=7Fh FEh*4=3F8h

PROGRAMAÇÃO PWM

5

126 25/04/2017

Exemplo 15 – Meias – 10 bits

DC% 10-bit DC<9:0> 0% - 0/2 000h 0000d 00_0000_0000b 50% - 1/2 1FFh 0511d 01_1111_1111b 100% - 2/2 3FEh 1022d 11_1111_1110b DC% 8-bit DC<9:2> CCPRxL 0% - 0/2 00,0h 000,00d 0000_0000,00b 50% - 1/2 7F,Ch 127,75d 0111_1111,11b 100% - 2/2 FE,8h 255,50d 1111_1111,10b Dez bits decisivos

  C á lcu lo d o P R 2 : M a is a d ia n te . PR2+1=FE,8h?

(22)

PR2+1=FFh FFh/5=51h FFh*4=3FCh

127 25/04/2017

Exemplo 16 – Quintas – PR2=FEh

DC% 10-bit DC<9:0> 0% - 0/5 000h 0000d 00_0000_0000b 20% - 1/5 0CCh 0204d 00_1100_1100b 40% - 2/5 198h 0408d 01_1001_1000b 60% - 3/5 264h 0612d 10_0110_0100b 80% - 4/5 330h 0816d 11_0011_0000b 100% - 5/5 3FCh 1020d 11_1111_1100b DC% 8-bit DC<9:2> CCPRxL 0% - 0/5 00h 000d 0000_0000b 20% - 1/5 33h 051d 0011_0011b 40% - 2/5 66h 102d 0110_0110b 60% - 3/5 99h 153d 1001_1001b 80% - 4/5 CCh 204d 1100_1100b 100% - 5/5 FFh 255d 1111_1111b O ito b its d e ci si vo s 128 25/04/2017

Exemplo 17 – Sextas – PR2=FBh

DC% 10-bit DC<9:0> 0% - 0/6 000h 0000d 00_0000_0000b 16,7% - 1/6 0A8h 0168d 00-1010_1000b 33,3% - 2/6 150h 0336d 01-0101_0000b 50% - 3/6 1F8h 0504d 01-1111_1000b 66,7% - 4/6 2A0h 0672d 10-1010_0000b 83,3% - 5/6 348h 0840d 11-0100_1000b 100% - 6/6 3F0h 1008d 11_1111_0000b DC% 8-bit DC<9:2> CCPRxL 0% - 0/6 00h 000d 0000_0000b 16,7% - 1/6 2Ah 042d 0010_1010b 33,3% - 2/6 54h 084d 0101_0100b 50% - 3/6 7Eh 126d 0111_1110b 66,7% - 4/6 A8h 168d 1010_1000b 83,3% - 5/6 D2h 210d 1101_0010b 100% - 6/6 FCh 252d 1111_1100b Se te b its d e ci si vo s PR2+1=FCh FCh/6=2Ah FCh*4=3F0h

PROGRAMAÇÃO PWM

5

129 25/04/2017

Exemplo 18 – Sextas – 10 bits

DC% 10-bit DC<9:0> (a) 0% - 0/6 000h 0000d 00_0000_0000b 16,7% - 1/6 0A9h 0169d 00_1010_1001b 33,3% - 2/6 152h 0338d 01_0101_0010b 50% - 3/6 1FBh 0507d 01_1111_1011b 66,7% - 4/6 2A4h 0676d 10_1010_0100b 83,3% - 5/6 34Dh 0845d 11_0100_1101b 100% - 6/6 3F6h 1014d 11_1111_0110b D e z b its d e ci si vo s DC% 10-bit DC<9:0> (b) 0% - 0/6 00,0h 000,00d 0000_0000_00b 16,7% - 1/6 2A,4h 042,25d 0010_1010,01b 33,3% - 2/6 54,8h 084,50d 0101_0100,10b 50% - 3/6 7E,Ch 126,75d 0111_1110,11b 66,7% - 4/6 A9,0h 169,00d 1010_1001,00b 83,3% - 5/6 D3,4h 211,25d 1101_0011,01b 100% - 6/6 FD,8h 253,50d 1111_1101,10b C á lcu lo d o P R 2 : M a is a d ia n te .      P R 2 + 1 = F D , 8 h ? No exemplo 17 eram 1008 passos.

PROGRAMAÇÃO PWM

5

130 25/04/2017 DC% 10-bit DC<9:0> (a) 0% - 0/6 000h 0000d 00_0000_0000b 16,7% - 1/6 0AAh 0170d 00_1010_1010b 33,3% - 2/6 154h 0340d 01_0101_0100b 50% - 3/6 1FEh 0510d 01_1111_1110b 66,7% - 4/6 2A8h 0680d 10_1010_1000b 83,3% - 5/6 352h 0850d 11_0101_0010b 100% - 6/6 3FCh 1020d 11_1111_1100b DC% 8-bit DC<9:2> CCPRxL 0% - 0/6 00,0h 000,0d 00000000,00b 16,7% - 1/6 2A,8h 042,5d 00101010,10b 33,3% - 2/6 55,0h 085,0d 01010101,00b 50% - 3/6 7F,8h 127,5d 01111111,10b 66,7% - 4/6 AA,0h 170,0d 10101010,00b 83,3% - 5/6 D4,8h 212,5d 11010100,10b 100% - 6/6 FF,0h 255,0d 11111111,00b N o ve b its d e ci si vo s

Exemplo 19 – Sextas – PR2=FEh

   No exemplo 17 eram 1008 passos. No exemplo 18 eram 1014 passos.

PROGRAMAÇÃO PWM

5

131 25/04/2017

Exemplo 20 – Sétimas – PR2=FBh

DC% 10-bit DC<9:0> 0% - 0/7 000h 0000d 00_0000_0000b 14,3% - 1/7 090h 0144d 00_1001_0000b 28,6% - 2/7 120h 0288d 01_0010_0000b 42,9% - 3/7 1B0h 0432d 01_1011_0000b 57,1% - 4/7 240h 0576d 10_0100_0000b 71,4% - 5/7 2D0h 0720d 10_1101_0000b 85,7% - 6/7 360h 0864d 11_0110_0000b 100% - 7/7 3F0h 1008d 11_1111_0000b DC% 8-bit DC<9:2> CCPRxL 0% - 0/7 00h 000d 0000_0000b 14,3% - 1/7 24h 036d 0010_0100b 28,6% - 2/7 48h 072d 0100_1000b 42,9% - 3/7 6Ch 108d 0110_1100b 57,1% - 4/7 90h 144d 1001_0000b 71,4% - 5/7 B4h 180d 1011_0100b 85,7% - 6/7 D8h 216d 1101_1000b 100% - 7/7 FCh 252d 1111_1100b Se is b its d e ci si vo s PR2+1=FCh FCh/7=24h FCh*4=3F0h

PROGRAMAÇÃO PWM

5

132 25/04/2017

Exemplo 21 – Sétimas – 10 bits

DC% 10-bit DC<9:0> 0% - 0/7 000h 0000d 00_0000_0000b 14,3% - 1/7 091h 0145d 00_1001_0001b 28,6% - 2/7 122h 0290d 01_0010_0010b 42,9% - 3/7 1B3h 0435d 01_1011_0011b 57,1% - 4/7 244h 0580d 10_0100_0100b 71,4% - 5/7 2D5h 0725d 10_1101_0101b 85,7% - 6/7 366h 0870d 11_0110_0110b 100% - 7/7 3F7h 1015d 11_1111_0111b DC% 8-bit DC<9:2> CCPRxL 0% - 0/7 00,0h 000,00d 0000_0000,00b 14,3% - 1/7 24,4h 036,25d 0010_0100,01b 28,6% - 2/7 48,8h 072,50d 0100_1000,10b 42,9% - 3/7 6C,Ch 108,75d 0110_1100,11b 57,1% - 4/7 91,0h 145,00d 1001_0001,00b 71,4% - 5/7 B5,4h 181,25d 1011_0101,01b 85,7% - 6/7 D9,8h 217,50d 1101_1001,10b 100% - 7/7 FD,Ch 253,75d 1111_1101,11b D e z b its d e ci si vo s       C á lcu lo d o P R 2 : M a is a d ia n te . P R 2 + 1 = F D , 8 h ? No exemplo 20 eram 1008 passos.

(23)

PROGRAMAÇÃO PWM

5

133 25/04/2017

Exemplo 22 – Sétimas – 10 bits

DC% 10-bit DC<9:0> 0% - 0/7 000h 0000d 00_0000_0000b 14,3% - 1/7 092h 0146d 00_1001_0010b 28,6% - 2/7 124h 0292d 01_0010_0100b 42,9% - 3/7 1B6h 0438d 01_1011_0110b 57,1% - 4/7 248h 0584d 10_0100_1000b 71,4% - 5/7 2DAh 0730d 10_1101_1010b 85,7% - 6/7 36Ch 0876d 11_0110_1100b 100% - 7/7 3FEh 1022d 11_1111_1110b DC% 8-bit DC<9:2> CCPRxL 0% - 0/7 00,0h 000,0d 00000000,0b 14,3% - 1/7 24,8h 036,5d 00100100,10b 28,6% - 2/7 49,0h 073,0d 01001001,00b 42,9% - 3/7 6D,8h 109,5d 01101101,10b 57,1% - 4/7 92,0h 146,0d 10010010,00b 71,4% - 5/7 B6,8h 182,5d 10110110,10b 85,7% - 6/7 DB,0h 219,0d 11011011,00b 100% - 7/7 FF,8h 255,5d 11111111,10b N o ve b its d e ci si vo s C á lcu lo d o P R 2 : M a is a d ia n te .     P R 2 + 1 = F F , 8 h ? No exemplo 20 eram 1008 passos. No exemplo 21 eram 1015 passos.

PROGRAMAÇÃO PWM

5

134 25/04/2017 DC% 10-bit DC<9:0> 0% - 0/8 000h 0000d 00_0000_0000b 12,5% - 1/8 080h 0128d 00_1000_0000b 25% - 2/8 100h 0256d 01_0000_0000b 37,5% - 3/8 180h 0384d 01_1000_0000b 50% - 4/8 200h 0512d 10_0000_0000b 62,5% - 5/8 280h 0640d 10_1000_0000b 75% - 6/8 300h 0768d 11_0000_0000b 87,5% - 7/8 380h 0896d 11_1000_0000b 100% - 8/8 400h 1024d 100_0000_0000b

Exemplo 23 – Oitavas – PR2=FFh

DC% 8-bit DC<9:2> CCPRxL 0% - 0/8 00h 000d 0000_0000b 12,5% - 1/8 20h 032d 0010_0000b 25% - 2/8 40h 064d 0100_0000b 37,5% - 3/8 60h 096d 0110_0000b 50% - 4/8 80h 128d 1000_0000b 62,5% - 5/8 A0h 160d 1010_0000b 75% - 6/8 C0h 192d 1100_0000b 87,5% - 7/8 E0h 224d 1110_0000b 100% - 8/8 100h 256d 1_0000_0000b T rê s b its d e ci si vo s

Máximo período.

PROGRAMAÇÃO PWM

5

135 25/04/2017 DC% 10-bit DC<9:0> 0% - 0/8 000h 0000d 00_0000_0000b 12,5% - 1/8 07Ch 0124d 00_0111_1100b 25% - 2/8 0F8h 0248d 00_1111_1000b 37,5% - 3/8 174h 0372d 01_0111_0100b 50% - 4/8 1F0h 0496d 01_1111_0000b 62,5% - 5/8 26Ch 0620d 10_0110_1100b 75% - 6/8 2E8h 0744d 10_1110_1000b 87,5% - 7/8 364h 0868d 11_0110_0100b 100% - 8/8 3E0h 0992d 11_1110_0000b

Exemplo 24 – Oitavas – PR2=F7h

DC% 8-bit DC<9:2> CCPRxL 0% - 0/8 00h 000d 0000_0000b 12,5% - 1/8 1Fh 031d 0001_1111b 25% - 2/8 3Eh 062d 0011_1110b 37,5% - 3/8 5Dh 093d 0101_1101b 50% - 4/8 7Ch 124d 0111_1100b 62,5% - 5/8 9Bh 155d 1001_1011b 75% - 6/8 BAh 186d 1011_1010b 87,5% - 7/8 D9h 217d 1101_1001b 100% - 8/8 F8h 248d 1111_1000b O ito b its d e cis iv o s 256 – 8 = 248

PROGRAMAÇÃO PWM

5

136 25/04/2017 DC% 10-bit DC<9:0> 0% - 0/8 000h 0000d 00_0000_0000b 12,5% - 1/8 07Eh 0126d 00_0111_1110b 25% - 2/8 0FCh 0252d 00_1111_1100b 37,5% - 3/8 17Ah 0378d 01_0111_1010b 50% - 4/8 1F8h 0504d 01_1111_1000b 62,5% - 5/8 276h 0630d 10_0111_0110b 75% - 6/8 2F4h 0756d 10_1111_0100b 87,5% - 7/8 372h 0882d 11_0111_0010b 100% - 8/8 3F0h 1008d 11_1111_0000b N o ve b its d e ci si vo s DC% 8-bit DC<9:2> CCPRxL 0% - 0/8 00,0h 000,0d 0000_0000,00b 12,5% - 1/8 1F,8h 031,5d 00_0111_1110b 25% - 2/8 3F,0h 063,0d 00_1111_1100b 37,5% - 3/8 5E,8h 094,5d 01_0111_1010b 50% - 4/8 7E,0h 126,0d 01_1111_1000b 62,5% - 5/8 9D,8h 157,5d 10_0111_0110b 75% - 6/8 BD,0h 189,0d 10_1111_0100b 87,5% - 7/8 DC,8h 220,5d 11_0111_0010b 100% - 8/8 FC,0h 252,0d 11_1111_0000b    

Exemplo 25 – Oitavas – PR2=FBh

No exemplo 24 eram 992 passos.

PROGRAMAÇÃO PWM

5

137 25/04/2017 DC% 8-bit DC<9:2> CCPRxL 0% - 0/8 00,0h 000,00d 0000_0000,00b 12,5% - 1/8 1F,Ch 031,75d 0001_1111,11b 25% - 2/8 3F,8h 063,50d 0011_1111,10b 37,5% - 3/8 5F,4h 095,25d 0101_1111,01b 50% - 4/8 7F,0h 127,00d 0111_1111,00b 62,5% - 5/8 9E,Ch 158,75d 1001_1110,11b 75% - 6/8 BE,8h 190,50d 1011_1110,10b 87,5% - 7/8 DE,4h 222,25d 1101_1110,01b 100% - 8/8 FE,0h 254,00d 1111_1110,00b DC% 10-bit DC<9:0> 0% - 0/8 000h 0000d 00_0000_0000b 12,5% - 1/8 07Fh 0127d 00_0111_1111b 25% - 2/8 0FEh 0254d 00_1111_1110b 37,5% - 3/8 17Dh 0381d 01_0111_1101b 50% - 4/8 1FCh 0508d 01_1111_1100b 62,5% - 5/8 27Bh 0635d 10_0111_1011b 75% - 6/8 2FAh 0762d 10_1111_1010b 87,5% - 7/8 379h 0889d 11_0111_1001b 100% - 8/8 3F8h 1016d 11_1111_1000b D e z b its d e ci si vo s

Exemplo 26 – Oitavas – PR2=FDh

      No exemplo 24 eram 992 passos. No exemplo 25 eram 1008 passos.

PROGRAMAÇÃO PWM

5

138 25/04/2017 DC% 8-bit DC<9:2> CCPRxL 0% - 0/9 00h 000d 00000000b 11% - 1/9 1Ch 028d 00011100b 22% - 2/9 38h 056d 00111000b 33% - 3/9 54h 084d 01010100b 44% - 4/9 70h 112d 01110000b 55% - 5/9 8Ch 140d 10001100b 66% - 6/9 A8h 168d 10101000b 77% - 7/9 C4h 196d 11000100b 88% - 8/9 E0h 224d 11100000b 100% - 9/9 FCh 252d 11111100b Se is b its d e ci si vo s DC% 10-bit DC<9:0> 0% - 0/9 000h 0000d 0000000000b 11% - 1/9 070h 0112d 0001110000b 22% - 2/9 0E0h 0224d 0011100000b 33% - 3/9 150h 0336d 0101010000b 44% - 4/9 1C0h 0448d 0111000000b 55% - 5/9 230h 0560d 1000110000b 66% - 6/9 2A0h 0672d 1010100000b 77% - 7/9 310h 0784d 1100010000b 88% - 8/9 380h 0896d 1110000000b 100% - 9/9 3F0h 1008d 1111110000b

Exemplo 27 – Nonas – PR2=FBh

(24)

139 25/04/2017 DC% 8-bit DC<9:2> CCPRxL 0% - 0/9 00,0h 000,00d 00000000,00b 11% - 1/9 1C,4h 028,25d 00011100,01b 22% - 2/9 38,8h 056,50d 00111000,10b 33% - 3/9 54,Ch 084,75d 01010100,11b 44% - 4/9 71,0h 113,00d 01110001,00b 55% - 5/9 8D,4h 141,25d 10001101,01b 66% - 6/9 A9,8h 169,50d 10101001,10b 77% - 7/9 C5,Ch 197,75d 11000101,11b 88% - 8/9 E2,0h 226,00d 11100010,00b 100% - 9/9 FE,4h 254,25d 11111110,01b DC% 10-bit DC<9:0> 0% - 0/9 000h 0000d 0000000000b 11% - 1/9 071h 0113d 0001110001b 22% - 2/9 0E2h 0226d 0011100010b 33% - 3/9 153h 0339d 0101010011b 44% - 4/9 1C4h 0452d 0111000100b 55% - 5/9 235h 0565d 1000110101b 66% - 6/9 2A6h 0678d 1010100110b 77% - 7/9 317h 0791d 1100010111b 88% - 8/9 388h 0904d 1110001000b 100% - 9/9 3F9h 1017d 1111111001b

Exemplo 28 – Nonas – 10 bits

D e z b its d e ci si vo s C á lcu lo d o P R 2 : M a is a d ia n te .        P R 2 + 1 = F E , 4 h ? No exemplo 27 eram 1008 passos. 140 25/04/2017

• Nos exemplos para meias, terças, quartas, quintas, sextas, sétimas, oitavas e nonas, a escolha do valor de PR2+1 correspondente ao máximo valor de oito bits divisível pelo fator de progressão permite a obtenção da mínima frequência PWM sem o uso de DC<1:0>. • Isto permite o uso do DC<9:2> sem nenhuma perda

de informação.

• Isto mostra a importância da escolha consciente do período PWM.

Uso eficiente do DC<9:2>

PROGRAMAÇÃO PWM

5

141 25/04/2017

• O cálculo correto de PR2+1 é fundamental para o uso do DC<9:2>.

• Uma forma eficiente de calcular PR2+1 é determinando o máximo divisor comum das subdivisões desejadas da máxima tensão média.

• Desta forma, lida-se com meios, terças, quartas, etc. • Se um DC% de 100% for desejado, PR2 deve ser menor

do que FFh e o DC para 100% é dado por PR2+1. • PR2+1 deve ser igual ao DC<9:2> equivalente a 100%.

Uso eficiente do DC<9:2>

PROGRAMAÇÃO PWM

5

142 25/04/2017

• 255 não é divisível por 2. • 254 é divisível por 2 (PR2 = FDh). • 254/2 = 127 = 7Fh

• DC<9:2> recebe múltiplos de 7Fh. Meias

• 255 é divisível por 3 (PR2 = FEh). • 255/3 = 85 = 55h

• DC<9:2> recebe múltiplos de 55h. Terças

• 255,254,253 não são divisíveis por 4. • 252 é divisível por 4 (PR2 = FBh). • 252/4 = 63 = 3Fh • DC<9:2> recebe múltiplos de 3Fh. Quartas

Uso eficiente do DC<9:2>

PROGRAMAÇÃO PWM

5

143 25/04/2017 0% - 0/8 00h 12,5% - 1/8 20h 25% - 2/8 40h 37,5% - 3/8 60h 50% - 4/8 80h 62,5% - 5/8 A0h 75% - 6/8 C0h 87,5% - 7/8 E0h 99,6% - 8/8 FFh 0% - 0/2 00h 50% - 1/2 80h 99,6% - 2/2 FFh 0% - 0/4 00h 25% - 1/4 40h 50% - 2/4 80h 75% - 3/4 C0h 99,6% - 4/4 FFh

Uso eficiente do DC<9:2>

• Em muitas aplicações, é possível lidar com um pequeno erro nos 100%. • Obtém-se o máximo período; PR2=FFh.

PROGRAMAÇÃO PWM

5

144 25/04/2017

• 255 é divisível por 5 (PR2 = FEh). • 255/5 = 51 = 33h

• DC<9:2> recebe múltiplos de 33h. Quintas

• 255,254,253 não são divisíveis por 6. • 252 é divisível por 6 (PR2 = FBh). • 252/6 = 42 = 2Ah

• DC<9:2> recebe múltiplos de 2Ah. Sextas

• 255,254,253 não são divisíveis por 7. • 252 é divisível por 7 (PR2 = FBh). • 252/7 = 36 = 24h

• DC<9:2> recebe múltiplos de 24h. Sétimas

(25)

PROGRAMAÇÃO PWM

5

145 25/04/2017 • 248 é divisível por 8 (PR2 = F7h). • 248/8 = 31 = 1Fh • DC<9:2> recebe múltiplos de 1Fh. Oitavas • 252 é divisível por 9 (PR2 = FBh). • 252/9 = 28 = 1Ch • DC<9:2> recebe múltiplos de 1Ch. Nonas • 250 é divisível por 10 (PR2 = F9h). • 250/10 = 25 = 19h • DC<9:2> recebe múltiplos de 19h. Décimas

Uso eficiente do DC<9:2>

PROGRAMAÇÃO PWM

5

146 25/04/2017 1/2’s 1/3’s 1/4’s 1/5’s 1/6’s 1/7’s 1/8’s 1/9’s 1/10’s 1/11’s 1/12’s 0 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 1 7Fh 55h 3Fh 33h 2Ah 24h 1Fh 1Ch 19h 17h 15h 2 FEh AAh 7Eh 66h 54h 48h 3Eh 38h 32h 2Eh 2Ah 3 FFh BDh 99h 7Eh 6Ch 5Dh 54h 4Bh 45h 3Fh 4 FCh CCh A8h 90h 7Ch 70h 64h 5Ch 54h

5 FFh D2h B4h 9Bh 8Ch 7Dh 73h 69h

6 FCh D8h BAh A8h 96h 8Ah 7Eh

7 FCh D9h C4h AFh A1h 93h 8 F8h E0h C8h B8h A8h 9 FCh E1h CFh BDh 10 FAh E6h D2h 11 FDh E7h 12 FCh PR2 FDh FEh FBh FEh FBh FBh F7h FBh F9h FCh FBh • Em verde, os fatores multiplicativos.

• Em rosa, os valores máximos (100%).

Uso eficiente do DC<9:2>

PROGRAMAÇÃO PWM

5

147 25/04/2017 1/2’s 1/3’s 1/4’s 1/5’s 1/6’s 1/7’s 1/8’s 1/9’s 1/10’s 1/11’s 1/12’s 0 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 1 7Fh 55h 3Fh 33h 2Ah 24h 1Fh 1Ch 19h 17h 15h n FEh FFh FCh FFh FCh FCh F8h FCh FAh FDh FCh PR2 FDh FEh FBh FEh FBh FBh F7h FBh F9h FCh FBh

• Em verde, os fatores multiplicativos. • Em rosa, os valores máximos (100%).

1/13’s 1/14’s 1/15’s 1/16’s 1/17’s 1/18’s 1/19’s 1/20’s 1/21’s 1/22’s 1/23’s

0 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 1 13h 12h 11h 0Fh 0Fh 0Eh 0Dh 0Ch 0Ch 0Bh 0Bh n F7h FCh FFh F0h FFh FCh F7h F0h FCh F2h FDh PR2 F6h FBh FEh EFh FEh FBh F6h EFh FBh F1h FCh

Uso eficiente do DC<9:2>

PROGRAMAÇÃO PWM

5

148 25/04/2017 1/2’s 1/8’s 1/16’s 1/32’s 1/64’s 1/128’s 1/256’s 0 00h 00h 00h 00h 00h 00h 00h 1 7Fh 1Fh 0Fh 07h 03h 01h 01h n FEh F8h F0h E0h C0h 80h 100h PR2 FDh F7h EFh DFh BFh 7Fh FFh

• Em verde, os fatores multiplicativos. • Em rosa, os valores máximos (100%).

Uso eficiente do DC<9:2>

PROGRAMAÇÃO PWM

5

149 25/04/2017

DC<9:2> – Exemplos

PR2 Máx DC<9:0> Exemplo Meias FDh 3F8h 1016d 14 Terças FEh 3FCh 1020d 12 Quartas FBh 3F0h 1008d 07 Quintas FEh 3FCh 1020d 16 Sextas FBh 3F0h 1008d 17 Sétimas FBh 3F0h 1008d 20 Oitavas F7h 3E0h 0992d 24 Nonas FBh 3F0h 1008d 27

Cálculos com 8 bits

1/2’s 1/3’s 1/4’s 1/5’s 1/6’s 1/7’s 1/8’s 1/9’s 00h 00h 00h 00h 00h 00h 00h 00h 7Fh 55h 3Fh 33h 2Ah 24h 1Fh 1Ch FEh AAh 7Eh 66h 54h 48h 3Eh 38h FFh BDh 99h 7Eh 6Ch 5Dh 54h FCh CCh A8h 90h 7Ch 70h FFh D2h B4h 9Bh 8Ch FCh D8h BAh A8h FCh D9h C4h F8h E0h FCh

PROGRAMAÇÃO PWM

5

150 25/04/2017

DC<9:0> – Exemplos

PR2 Máx DC<9:0> Exemplo Quartas FEh 3FCh 1020d 09 Quintas FEh 3FCh 1020d 16 Sextas FEh 3FCh 1020d 19 Oitavas FDh 3F8h 1016d 26 Cálculos com 10 bits

• No caso das quintas, o máximo período usando 10

bits coincide com o máximo período usando 8 bits.

1/4’s 1/5’s 1/6’s 1/8’s 000h 000h 000h 000h 0FFh 0CCh 0AAh 07Fh 1FEh 198h 154h 0FEh 2FDh 264h 1FEh 17Dh 3FCh 330h 2A8h 1FCh 3FCh 352h 27Bh 3FCh 2FAh 379h 3F8h C á lcu lo d o P R 2 : M a is a d ia n te .

(26)

151 25/04/2017

• Nos casos das quartas, sextas e oitavas, a coincidência com 8 bits não acontece, o uso do máximo período requer mais de 8 bits.

• Nestes casos, o uso do máximo período requer um valor de PR2+1 determinado pelo DC<9:0>. • Esse valor de PR2+1 é superior ao usado em 8 bits. • A determinação de PR2 é possível porque o

máximo DC<9:0> é divisível por quatro.

DC<9:0> – Quartas, sextas e oitavas

PR2 Máx DC<9:0> Exemplo Quartas FEh 3FCh 1020d 09 Sextas FEh 3FCh 1020d 19 Oitavas FDh 3F8h 1016d 26 C á lcu lo d o P R 2 : M a is a d ia n te . 152 25/04/2017

DC<9:0> – Quartas, sextas e oitavas

PR2 Máx DC<9:0> Exemplo Quartas FBh 3F0h 1008d 07

Sextas FBh 3F0h 1008d 17 Oitavas F7h 3E0h 0992d 24

Cálculos com 8 bits

PR2 Máx DC<9:0> Exemplo Quartas FEh 3FCh 1020d 09

Sextas FEh 3FCh 1020d 19 Oitavas FDh 3F8h 1016d 26 Cálculos com 10 bits

0/4 000h 0000d 00_0000_0000b 1/4 0FFh 0255d 00_1111_1111b 2/4 1FEh 0510d 01_1111_1110b 3/4 2FDh 0765d 10_1111_1101b 4/4 3FCh 1020d 11-1111_1100b 0/6 000h 0000d 00_0000_0000b 1/6 0AAh 0170d 00_1010_1010b 2/6 154h 0340d 01_0101_0100b 3/6 1FEh 0510d 01_1111_1110b 4/6 2A8h 0680d 10_1010_1000b 5/6 352h 0850d 11_0101_0010b 6/6 3FCh 1020d 11_1111_1100b 0/8 000h 0000d 00_0000_0000b 1/8 07Fh 0127d 00_0111_1111b 2/8 0FEh 0254d 00_1111_1110b 3/8 17Dh 0381d 01_0111_1101b 4/8 1FCh 0508d 01_1111_1100b 5/8 27Bh 0635d 10_0111_1011b 6/8 2FAh 0762d 10_1111_1010b 7/8 379h 0889d 11_0111_1001b 8/8 3F8h 1016d 11_1111_1000b

PROGRAMAÇÃO PWM

5

• 1020 é o máximo valor divisível por 4 abaixo de 1024. • 1020 é o máximo valor divisível por 5 abaixo de 1024. • 1020 é o máximo valor divisível por 6 abaixo de 1024.

153 25/04/2017

DC<9:0> – Quartas, quintas e sextas

• Passos10= 1020d.

• Passos10= 3FCh.

• No caso das quintas, o máximo período usando 10

bits coincide com o máximo período usando 8 bits.

PROGRAMAÇÃO PWM

5

154 25/04/2017

DC<9:0> – Quartas, quintas e sextas

PROGRAMAÇÃO PWM

5

155 25/04/2017 0/4 000h 0000d 00_0000_0000b 1/4 0FFh 0255d 00_1111_1111b 2/4 1FEh 0510d 01_1111_1110b 3/4 2FDh 0765d 10_1111_1101b 4/4 3FCh 1020d 11-1111_1100b 0/6 000h 0000d 00_0000_0000b 1/6 0AAh 0170d 00_1010_1010b 2/6 154h 0340d 01_0101_0100b 3/6 1FEh 0510d 01_1111_1110b 4/6 2A8h 0680d 10_1010_1000b 5/6 352h 0850d 11_0101_0010b 6/6 3FCh 1020d 11_1111_1100b 0/5 000h 0000d 00_0000_0000b 1/5 0CCh 0204d 00_1100_1100b 2/5 198h 0408d 01_1001_1000b 3/5 264h 0612d 10_0110_0100b 4/5 330h 0816d 11_0011_0000b 5/5 3FCh 1020d 11_1111_1100b

DC<9:0> – Quartas, quintas e sextas

PROGRAMAÇÃO PWM

5

156 25/04/2017 3FFh 3FEh 3FDh FFh 3FCh 00h 000h 004h 008h 01h 02h

TMR2<9:0>

TMR2<7:0>

03h 00Ch FEh 3FBh 3FAh 3F9h 3F8h DC<9:0>=3FCh

(27)

PROGRAMAÇÃO PWM

5

157 25/04/2017 PR2 Máx DC<9:0> Exemplo Meias ? 3FEh 1022d 15 Terças ? 3FFh 1023d 11 Quartas FEh 3FCh 1020d 09 Quintas FEh 3FCh 1020d 16 Sextas FEh 3FCh 1020d 19 Sétimas ? 3FEh 1022d 22 Oitavas FDh 3F8h 1016d 26 Nonas ? 3F9h 1017d 28 Cálculos com 10 bits

DC<9:0> – Meias, terças, sétimas e nonas

PROGRAMAÇÃO PWM

5

158 25/04/2017

• Nos casos das meias, terças, sétimas e nonas, o máximo DC<9:0> não é divisível por quatro.

• Como obter o valor de PR2?

Máx DC<9:0> Exemplo PR2+1 Meias 3FEh 1022d 15 255,5 Terças 3FFh 1023d 11 255,75 Sétimas 3FEh 1022d 22 255,5 Nonas 3F9h 1017d 28 254,25 0/9 000h 0000d 0000000000b 1/9 071h 0113d 0001110001b 2/9 0E2h 0226d 0011100010b 3/9 153h 0339d 0101010011b 4/9 1C4h 0452d 0111000100b 5/9 235h 0565d 1000110101b 6/9 2A6h 0678d 1010100110b 7/9 317h 0791d 1100010111b 8/9 388h 0904d 1110001000b 9/9 3F9h 1017d 1111111001b 0/7 000h 0000d 0000000000b 1/7 092h 0146d 0010010010b 2/7 124h 0292d 0100100100b 3/7 1B6h 0438d 0110110110b 4/7 248h 0584d 1001001000b 5/7 2DAh 0730d 1011011010b 6/7 36Ch 0876d 1101101100b 7/7 3FEh 1022d 1111111110b 0/2 000h 0000d 0000000000b 1/2 1FFh 0511d 0111111111b 2/2 3FEh 1022d 1111111110b 0/3 000h 0000d 0000000000b 1/3 155h 0341d 0101010101b 2/3 2AAh 0682d 1010101010b 3/3 3FFh 1023d 1111111111b

DC<9:0> – Meias, terças, sétimas e nonas

PROGRAMAÇÃO PWM

5

• 1022 é o máximo valor divisível por 2 abaixo de 1024. • 1023 é o máximo valor divisível por 3 abaixo de 1024. • 1022 é o máximo valor divisível por 7 abaixo de 1024. • 1017 é o máximo valor divisível por 9 abaixo de 1024.

159 25/04/2017 0/9 000h 0000d 0000000000b 1/9 071h 0113d 0001110001b 2/9 0E2h 0226d 0011100010b 3/9 153h 0339d 0101010011b 4/9 1C4h 0452d 0111000100b 5/9 235h 0565d 1000110101b 6/9 2A6h 0678d 1010100110b 7/9 317h 0791d 1100010111b 8/9 388h 0904d 1110001000b 9/9 3F9h 1017d 1111111001b 0/7 000h 0000d 0000000000b 1/7 092h 0146d 0010010010b 2/7 124h 0292d 0100100100b 3/7 1B6h 0438d 0110110110b 4/7 248h 0584d 1001001000b 5/7 2DAh 0730d 1011011010b 6/7 36Ch 0876d 1101101100b 7/7 3FEh 1022d 1111111110b 0/2 000h 0000d 0000000000b 1/2 1FFh 0511d 0111111111b 2/2 3FEh 1022d 1111111110b 0/3 000h 0000d 0000000000b 1/3 155h 0341d 0101010101b 2/3 2AAh 0682d 1010101010b 3/3 3FFh 1023d 1111111111b

DC<9:0> – Meias, terças, sétimas e nonas

PROGRAMAÇÃO PWM

5

160 25/04/2017 • Para sétimas, PR2 = 254d ou PR2 = 255d?

DC<9:0> – Sétimas

PROGRAMAÇÃO PWM

5

161 25/04/2017 • Se PR2 = FFh, o TMR2<9:0> conta até 3FFh. • O match para DC%=7/7 ocorre em TMR2<9:0> =

3FEh(vide tabela).

• Nos dois últimos passos do TMR2<9:0>, PWM=0 (3FEh e 3FFh). • É impossível obter DC%=100% (7/7). • Teríamos, ao invés de DC%= 100%, DC%99,8046875%.

DC<9:0> – Sétimas

PROGRAMAÇÃO PWM

5

DC<9:0> – Sétimas

162 25/04/2017 3FFh 3FEh 3FDh FFh 3FCh 00h 000h 004h 008h 01h 02h

TMR2<9:0>

TMR2<7:0>

03h 00Ch FEh 3FBh 3FAh 3F9h 3F8h DC<9:0>=3FEh match t PWM

Referências

Documentos relacionados

O trabalho de Ziul já teve destaque na mídia nacional diversas vezes, a exemplo da revista ‘Guitar Player’ brasileira (junho de 2010), a revista virtual GuitarLoad (janeiro de 2011),

dispõe sobre a organização e o funcionamento da Câmara, a ser mantida por esta ORDEM, resolve dar ciência aos Advogados, que estejam devidamente registrados e

a escola Maalelplo 4o Baqalra Sexo masculino Preliminares Bocaina, bairro Ferreiras, bairro Provisória Boquira, villa Sexo feminino Preliminar Boquira, villa Mixta

A infecção leva a formas sintomáticas em até 70% dos infectados, sendo suas formas clínicas, nos pacientes sintomáticos, divididas em três fases: aguda ou febril, com duração de

Entre os assuntos que podiam provocar avaliações consideradas “erradas” pelos integralistas estavam: a relação entre o integralismo e o fascismo; a questão do

Os resultados indicam: (a) baixa utilização de referências que abordem as teorias da contabilidade gerencial, baixa incidência de referências a artigos publicados em

No adensamento manual, a primeira camada deve ser atravessada em toda a sua espessura, quando adensada com a haste, evitando-se golpear a base do molde. Os golpes devem

Outro ponto crítico para o fechamento controlado de disjuntores de transformadores de potência sem carga é que o fluxo prospectivo criado pela tensão no instante do fechamento