5 Portas de comunicação 2 - ufsj.edu.br - PB... · • Diferentemente do módulo PWM, este PWM...
-
Upload
phungtuyen -
Category
Documents
-
view
237 -
download
0
Transcript of 5 Portas de comunicação 2 - ufsj.edu.br - PB... · • Diferentemente do módulo PWM, este PWM...
25/04/2017
1
125/04/2017
Parte 5PORTAS DE COMUNICAÇÃO
225/04/2017
1. COMPARE 00 E 012. COMPARE 10 E 113. CAPTURE4. PSP5. COMUNICAÇÃO SERIAL6. SPI™ – PIC16F877
COMPARE 00 E 011
325/04/2017
COMPARE 00 E 01
COMPARE 00 E 011Modos de operação
• Na configuração PWM-PWM, os módulosoperam à mesma frequência, por TMR2<9:0>.
• Em configurações sem PWM, os módulosoperam à mesma frequência, por TMR1<15:0>.
• Em conjunto com capture ou compare, não háinteração, pois usam temporizadores diferentes.
• Em capture ou compare, TMR1 deve estar nomodo síncrono – T1CON<T1SYNC> = 0.
425/04/2017
COMPARE 00 E 011
CCP2CCP1
525/04/2017
Multiplexação
Compare
• Nos modos 00 e 01, os pinosdo módulo devem serconfigurados como saída.
• TRISC<1> = 0 Compare 2.• TRISC<2> = 0 Compare 1.• Nos modos 10 e 11, os pinos
são usados como PORTC.
Pinagem na PIC
COMPARE 00 E 011
• Compare: CCPRx<15:0> é comparado com TMR1<15:0>.• Quando a igualdade é obtida, ocorre algum evento pré-
estabelecido.
Comparador
625/04/2017
25/04/2017
2
COMPARE 00 E 011
• O comparador tem ação instantânea.• Da saída do comparador até o pino de saída
CCPx, não há nenhum elemento de memória.• A ação no pino CCPx é instantânea.• A ação ocorre logo no início do passo de
contagem onde a coincidência acontece.• O FF RS é o mesmo do circuito PWM.
725/04/2017
ComparadorCOMPARE 00 E 011
825/04/2017
<CCPxM1:CCPxM0> Evento
00 Inicia CCPx em 0 e leva a 1 quando ocorre a coincidência.
01 Inicia CCPx em 1 e leva a 0 quando ocorre a coincidência.
10 Não afeta a saída CCPx.CCPxIF = 1 na coincidência.
11 Não afeta CCPx. Modo gatilho.CCPxIF = 1 na coincidência.
reset default
Modos de operaçãoCCP1CON/CCP2CON 017h/01Dh
1 0
COMPARE 00 E 011Seleção da saída – Modos 00 e 01
925/04/2017 Tris bit
Pino 16 ou 17
Output
Input1-bit21MUX
COMPARE
PWM
Seleção – CCPxM2
FFRS
1-bit21MUX
Seleção – CCPxM2
COMPARE
PWM
R
S
CAPTURE01
01
COMPARE 00 E 011
1025/04/2017
1-bit21MUX
PWM
COMPARE
FFRS
1-bit21MUX
PWM
COMPARE
<CCPxM1><CCPxM0>
Controle de inversão – Modos 00 e 01
COMPARE 00 E 011
1125/04/2017
• O módulo Compare age como um controlador PWM.• Diferentemente do módulo PWM, este PWM não
possui controle de frequência ou de período.• Diferentemente do módulo PWM, este PWM possui
resolução de 16 bits, não podendo operar emresolução menor.
Modos 00 e 01COMPARE 00 E 011
1225/04/2017
Modos 00 e 01
• TOSC: Período do relógio.• TCY: Período de instrução.• TSTEP: Tempo do passo de contagem.• TRAMP: Tempo de uma contagem completa.
25/04/2017
3
COMPARE 00 E 011
1325/04/2017
Modos 00 e 01
FFFFh
t0000h
T
COMPARE 00 E 011
1425/04/2017
Modos 00 e 01Válido para módulos
PWM e Compare
Módulo Compare
Módulo Compare
Módulo PWM em 8 bits
Módulo PWM em 10 bits
COMPARE 00 E 011
1525/04/2017
Modo 01• CCPRx<15:0> determina o DC%.• Semelhante ao modo PWM do módulo CCPx.• Quando TMR1<15:0> = CCPRx<15:0> a
saída Compare já assume valor zero.• O dutty-cycle é diretamente proporcional aCCPRx<15:0>.
CCPRx<15:0>
FFFFh
01
CCPRxt
t0000h
COMPARE 00 E 011
1625/04/2017
• Não é possível obter 100%.
CCPRx<15:0> DC%0000h 0%4000h 25%8000h 50%C000h 75%FFFFh 99%10000h 100%
Modo 01
COMPARE 00 E 011
1725/04/2017
CCPRx = 0000h CCPRx = FFFFh
Modo 01COMPARE 00 E 011
1825/04/2017
Modo 01• É possível usar o PWM do
módulo Compare no modo 01 emconjunto com o conversor A/D.• ADRESH CCPRxH
• ADRESL CCPRxL
Vide exemplos
25/04/2017
4
COMPARE 00 E 011
1925/04/2017
Modo 00• Reset default.• Semelhante ao modo 01, mas invertido.• Quando TMR1<15:0> = CCPRx<15:0> a
saída Compare já assume valor um.• O dutty-cycle é diretamente proporcional aFFFFh - CCPRx<15:0>.
CCPRx<15:0>
FFFFh
10
CCPxt
t0000h
COMPARE 00 E 011
2025/04/2017
• Não é possível obter 0%.
Modo 00
CCPRx<15:0> DC%0000h 100%4000h 75%8000h 50%C000h 25%FFFFh 0,001%10000h 0%
COMPARE 00 E 011
2125/04/2017
Modo 00COMPARE 00 E 011
2225/04/2017
CCPRx = 0000h CCPRx = FFFFh
Modo 00 – Máximo e mínimo
COMPARE 00 E 011
2325/04/2017
Modo 00
• Se o cálculo do dutty-cycle ou do CCPRx<15:0>no modo 00 parecerem muito difíceis, é possívelfazer o cálculo para o modo 01 e converter para omodo 00.
• DC%00 = 100% - DC%01
• CCPRx<15:0>00 = 10000h - CCPRx<15:0>01• CCPRx<15:0>00 = 216 - CCPRx<15:0>01
Vide exemplos
COMPARE 10 E 112
2425/04/2017
COMPARE 10 E 11
25/04/2017
5
COMPARE 10 E 112
2525/04/2017
• <CCPxM1:CCPxM0> = 11b
• Trigger Special Event.• TMR1 é reiniciado.• CCPRx<15:0> comporta-se como um
period register de 16 bits para o TMR1.• Diferentemente do módulo PWM, este
controlador de período não permite ocontrole do dutty-cycle.
• Não utiliza o pino (16 ou 17), que éatribuído a PORTC.
Modo gatilho – 11
PORTC
COMPARE 10 E 112
2625/04/2017
Modo gatilho – Reset
• Como a reiniciação em TMR1<15:0> não se deve aum overflow, o flag de sinalização de overflow deTMR1<15:0> (PIR1<0>, TMR1IF) não é acionado.
• No caso de CCPRx<15:0>=FFFFh, como existeoverflow, então o flag de sinalização de overflow deTMR1<15:0> (PIR1<0>, TMR1IF) é acionado.
• Se CCPRx<15:0>≠FFFFh, este flag não pode serutilizado pois não será acionado.
COMPARE 10 E 112
2725/04/2017
Modo gatilho – Conversão A/D
• O gatilho, além de reiniciar TMR1<15:0>, inicia umaconversão A/D, caso o conversor esteja habilitado.
• Isto permite a aquisição de dados em intervalos regulares.• Aplicações como áudio e vídeo requerem uma taxa de
amostragem (em Hz) constante.• O gatilho pode ser usado como um gerador de relógio
para a entrada analógica.• Este gatilho para a conversão A/D somente está
disponível no módulo CCP2, está ausente no CCP1.
COMPARE 10 E 112
2825/04/2017
Modo gatilho – Controle do período de TMR1• CCPRx: Period Register.• 16 bits (0000h a FFFFh).• CCPRx representa o último valor da contagem.• O comparador gera um reset na contagem.• O comparador verifica se TMR1 é igual a CCPRx.• Reset: TMR1<15:0> = CCPRx<15:0>.• O reset é realizado no próximo passo de contagem, e isso
pode demorar vários TCY, dependendo do prescaler ratio.• O valor de CCPRx está incluído na contagem (reset síncrono).
COMPARE 10 E 112
2925/04/2017
Modo gatilho – Controle do período de TMR1
16-bit
16-bit
16-bit
COMPARE 10 E 112
3025/04/2017
• Sem CCPRx, TMR1 conta como qualquer outro contador.• Ao atingir o valor máximo (FFFFh), um reset é dado no
próximo passo de contagem, respeitando o prescaler.• Esta situação é obtida configurando CCPRx = FFFFh.
FFFFh
t
Modo gatilho – Controle do período de TMR1
25/04/2017
6
COMPARE 10 E 112
3125/04/2017
CCPRx<15:0>FFFFh
0000hCCPRx<15:0>
t
t
• A linha inclinada representa ovalor equivalente a TMR1<15:0>.
Modo gatilho – Controle do período de TMR1COMPARE 10 E 112
3225/04/2017
CCPRx<15:0> = FFFFh
CCPRx<15:0> < FFFFh
TMÁX
T
t
t
Modo gatilho – Controle do período de TMR1
COMPARE 10 E 112
t
t
t
CCPRx<15:0> = FFFFh
CCPRx<15:0> = 7FFFh
CCPRx<15:0> = 3FFFh
3325/04/2017
Período máximo
Metade do período máximo
Um quarto do período
máximo
216 passos
215 passos
214 passos
Modo gatilho – Controle do período de TMR1COMPARE 10 E 112
3425/04/2017
• Como os intervalos de contagem são regulares, arelação entre o período e CCPRx<15:0>+1 é linear.
• Configurando CCPRx = 0000h, não há contagem,TMR1 = 0000h sempre.
• Configurando CCPRx = FFFFh, não há ação do CCPRx.• O valor dado por CCPRx<15:0> está incluído na
contagem.• A quantidade de passos de contagem é dada porCCPRx<15:0>+1.
Modo gatilho – Controle do período de TMR1
COMPARE 10 E 112
3525/04/2017
• Se o TMR1 prescaler ratio for de 1:1, o reset é executadono próximo TCY, que é o próximo passo de contagem.
• Se o TMR1 prescaler ratio for 1:2, 1:4 ou 1:8, o passo decontagem contém 2, 4 ou 8 TCY’s, respectivamente.
• O reset ocorre no próximo passo de contagem após acoincidência e não, necessariamente, no próximo TCY.
• Tal como ocorre no TMR2, o prescaler ratio atua,também, no relógio do comparador e do circuito de reset.
<T1CKPS1:T1CKPS0> Ratio
00 1:101 1:210 1:411 1:8
Modo gatilho – Controle do período de TMR1COMPARE 10 E 112
3625/04/2017
Modo gatilho – Controle do período de TMR1
0000h
CCPPRx<15:0>Match
Reset
TCY
t
TSTEP
Prescaler
Exemplo para prescaler ratio = 1:4
<T1CKPS1:T1CKPS0> Ratio
00 1:101 1:210 1:411 1:8
25/04/2017
7
COMPARE 10 E 112
3725/04/2017
• TOSC: Período do relógio.• TCY: Período de instrução.• TSTEP: Tempo do passo de contagem.• TRAMP: Tempo de uma contagem completa.
Modo gatilho – Controle do período de TMR1COMPARE 10 E 112
3825/04/2017
Modo gatilho – Controle do período de TMR1
COMPARE 10 E 112
3925/04/2017
Reset default: CCPRx = ffffhModo gatilho – Controle do período de TMR1
COMPARE 10 E 112
4025/04/2017
16-bitCOMP Bit set
CCPRxIF
16-bitTMR1
0
15
16-bitCCPRx
0
15
Reset
Modo gatilho – Controle do período de TMR1
COMPARE 10 E 112
4125/04/2017
CCPRx<15:0Ratio 1:XX > 1
t
CCPRx<15:0>
Ratio 1:1
t
T
<T1CKPS1:T1CKPS0> Ratio
00 1:101 1:210 1:411 1:8
Modo gatilho – Controle do período de TMR1
TRAMP
Efeito do prescaler
COMPARE 10 E 112
4225/04/2017
16-bit
16-bit
16-bit
Modo gatilho – Controle do período de TMR1
25/04/2017
8
COMPARE 10 E 112
4325/04/2017
• fOSC influencia no período.• CCPRx influencia no período.• Prescaler ratio influencia no período.
Modo gatilho – Controle do período de TMR1
• fOSC TRAMP
• TOSC TRAMP linearmente• Presc. TRAMP linearmente• CCPRx+1 TRAMP linearmente
COMPARE 10 E 112
4425/04/2017
Modo gatilho – Controle do período de TMR1
1. Desligar o TMR1.2. Desligar o CCP.3. Zerar o TMR1.4. Alterar a palavra.5. Ligar o CCP.6. Ligar o TMR1.
• O módulo PWM utiliza um holdingregister a fim de que a palavraDC<9:0> não sofra alteraçãodurante o período de TMR2.
• A função gatilho do módulo Comparenão possui um holding register.
• A palavra de comparação não podeser alterada durante o período.
• Em caso de necessidade dealteração, é preciso:
Nã Vide exemplos
COMPARE 10 E 112
4525/04/2017
Modo 10
• Software interrupt mode.• Não afeta a saída CCPx.• CCPxIF = 1 na coincidência.• Útil quando se deseja que uma
determinada rotina seja executada emintervalos regulares, interrompendo aexecução normal do programa.
• Útil quando se aplica controle PI, PD ouPID, necessitando da derivada temporalou da integral temporal da função.
COMPARE 10 E 112
4625/04/2017
Compare – Interrupção• A comutação do pino de saída (00 e 01) ou a
reiniciação de TMR1 (11) ativa uma interrupção.
• PIR1: Peripheral Interrupts Bits 1.• PIR1<2>, CCP1IF: CCP1 Interrupt Flag Bit.• PIR2<0>, CCP2IF: CCP2 Interrupt Flag Bit.
• 0: Não houve coincidência.• 1: Houve coincidência (TMR2IF não retorna a zero automaticamente).
• PIE1: Peripheral Interrupts Enable Bits.• PIE1<2>, CCP1IE: CCP1 Interrupt Enable Bit.• PIE2<0>, CCP2IE: CCP2 Interrupt Enable Bit.
• 0: CCPxIF desabilitado (reset default).• 1: CCPxIF habilitado.
COMPARE 10 E 112
4725/04/2017
Comparação
Recurso Compare00 ou 01
MóduloPWM
CompareGatilho
Controle da frequência Não Sim
8 bitsSim
16 bitsControle do dutty-cycle
Sim16 bits
Sim10 bits Não
CAPTURE3
CAPTURE
4825/04/2017
25/04/2017
9
CAPTURE3
CCP2CCP1
4925/04/2017
Multiplexação
Capture
• Os pinos do módulo devem serconfigurados como entrada.
• TRISC<1> = 1 Capture 2.• TRISC<2> = 1 Capture 1.
Pinagem na PIC
CAPTURE3
• Capture: CCPRx captura o valor de TMR1<15:0>.• TMR1H CCPRxH
• TMR1L CCPRxL
• A captura ocorre durante algum evento pré-estabelecido.• O evento é obtido nas entradas CCPx.• Essa cópia é feita no mesmo TCY, isto é, todos os dois
bytes de CCPR são gravados simultaneamente, pois estacópia não é efetuada pela ULA, não usa o 8-bit data bus.
• Por meio do programa, esta cópia não é possível; cadabyte de CCPR precisa ser gravado em um períodoseparado.
Efeito da captura
5025/04/2017
CAPTURE3Blocos funcionais
5125/04/2017
<T1CKPS1:T1CKPS0> Ratio
00 1:101 1:210 1:411 1:8
CAPTURE3Configurações
5225/04/2017
<CCPxM1:CCPxM0> Evento no pino CCPx
00 Borda de descida01 Borda de subida10 Cada 4 bordas de subida11 Cada 16 bordas de subida
reset default
• O módulo Capture possui um contador Prescaler próprio.• Não se trata do contador Prescaler de TMR1.
CCP1CON/CCP2CON 017h/01Dh
0 1
CAPTURE3Operação
5325/04/2017
• O módulo Capture pode ser usado como umcronômetro.
• O SFR CCPRx<15:0> informa quantos passosde contagem se passaram desde o últimooverflow de TMR1<15:0> até a ocorrência doevento pré-estabelecido.
• Para saber quantos TCY se passaram, bastamultiplicar este valor pelo TMR1 prescaler ratio.
• Se esse ratio for maior do que 1:1, a capturapode ocorrer em uma fração do passo dacontagem onde ela ocorreu.
CAPTURE3Operação
5425/04/2017
• O valor dos passos de contagem obtidos pode sertransformado em valor de tempo a partir dosseguintes dados:• fOSC
• Quantidade de TOSC’s em um TCY.• TMR1 Prescaler ratio.
• Nem sempre é necessário converter para o valor emtempo, pois, em muitos casos, o objetivo écomparar o valor obtido com valores pré-estipuladosou comparar uma sequência de valores obtidos.
25/04/2017
10
CAPTURE3
5525/04/2017
Exemplo para 1:4
0000h
Instante da ocorrência do evento
TCY
t
Reconhecimento da
ocorrência do evento
Conclusão da cópia
Exemplo para prescaler ratio = 1:4
<T1CKPS1:T1CKPS0> Ratio
00 1:101 1:210 1:411 1:8
Prescaler
TSTEP
CAPTURE3
5625/04/2017
Exemplo para 1:4
Instante da ocorrência do evento
Reconhecimento da
ocorrência do evento
Conclusão da cópia
Q1Q2Q3Q4
CAPTURE3Capture Prescaler
5725/04/2017
• A opção pela captura em 4 ou 16 bordasacrescenta um contador de 2 ou 4 bits.
• Esta opção pode ser interessante quandoos eventos ocorrem de forma periódica auma frequência mais alta do que a máximaque TMR1 pode suportar (incluindo o efeitodo TMR1 prescaler ratio).
Even
to 1
tEven
to 2
Even
to 3
Even
to 4
Even
to 5
Even
to 6
Even
to 7
Even
to 8
Even
to 9
1:4
Exemplo para capture prescaler ratio = 1:4
CAPTURE3
Z
Z
5825/04/2017
Captura 1:1 – ExemploFFFFh
0000h
T
t
tEvento Evento Evento Evento Evento
CCPRx<15:0>
t
1CCPxIF
CAPTURE3
Z
Z
5925/04/2017
Captura 1:4 – ExemploFFFFh
0000h
T
t
t
CCPRx<15:0>
t1 CCPxIF
• Um a cada quatro eventos é considerado.
CAPTURE3
6025/04/2017
• Para que a captura tenha serventia como cronômetro, épreciso que haja dois eventos.
• O primeiro evento marca o início da marcação do tempo.• O segundo eventomarca o término da marcação do tempo.• O tempo total é a diferença entre as duas marcações.
Intervalo
25/04/2017
11
CAPTURE3
6125/04/2017
• O módulo PWM pode ser usado com 8 ou 10 bits.• Igualmente, o módulo capture pode ser usado com 8 ou 16
bits.• Raras são as aplicações que requerem 16 bits de precisão.• A maioria das aplicações requer, apenas, 8 bits.• O uso de 16 bits requer o uso dos SFR´s CCPRxH e CCPRxL
além de GPR´s para armazenamento destas informações,dois para o instante inicial e dois para o final.
• O uso de 8 bits usa, apenas, CCPRxH, um GPR para oinstante inicial e um para o final. Isso torna o programa maissimples.
8 ou 16 bitsCAPTURE3
6225/04/2017
Captura – Caso 1 – 16 bits
tEvento(1) Evento(2)
CCPRx<15:0>(2)
CCPRx<15:0> (1)
CC
PRx<15:0>
FFFFh
0000h
CAPTURE3
6325/04/2017
• Os dois eventos estão na mesma rampa.• Não é preciso analisar as mudanças de rampa.• CCPR<15:0> = CCPR(2)<15:0> – CCPR(1)<15:0>.• CCPR<15:0> representa a quantidade de passos de
TMR1<15:0> compreendidos entre os dois evento.• t é proporcional a CCPR<15:0>.
Captura – Caso 1 – 16 bits
Vide exemplos
CAPTURE3
6425/04/2017
Captura – Caso 1 – 8 bits
tEvento(1) Evento(2)
CCPRxH(2)
CCPRxH(1)
CC
PRxH
FFh
00h
• A análise é feita sobre o byte mais significativo.
CAPTURE3
6525/04/2017
• CCPRxH = CCPRxH(2) – CCPRxH(1).• CCPRxH representa a quantidade de passos
de TMR1H compreendidos entre os dois evento.• t é proporcional a CCPRxH.• Os passos de TMR1H são 28 vezes mais lentos
do que os passos de TMR1<15:0>.
Captura – Caso 1 – 8 bits
Vide exemplos
CAPTURE3
6625/04/2017
Captura – Caso 2 – 16 bits
t
Evento(1) Evento(2)
CCPRx(2)
CCPRx(1)FFFFh
0000h
25/04/2017
12
CAPTURE3
6725/04/2017
Captura – Caso 2 – 16 bits
• Os eventos estão em rampas diferentes.• A operação CCPR(2)<15:0> – CCPR(1)<15:0>
resulta em um número negativo.• CCPR não pode ser um número negativo.• É preciso converter a rampa de 16 bits para 17 bits.• Eleva-se a segunda rampa.• Tem-se um TMR1<16:0>
CAPTURE3
6825/04/2017
Captura – Caso 2 – 16 bits
t
Evento(1) Evento(2)
CCPRx(2)
CCPRx(1)
CCPRx
0000h
10000hFFFFh
1FFFFh
• TMR1, embora tenha, apenas, 16 bits,comporta-se como se tivesse 17 bits.
• O bit mais significativo deTMR1<16:0> é gravado em um GPR.
CAPTURE3
6925/04/2017
Captura – Caso 2 – 16 bits
• Ao elevar a segunda rampa, seu valor sobe 216 degraus.• O valor CCPR(2)<15:0> torna-se CCPR(2)<15:0> + 216.• CCPR = 216 + CCPR(2) – CCPR(1).• CCPR = 10000h + CCPR(2) – CCPR(1).• A adição do valor 10000h consiste da adição do
décimo sétimo bit mais significativo, TMR1<16>.• Usando modo hexadecimal, o resultado negativo da
subtração é informado de forma errada na calculadora.• É preciso, primeiro acrescentar 216 e, depois, fazer as
outras operações, a fim de evitar o surgimento de umnúmero negativo.
CAPTURE3
7025/04/2017
Captura – Caso 2 – 8 bits
t
Evento(1) Evento(2)
CCPRxH(2)
CCPRxH(1)FFh
00h
CAPTURE3
7125/04/2017
Captura – Caso 2 – 8 bits
• Os eventos estão em rampas diferentes.• A operação CCPRxH(2)<7:0> – CCPRxH(1)<7:0>
resulta em um número negativo.• CCPRxH não pode ser um número negativo.• É preciso converter a rampa de 8 bits para 9 bits.• Eleva-se a segunda rampa.• Tem-se um TMR1H<8:0>
CAPTURE3
7225/04/2017
Captura – Caso 2 – 8 bits
t
Evento(1) Evento(2)
CCPRxH(2)
CCPRxH(1)
CCPRxH
00h
100hFFh
1FFh
• TMR1H, embora tenha, apenas, 8 bits,comporta-se como se tivesse 9 bits.
• O bit mais significativo de TMR1H<8:0> é gravado em um GPR.
25/04/2017
13
CAPTURE3
7325/04/2017
Captura – Caso 2 – 8 bits
• Ao elevar a segunda rampa, seu valor sobe 28 degraus.• O valor CCPRxH(2)<7:0> torna-se CCPRxH(2)<7:0> + 28.• CCPRxH = 28 + CCPRxH(2) – CCPRxH(1).• CCPRxH = 100h + CCPRxH(2) – CCPRxH(1).• A adição do valor 100h consiste da adição do nono bit
mais significativo, TMR1H<8>.• Usando modo hexadecimal, o resultado negativo da
subtração é informado de forma errada na calculadora.• É preciso, primeiro acrescentar 28 e, depois, fazer as
outras operações, a fim de evitar o surgimento de umnúmero negativo.
CAPTURE3
7425/04/2017
t
CCPRx(2)
CCPRx(1)
EventoEvento
t
TMR1IF
Captura – Caso 3 – 16 bits
CAPTURE3
7525/04/2017
• O intervalo é maior do que o período do TMR1.• Contando quantas ações (comando set) ocorreram emTMR1IF, é possível medir intervalos maiores do que operíodo de TMR1.
• É preciso permanecer verificando o valor de TMR1IF aolongo do período entre os dois eventos.
• Caso TMR1IF=1, é sinal de que outra rampa teve início.• O contador de reset’s em TMR1 (N), um GPR qualquer,
é incrementado e o flag é reiniciado (TMR1IF=0).• O intervalo é medido por:• CCPR = (N216) + CCPR(2) – CCPR(1).• CCPR = (N10000h) + CCPR(2) – CCPR(1).
Captura – Caso 3 – 16 bitsCAPTURE3
7625/04/2017
tN=N+1N=1
N=N+1N=2
N=N+1N=3
N=N+1N=4
N=N+1N=5
EventoEvento
N=0
Captura – Caso 3 – 16 bits
CAPTURE3
7725/04/2017
• CCPR(1) é copiado em um GPR duplo.• CCPR(2) é copiado em outro GPR duplo.• Não é recomendado fazer a subtração diretamente sobre
CCPR, pois, durante este cálculo, pode ocorrer um evento.• A cópia é de dois bytes.• A subtração é de dois bytes, requerendo cuidado com o
borrow entre os bytes.• O resultado da subtração é gravado em um terceiro GPR
duplo.• Como N216 é um número de 17 bits ou mais, é preciso usar
três ou mais GPR’s para armazenar o resultado.• Não há uma instrução para multiplicação, requerendo a
criação de um programa para a realização desta operação.
Captura – Caso 3 – 16 bitsCAPTURE3
7825/04/2017
• Se N jamais supera 255, então um GPR é suficientepara armazená-lo, porém, se este limite for superado,poderão ser necessários dois ou mais GPR’s.
• Isso tudo mostra como pode ser difícil criar umprograma assembler para a realização destas tarefas.
• Este é o caso em que começa a valer a pena usarlinguagens de compilação e não de montagem.
Captura – Caso 3 – 16 bits
25/04/2017
14
CAPTURE3
7925/04/2017
• CCPRH = (N28) + CCPRH(2) – CCPRH(1).• CCPRH = (N100h) + CCPRH(2) – CCPRH(1).
Captura – Caso 3 – 8 bits
• CCPRH(1) é copiado em um GPR.• CCPRH(2) é copiado em outro GPR.• O resultado da subtração é gravado em um terceiro GPR.• Como N28 é um número de 9 bits ou mais, é preciso usar
dois ou mais GPR’s para armazenar o resultado.
Vide exemplos
CAPTURE3Interrupções
8025/04/2017
• Uma solicitação de interrupção é realizada.• CCP1IF: CCP1 Interrupt Flag Bit.• PIR1<2> (Peripheral Interrupts 1).• CCP2IF: CCP2 Interrupt Flag Bit.• PIR2<0> (Peripheral Interrupts 1).• 0: Não houve uma captura de TMR1 (reset default).• 1: Houve uma captura de TMR1.• Quando a configuração capture é alterada,
também ocorre um pedido de interrupção.
CAPTURE3
8125/04/2017
Comparação
<CCPxM3:CCPxM2> Modo Pino CCPx00 Desligado PORTC01 Capture Entrada10 Compare 00 01 Saída10 Compare 10 11 PORTC11 PWM Saída
reset default
PSP4
8225/04/2017
PSP
PSP4
8325/04/2017
Necessidade• Um projeto real, pode conter diversos chip’s
MCU ou P.• O sistema possui um barramento de dados
próprio, que é ligado ao barramento de dadosdos chip’s por meio das portas paralelas.
• É preciso que haja controle do barramento dedados do sistema para que não ocorra conflito.
• O PSP é usado quando se deseja ligar a PIC aum outro barramento de dados, controlado porum outro chip.
• Os bufferes de entrada PSP são TTL.
PSP4
8425/04/2017
Necessidade• A diferença entre a porta paralela escrava e as
portas paralelas normais é que a escravapossui sistema de controle de fluxo, tal comouma porta serial.
• Na porta paralela normal, é o próprio chip quedetermina quando realizar uma leitura equando realizar uma gravação.
• Na porta paralela escrava, quem decide omomento de uma leitura ou de uma gravação éo outro chip, aquele que controla o barramentode dados do sistema que conecta os chip’s.
• É usado um SFR de dados, tal como em umaporta paralela comum.
• Bits de controle de fluxo são usados.
25/04/2017
15
PSP4
8525/04/2017
SFR’s na PIC
• A comunicação é assíncrona, não estácondicionada ao período de instrução da PIC.
• A gravação em PORTD ocorre, apenas, em Q4.• A leitura em PORTD ocorre, apenas, em Q2.
Serial A/DPORT PWM PSP
8-bit PIC Data Bus
SFR SFR SFR SFRFile Registers
8-bit 10-bit 10-bit
8-bit8-bit8-bit
PORTD
8-bit
8-bit8-bit
PSP4
8625/04/2017
Sistema Genérico
PIC 1 PIC 2P MEM I/O
Data Bus externo
Controlador Periférico Periférico Periférico Periférico
• O controlador pode ser um P, MCU ou DSP.• O controlador, geralmente, é o dispositivo
com a maior capacidade de processamento.
PSP4
8725/04/2017
Sistema Genérico
• O controlador pode ser um P, MCU ou DSP.• O controlador, geralmente, é o dispositivo com a
maior capacidade de processamento.• O comando CS (chip select) permite a
conecção do data bus do sistema ao periférico.• Somente um periférico pode estar ativo por vez.• Periférico desativado está em 3S no data bus.
CS1
CS2
CS3
CS4
Data Bus
PSP4
8825/04/2017
Sistema Genérico
• Alguns chip’s periféricos permitem gravação.• Há, então, três comandos: CS, RD e WR.• RAM’s possuem os três comandos.• ROM’s possuem, apenas, CS e RD.• MCU conectada por PSP comporta-se como uma RAM.
PSP4
8925/04/2017
Comunicação• A comunicação é assíncrona porque cada chip
pode possuir um relógio diferente.• O barramento do sistema precisa ser de 8 bits.• Se o barramento for de 16 bits, um circuito
pode fazer a leitura de duas palavras econvertê-las em uma de 16 bits para, depois,enviar ao barramento do sistema.
• Se o barramento for que 4 bits, um circuitopode dividir a palavra da PIC em duas de 4bits, enviadas em duas etapas ao barramentodo sistema.
PSP4
9025/04/2017
Barramento externo maior do que o interno
8-bitMUX21
16-bitP
16-bit Data Bus
8-bitPIC
8-bit Data Bus
D15 D0
D00
D07
D08
D15
SELEÇÃO0: Low Byte1: High Byte
8-bit
8-bit
25/04/2017
16
PSP4
9125/04/2017
Barramento externo maior do que o interno
8-bitDEMUX
12
16-bitP
16-bit Data Bus
8-bitPIC
8-bit Data Bus
D15 D0
D00
D07
D08
D15
SELEÇÃO0: Low Byte1: High Byte
8-bit
8-bit
PSP4
9225/04/2017
16-bitP
16-bit Data Bus
8-bitPIC
D15 D0
D00
D07
D08
D15
8-bitPIC
Barramento externo maior do que o interno
8-bit
8-bit
PSP4
9325/04/2017
8-bitP
16-bitPIC
CPHIGH
8-bitREG
CPLOW
8-bitREG
8-bit Data Bus
8-bit Data Bus
8-bit Data Bus
D00
D07
D08
D15
Barramento externo menor do que o interno
CP: clock pulse
8-bit
8-bit
PSP4
9425/04/2017
• Parallel slave mode• Para configurar os pinos do chip para PSP, é preciso
programar o SFR TRISE (089h).• TRISE<4> , PSPMODE , deve ser corretamente programado.
• 0: Modo I/O – PORTD – reset default.• 1: Modo PSP.
SFR Addr. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0TRISE 089h IBF OBF IBOV PSPMODE - I/O I/O I/O
Compartilhamento
PSP4
9525/04/2017
Compartilhamento• O PSP usa PORTD para dados (modo
PSP e modo I/O).• O PSP usa saídas TTL, sem efeito ST.• A configuração TRISD é irrelevante, pois
quem controla o sentido é um outro chip.
PSP4
9625/04/2017
Configuração• O PSP compartilha os pinos de PORTE para controle.• Os bits de controle são unidirecionais, entrada.• /RD: Read– Leitura do conteúdo da PIC.• /WR: Write– Escrita no barramento da PIC.• /CS: Chip Enable.• Estes pinos devem ser configurados como entrada.
TRISE<RE0>=1TRISE<RE1>=1TRISE<RE2>=1
25/04/2017
17
PSP4
9725/04/2017
Pinagem (DIP)PSP PIN Nome
0 19 RD0/PSP01 20 RD1/PSP12 21 RD2/PSP23 22 RD3/PSP34 27 RD5/PSP45 28 RD0/PSP56 29 RD1/PSP67 30 RD2/PSP7
PSP PIN NomeRD 8 RE0/RDWR 9 RE1/WRCS 10 RE2/CS
• PSPMODE = 0: Funções em verde.• PSPMODE = 1: Funções em vermelho.
PSP4
9825/04/2017
/RD/WD/CE
PSP7PSP6PSP5PSP4
PSP0PSP1
PSP3PSP2
Pinagem (DIP)
PSP4
9925/04/2017
Entrada / Saída
• Há um circuito para cada bit do PSP.• O FF D sensível a borda perfaz o SFR PORTD.• O buffer 3S de saída não é o buffer 3S controlado por TRISD.• O buffer TTL de entr. não é o buffer TTL controlado por TRISD.• O butter 3S de entrada é controlado por PSPMODE.• Os bufferes de entr. são acionados pelos bits de controle PSP.
PSP4
10025/04/2017
Buffer 3S
Bufferinput
output
input
PSPIF=(/WR/CS)+(/CS/RD)
Buffer 3S
Entrada / Saída
RD
TRISE<4>PSPMODE
PSP4
10125/04/2017
Modo RD (output)
Buffer
output
input
output
input
PSPIF=1
1
1
0
0
0 1
1
desligado
1 ligado
0 ligado
0 ligado
1 desligado
RD
PSP4
10225/04/2017
Modo WR (input)
Bufferinput
output
input
PSPIF=1
0
1
1
1
1 desligado
0 ligado
0 ligado
1 0
1
ligado
0 desligadoinput
RD
25/04/2017
18
PSP4
10325/04/2017
Interrupção
• Quando um /RD ou /WR é feito na PSP, uma solicitaçãode interrupção é realizada.
• PSPIF: Parallel Slave Port Read/Write Interrupt Flag bit.• PIR1<7> (Peripheral Interrupts 1)• 0: Não houve um /RD ou /WR (reset default).• 1: Houve um /RD ou /WR.
PSP4
10425/04/2017
Interrupção
• Não é permitido fazer BSF PIR1, PSPIF.• PIR1<7> recebe “1” em /RD ou em /WR.• PIR1<7> recebe “0” manualmente.• BCF PIR1, PSPIF.• Esse comando é dado após a ciência do evento.
PSP4
10525/04/2017
Interrupção
• PSPIE: Parallel Slave Port Read/Write Interrupt Enable Bit.• PIE1<7> (Peripheral Interrupts Enable Bits 1).• 1: Habilita interrupção PSP.• 0: Desabilita interrupção PSP.
• PIR1 000001100b, 0Ch, banco 0• PIE1 010001100b, 8Ch, banco 1
PSP4
10625/04/2017
• IBF: Input Buffer Full.• OBF: Output Buffer Full.• IBOV: Input Buffer Overflow.• IBF é usado em uma escrita externa.• OBF é usado em uma leitura externa.• Controle semelhante ao da porta serial.
SFR Addr. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0TRISE 089h IBF OBF IBOV PSPMODE - I/O I/O I/O
Gerenciamento da comunicação
PSP4
10725/04/2017
• Quando uma palavra é recebida pela PIC®, IBF=1.• Isto indica que a PIC® recebeu uma palavra do outro chip.• Esta palavra precisa ser lida pelo data bus da PIC®.• Quando PORTD é lido, IBF=0 automaticamente.• Se IBF=0, então a PIC® pode receber uma nova palavra.
Gerenciamento da comunicação
• Quando uma palavra é escrita em PORTD, pela PIC®, OBF=1.• Isto indica que a PIC® está aguardando que a palavra seja
lida pelo outro chip.• Quando o outro chip faz a leitura, OBF=0 automaticamente.• Se OBF=0, então PORTD pode receber uma nova escrita.
PSP4
10825/04/2017
• Se IBF=1, o outro chip não pode enviar nova palavra.• Se isso acontece, então IBOV=1.• Se IBOV=1, então o último envio do chip externo foi perdido.
Gerenciamento da comunicação
• Se OBF=1, então PORTD ainda não foi enviado ao outro chip.• Se OBF=1, então uma escrita em PORTD faz o envio anterior
ser perdido.
• Após PORTD ser lido pelo outro chip, PSPIF=1.• Após PORTD ser escritopelo outro chip, PSPIF=1.
25/04/2017
19
COMUNICAÇÃO SERIAL5
10925/04/2017
COMUNICAÇÃO SERIAL
COMUNICAÇÃO SERIAL5
11025/04/2017
• A comunicação serial permite a troca deinformação por meio de linhas de transmissãoque não sejam de natureza elétrica, como luz eoutras ondas eletromagnéticas.
• A comunicação serial simplifica a comunicaçãosem fio.
• A comunicação serial simplifica as comunicações(com ou sem fio) de longas distâncias.
Motivação
COMUNICAÇÃO SERIAL5
11125/04/2017
AplicaçõesCOMUNICAÇÃO SERIAL5
11225/04/2017
• A comunicação paralela é mais simples, apalavra é enviadas em uma única etapa, aidentificação dos bits é imediata, o efeito deerros é menos grave.
• A comunicação serial é mais sofisticada, pois a identificação dos bits de uma palavra não é imediata, o efeito dos erros é mais grave.
• A comunicação paralela pode usar protocolosde sincronização e detecção de erro(principalmente em computação), mas isso éopcional em sistemas mais simples.
• A comunicação serial requer uso obrigatório deprotocolos, mesmo nos sistemas mais simples.
Protocolo
COMUNICAÇÃO SERIAL5
11325/04/2017
• Alô?• Tem alguém aí?• Está me ouvindo?• Fale mais alto.• Fale mais devagar.• Posso falar agora?• Espere um pouco.• O que?• Agora vou desligar.• Peraí, não terminei.• Até mais.
Palavras de sinalização em conversa ao telefoneCOMUNICAÇÃO SERIAL5
11425/04/2017
• Simplex: Comunicação unilateral.• Exemplo de transmissão: Display serial.• Exemplo de recepção: Teclado serial.
• Duplex: Multiplexação entre transmissão e recepção.• Exemplo: Comunicação via rádio.
• Full duplex: Transmissão e recepção simultâneos.• Exemplo: Telefone.
Tipos de comunicação
• Embora todos os protocolos de comunicaçãoserial permitam transmissão e recepção,muitos são os casos em que somente umsentido de transmissão é usado.
25/04/2017
20
COMUNICAÇÃO SERIAL5
11525/04/2017
Comunicação síncrona
• A comunicação síncrona possui um sinal de relógio quedetermina a sincronia entre os dois agentes dacomunicação.
• Um dos elementos controla o relógio.• Este elemento é chamado de master.• O outro elemento é chamado de slave.• A sincronia torna o protocolo de comunicação mais simples.• A comunicação assíncrona tem a vantagem de não
consumir uma via para este sinal.
COMUNICAÇÃO SERIAL5
11625/04/2017
Vias de dados
• Se existem duas vias de dados, uma é usada para saída dedados, e a outra é usada como entrada de dados.
• Cada via representa uma comunicação simplex.• Se, existe, apenas, uma via de dados, ela é usada para
entrada e para saída.• Neste caso, não é possível efetuar comunicação full-duplex.• Comunicação com duas vias de dados é mais simples.• Comunicação com uma via de dados é mais econômica.
Vias Simplex Duplex Full-duplex1 Sim Sim Não2 Sim Sim Sim
COMUNICAÇÃO SERIAL5
11725/04/2017
Comunicação de duas vias• Sempre que uma transmissão é efetuada, uma
recepção também é efetuada, e vice-versa.• Transmissão simplex ou duplex: Uma palavra relevante
é enviada e uma palavra irrelevante é recebida.• Recepção simplex ou duplex: Uma palavra irrelevante
é enviada e uma palavra relevante é recebida.• Comunicação full-duplex: Uma palavra relevante é
enviada e uma palavra relevante é recebida.• A diferenciação entre os tipos de comunicação está,
apenas, na relevância das palavras.
Evento Palavra enviada Palavra recebidaTransmissão simplex ou duplex Relevante Irrelevante
Recepção simplex ou duplex Irrelevante RelevanteComunicação full-duplex Relevante Relevante
COMUNICAÇÃO SERIAL5
11825/04/2017
Principais protocolos usados em MCU´s
Protocolo Vias de dados ModoSPI™ 2 SíncronoI2C™ 1 Síncrono
USART™ 1 SíncronoUSART™ 2 Assíncrono
VEREMOS
COMUNICAÇÃO SERIAL5
11925/04/2017
• SPI™.• Hardware mais simples.• Ideal para comunicação entre MCU’s.• Suporta full-duplex.
• USART™.• Hardware mais sofisticado.• Ideal para comunicação entre MCU e computador.• Permite comunicação assíncrona (mais complexa).• Suporta full-duplex (somente no modo assíncrono).
• I2C™.• Ideal para comunicação de longa distância.• Suporta até half-duplex.
VEREMOS
Comparação entre os protocolosCOMUNICAÇÃO SERIAL5
12025/04/2017
Comparação entre SPI™ e I2C™
http://www.mikroe.com/img/publication/pic-books/pic-microcontrollers/chapter/06/fig6-21.gif
clock
clock
2-wire full-duplex
1-wire half-duplex
25/04/2017
21
COMUNICAÇÃO SERIAL5
12125/04/2017
• SPI™, QSPI™, Microwire™.• 3-wire interface.1. CS ou SS – seleção (opcional).2. SCLK – clock.3. SDI ou DIN ou MOSI – input.4. SDO ou DOUT ou MISO – output.• Edge trigged.
• I2C™ , SMBUS™• 2-wire interface.1. SDA – dado.2. SCL – clock.• Level trigged.
DiferençasVEREMOS
VEREMOS
COMUNICAÇÃO SERIAL5
12225/04/2017
• Serviu como origem do protocolo SPI™.• Concepção: Como o protocolo foi concebido.• MID – Microwire™ Interface Device.• Marca registrada da National Semiconductor.• Criado para a família de MCU’s COPS™.• Microwire™ (Application Note 452), janeiro de 1992.• Microwire/Plus™ (Application Note 579), maio de 1989.• Há referências anteriores a 1989.• Comunicação síncrona.
Microwire™
COMUNICAÇÃO SERIAL5
12325/04/2017
• Permite transmissão e recepção ao mesmo tempo.• Uso de duas vias de dados.• Um via é usada para entrada, outra para saída.• A comunicação pode ser do tipo full-duplex.• Em cada via, a comunicação é do tipo simplex.• Um dispositivo é o controlador e os demais são periféricos.• São usadas três vias:
• SI Serial Input.• SO Serial Output.• SK Serial Clock (sincronia).
• Microwire™ não permite seleção de slave via protocolo.• A seleção pode ser feita por hardware adicional.
Microwire™COMUNICAÇÃO SERIAL5
12425/04/2017
• O valor nas duas vias de dado é capturado nas borda de SK.• A comunicação é síncrona.• O Microwire™ não permite a escolha das bordas.• O SPI™ permite a escolha das bordas.
MASTER SLAVE
SK
SI
SO
Microwire™
COMUNICAÇÃO SERIAL5
12525/04/2017
• Um registrador de deslocamento (shift-register) realiza aconversão.
• No caso da PIC®, esse registrador é o SSPSR (não SFR).• O bit 7 é enviado primeiro, o bit 0 por último.• No lado paralelo, vem o data bus.• No lado serial, os pinos de comunicação.• Um registrador (buffer register ou holding register) retém
o valor do data bus na conversão para serial.• No caso da PIC®, esse SFR é o SSPBUF.
Microwire™COMUNICAÇÃO SERIAL5
MASTER SLAVESI SO
SI
SK
12625/04/2017
Microwire™
H G F E D C B AP O N M L K J I
25/04/2017
22
COMUNICAÇÃO SERIAL5
12725/04/2017
x x x x x x x xReceptor
7 6 5 4 3 2 1 0Transmissor
x x x x x x x 7Receptor
6 5 4 3 2 1 0 xTransmissor
x x x x x x 7 6Receptor
5 4 3 2 1 0 x xTransmissor
x x x x x 7 6 5Receptor
4 3 2 1 0 x x xTransmissor
x x x x 7 6 5 4Receptor
3 2 1 0 x x x xTransmissor
x x x 7 6 5 4 3Receptor
2 1 0 x x x x xTransmissor
x x 7 6 5 4 3 2Receptor
1 0 x x x x x xTransmissor
x 7 6 5 4 3 2 1Receptor
0 x x x x x x xTransmissor
7 6 5 4 3 2 1 0Receptor
x x x x x x x xTransmissor
Microwire™COMUNICAÇÃO SERIAL5
12825/04/2017
H G F E D C B AP O N M L K J I
MASTER SLAVESI SO
SI
SKInício da transmissão full-duplex
P O N M L K J IH G F E D C B A
MASTER SLAVESI SO
SI
SKTérmino da transmissão full-duplex
Microwire™
COMUNICAÇÃO SERIAL5
12925/04/2017
• Os dois registradores de 8 bits podem ser consideradoscomo um único registrador de deslocamento de 16 bits.
• A comunicação implica na operação swap do registradorde 16 bits.
• A comunicação implica na permutação das informaçõesdos registradores de deslocamento de 8 bits.
• O sentido da comunicação é determinado a partir do ladoonde o registrador de 8 bits é escrito e o lado onde é lido.
Microwire™COMUNICAÇÃO SERIAL5
13025/04/2017
P O N M L K J I H G F E D C B AO N M L K J I H G F E D C B A P
N M L K J I H G F E D C B A P O
M L K J I H G F E D C B A P O NL K J I H G F E D C B A P O N M
K J I H G F E D C B A P O N M LJ I H G F E D C B A P O N M L K
I H G F E D C B A P O N M L K J
H G F E D C B A P O N M L K J I
Início
Passo 1
Passo 2
Passo 3
Passo 4
Passo 5
Passo 6
Passo 7
Passo 8
Microwire™
COMUNICAÇÃO SERIAL5
13125/04/2017
Microwire™
x x x x x x x xShift register 2
x x x x x x x xShift register 1
7 6 5 4 3 2 1 0Buffer 1
TransmitterInício da transmissão simplex
7 6 5 4 3 2 1 0Shift register 2
x x x x x x x xShift register
7 6 5 4 3 2 1 0Buffer 2
ReceiverTérmino da transmissão simplex
COMUNICAÇÃO SERIAL5
13225/04/2017
Microwire™
x x x x x x x xShift register
7 6 5 4 3 2 1 0Buffer
TransmitterInício da transmissão
7 6 5 4 3 2 1 0Shift register
7 6 5 4 3 2 1 0Buffer
ReceiverTérmino da transmissão
• A transmissão tem início após a gravação do buffer.• A recepção é concluída com a gravação do buffer.• O buffer serve para que as palavras parciais
contidas no shift register permaneçam indisponíveispara o resto do circuito.
25/04/2017
23
COMUNICAÇÃO SERIAL5
13325/04/2017
• AN474.• SIO: Serial Input-Output Register.• ÷: Prescaler.
Microwire™
prescaler
COMUNICAÇÃO SERIAL5
13425/04/2017
Master Slave
prescaler
Microwire™
COMUNICAÇÃO SERIAL5
13525/04/2017
Microwire™ – Dois slaves – Daisy-chain
MASTER
SLAVE 1SKSISO
SLAVE 2
SK1
SI1
SO1
SK2
SI2
SO2
COMUNICAÇÃO SERIAL5
13625/04/2017
Microwire™ – Dois slaves – Daisy-chain
X W V U T S R Q P O N M L K J I H G F E D C B A
SLAVE2 SLAVE1 MASTER
P O N M L K J I H G F E D C B A X W V U T S R Q
SLAVE2 SLAVE1 MASTER
H G F E D C B A X W V U T S R Q P O N M L K J I
SLAVE2 SLAVE1 MASTER
COMUNICAÇÃO SERIAL5
13725/04/2017
Microwire™ – N slaves – Daisy-chain
MASTER
SLAVE N SLAVE 4 SLAVE 3 SLAVE 2 SLAVE 1
SCLK
COMUNICAÇÃO SERIAL5
13825/04/2017
Microwire™ – Dois slaves em paralelo
MASTER
SLAVE 1SKSISO
SLAVE 2
SK1
SI1
SO1
SK2
SI2
SO2Lógica de seleção
CS
CS
25/04/2017
24
COMUNICAÇÃO SERIAL5
13925/04/2017
Microwire™/Plus
• AN579.• SIOR: Serial Input-Output Register.• A novidade são os bits de sinalização.
COMUNICAÇÃO SERIAL5
14025/04/2017
• Serial Peripheral Interface.• Evolução da comunicação serial Microwire™.• Tudo o que vale para o Microwire™ vale para o SPI™.• Marca registrada da National Semiconductor.• Originalmente projetado para operar a 110kHz.• É um Microwire™ com mais recursos.• Novos recursos:
• Quatro modos de clock, ao invés de um.• Controle slave select.
SPI™
COMUNICAÇÃO SERIAL5
14125/04/2017
Concepção• Concepção é a forma como o protocolo foi idealizado e nem
sempre corresponde, 100%, à implementação física, comona PIC®, por exemplo.
• Utiliza quatro vias:• SCLK: Serial Clock.• MOSI: Master Out Slave In - Data from Master to Slave.• MISO: Master In Slave Out - Data from Slave to Master.• /SS: Slave Select (opcional).
• Pode haver vários slaves, sendo, cada um, identificado poruma via /SS (no nosso da PIC®, apenas uma via).
• Pode haver apenas um master.• O número de vias é dado por 3 + N, N é o número de slaves.
COMUNICAÇÃO SERIAL5
14225/04/2017
Concepção – Um slave
• Esta é a concepção feita pela National Semiconductor.• Quando há, apenas, um slave, a ligação /SS é opcional.• O uso de /SS dá mais segurança à comunicação.• Na PIC®, o nome dos pinos é diferente.• Na PIC®, o /SS do master vem de um bit de porta paralela.• Se MOSI está desconectado, o slave lê “0”.• Se MISO está desconectado, o master lê “0”.
MASTER SLAVE
SCLKMOSIMISO/SS
Opcional
COMUNICAÇÃO SERIAL5
14325/04/2017
Concepção – Um slave
MASTER SLAVE
SCLKMOSIMISO/SS
Opcional
MASTER SLAVE
SCLKMOSIMISO/SS
Opcional
MASTER SLAVE
SCLKMOSIMISO/SS
Opcional
Simplex MS Simplex SM
Full duplex ou Half duplex
COMUNICAÇÃO SERIAL5
14425/04/2017
Concepção – Dois slaves
MASTER
SLAVE 1SCLKMOSIMISO/SS1/SS2 SLAVE 2
SCLK1
MOSI1
MISO1
/SS1
SCLK2
MOSI2
MISO2
/SS2
25/04/2017
25
COMUNICAÇÃO SERIAL5
14525/04/2017
Concepção – Dois slaves
t
t
SLAVE1
SLAVE2 SLAVE2 buzzy
SLAVE1 buzzySLAVE1 iddle
SLAVE2 iddle
SS1
SS2
/SS2 /SS1 Situação1 1 Sem comunicação1 0 Comunicação habilitada com slave 10 1 Comunicação habilitada com slave 20 0 Conceitualmente proibido
COMUNICAÇÃO SERIAL5
14625/04/2017
Concepção – Dois slaves
• Por causa da existência de três situações válidas, nãoé possível empregar um decodificador para transformara seleção entre dois slave’s em uma seleção entrequatro slave’s.
• A existência de, apenas, uma saída /SS não temserventia na seleção de dispositivo, porém é útil naaplicação de protocolos de comunicação mais seguros.
• Na PIC®, não existe saída /SS.
COMUNICAÇÃO SERIAL5
14725/04/2017
Concepção – Dois slaves – Daisy-chain
MASTER
SLAVE 1SCLKMOSIMISO/SS
SLAVE 2
SCLK1
MOSI1
MISO1
/SS1
SCLK2
MOSI2
MISO2
/SS2
Opcional
COMUNICAÇÃO SERIAL5
14825/04/2017
Concepção – Dois slaves – Daisy-chain
• A ligação Daisy-chain tem a vantagem de usar, apenas,um sinal /SS.
• Como há, apenas, um /SS, essa ligação é opcional.• Quando se tem muitos slaves a uma distância grande,
esta ligação pode representar grande economia de fios.• Sua desvantagem é a maior demora na comunicação,
pois as palavras precisam passar por todos os slave’s.
COMUNICAÇÃO SERIAL5
14925/04/2017
Concepção – Configuração
• CPOL Clock Polarity.• CPHA Clock Phase.
http://upload.wikimedia.org/wikipedia/commons/thumb/6/6b/SPI_timing_diagram2.svg/400px-SPI_timing_diagram2.svg.png
COMUNICAÇÃO SERIAL5
t
t
CPOL=0
CPOL=1
15025/04/2017
Concepção – Configuração
• CPOL=0: Comunicação inativa (idle) em nível baixo.• CPOL=1: Comunicação inativa (idle) em nível alto.
25/04/2017
26
COMUNICAÇÃO SERIAL5
15125/04/2017
Concepção – Configuração
t
CPOL=0CPHA=0
7 6 5 4 3 2 1 0idle idle
t
CPOL=0CPHA=1
7 6 5 4 3 2 1 0idle idle
COMUNICAÇÃO SERIAL5
15225/04/2017
Concepção – Configuração
t
CPOL=1CPHA=0
7 6 5 4 3 2 1 0idle idle
t
CPOL=1CPHA=1
7 6 5 4 3 2 1 0idle idle
COMUNICAÇÃO SERIAL5
15325/04/2017
Concepção – Configuração
t
CPOL=0
t/SS
t
CPOL=1
t/SS
• /SS=0: Comunicação permitida.• /SS=1: Sem comunicação – idle.
idle
idle
idle
idle
COMUNICAÇÃO SERIAL5
15425/04/2017
Sensoriamento de longa distância
BarramentoAnalógico
Processamento
Digital
Inlcui entrada serial
Conversor paralelo /
serial
BarramentoDigital 1-bit
SDI
• Como o conversor serial é simplex, há, apenas, uma via desaída de dados, mesmo se o protocolo for Microwire, SPI, etc.
COMUNICAÇÃO SERIAL5
15525/04/2017
Sensoriamento de longa distância
Processamento
Digital
Inlcui entrada serial
Conversor paralelo /
serial
BarramentoDigital 1-bit
SDI
Processamento
Digital
Inlcui entrada serial
1-bitSDI
COMUNICAÇÃO SERIAL5
15625/04/2017
Slave
• O slave pode ser um dispositivo do tipo:• Memória.• Controlador de display (simplex – escrita).• Controlador de teclado (simplex – leitura).• Mouse (simplex – leitura).• Sensor (simplex – leitura).
25/04/2017
27
COMUNICAÇÃO SERIAL5
15725/04/2017
SERIAL EEPROM
https://www.microchip.com/pagehandler/en-us/products/memory/serialEEPROM/home.html
COMUNICAÇÃO SERIAL5
15825/04/2017
25AA010A/25LC010A
http://ww1.microchip.com/downloads/en/DeviceDoc/21832H.pdf
28 x 8-bit SPI™ Bus Serial EEPROM
COMUNICAÇÃO SERIAL5
15925/04/2017
SST25VF512
http://ww1.microchip.com/downloads/en/DeviceDoc/25076A.pdf
512 Kbit SPI™ Serial Flash
COMUNICAÇÃO SERIAL5
16025/04/2017
Memórias e barramentos
https://www.microchip.com/pagehandler/en-us/products/memory/serialSRAM/home.html
COMUNICAÇÃO SERIAL5
16125/04/2017
Vantagem da memória serial• Em um circuito integrado, geralmente, o
maior custo está no encapsulamento.• O custo de encapsulamento é devido a:
1. Pinos de alumínio (Al).2. Área plástica ou cerâmica para
acomodar os pinos.3. Fios de ouro ligando o die e os pinos4. Soldas dos fios de Au nos pinos de Al.5. Contatos de metalização (Al) no die.6. Soldas dos fios de Au no die.7. Área no die gasta com metalizações.
DIE
COMUNICAÇÃO SERIAL5
16225/04/2017
Vantagem da memória serial
8. Área no die gasta para quebarramentos cheguem até asmetalizações.
9. Soldagem dos pinos nas placas.10.Furação das placas (caso haja furos).11.Solda de estanho na placa.12.Cobre (caso haja furos cobreados).13.Área da placa gasta com barramentos.14.Custo de cabos flat para comunicação
entre placas.
Áreaútil
Die
25/04/2017
28
COMUNICAÇÃO SERIAL5
16325/04/2017
Vantagem da memória serial
• Na versão paralela, há problema de:1. Chip grande ocupa mais espaço.2. Quanto mais pinos, maior é a chance
de um ocorrer um mal contato.3. Quanto mais pinos, maior é o peso do
produto final.
COMUNICAÇÃO SERIAL5
16425/04/2017
• Todos os catorze itens aumentam com o aumentodo número de pinos dos chips.
• Como estas vias, quase sempre, interligam doischips, o aumento do número de pinos vem empares.
• Reduzir o número de vias é fundamental na reduçãodo custo de produção e no aumento do yeld.
• Quando o requisito de rapidez não é crítico, o usode memória serial torna o produto final mais barato.
• O chip de memória serial é mais barato do que ochip de memória paralela equivalente, por causa doencapsulamento menor, ainda que seja maiscomplexo internamente,.
Vantagem da memória serial
COMUNICAÇÃO SERIAL5
16525/04/2017
Vantagem da memória serial
• Comunicação com memória(HD) padrão PATA ou IDC.
• Paralelo.• Mais antigo (obsoleto).• Mais caro.
• Comunicação com memória(HD) padrão SATA.
• Série.• Mais recente.• Mais barato.
COMUNICAÇÃO SERIAL5
16625/04/2017
• Não somente memórias, mas todos os dispositivosde entrada/saída também apresentam redução decusto quando o acesso é feito de forma serial.
• Entrada:• Teclado, push-button, toogle-swich.• Mouse.• Outros sensores.
• Saída:• Lâmpada, LED, célula eletroluminescente.• Display (7-seg, alfa, 5x7, gráfico).• Outros atuadores.
Vantagem da comunicação serial
COMUNICAÇÃO SERIAL5
16725/04/2017
Display SPI™
http://guy.carpenter.id.au/gaugette/resources/2012-11-08/ssd1306.jpghttps://www.adafruit.com/images/medium/ID661_MED.jpghttp://www.plastibots.com/wordpress/wp-content/uploads/2012/03/SSD1306AdafruitOLED_1-300x199.jpghttps://www.adafruit.com/images/medium/ID931_MED.jpg
COMUNICAÇÃO SERIAL5
16825/04/2017
Display I2C™
https://www.adafruit.com/images/medium/ID931_MED.jpghttp://bringyourself.in/wp-content/uploads/2010/04/TwiLeDisp4x7s%2B2L-11.jpghttp://www.wide.hk/img/I2C_GLCD_01.jpg
25/04/2017
29
COMUNICAÇÃO SERIAL5
16925/04/2017
Display UART™
https://www.adafruit.com/images/medium/ID931_MED.jpghttp://bringyourself.in/wp-content/uploads/2010/04/TwiLeDisp4x7s%2B2L-11.jpghttp://www.wide.hk/img/I2C_GLCD_01.jpg
COMUNICAÇÃO SERIAL5
17025/04/2017
Sensor de temperatura Microwire™/SPI™
http://www.farnell.com/datasheets /1762747.pdf
• Input: Programação das configurações.• Output: Sensor em uso.
COMUNICAÇÃO SERIAL5
17125/04/2017
Controlador PWM com SPI™
http://cache.freescale.com/files/analog/doc/data_sheet/MC33999.pdf
MASTER SLAVE
PIC
COMUNICAÇÃO SERIAL5
17225/04/2017
Sensor de presença I2C™• Fully Integrated Proximity Sensor with Infrared Emitter,
I2C Interface, and Interrupt Function.
COMUNICAÇÃO SERIAL5
17325/04/2017
Conversores SPI™, I2C™, USART™ para USB
http://www.robotshop.com/media/f iles/images/devantec-usb-i2c-spi-serial-interface.jpghttp://www.robotstorehk.com/sensors/images/USB-I2C.jpg
COMUNICAÇÃO SERIAL5
17425/04/2017
• System Management Bus.• Marca registrada da Intel® Corporation.• Lançado em 1995.• Compatível com I2C™.
SM Bus™
25/04/2017
30
COMUNICAÇÃO SERIAL5
17525/04/2017
• Inter-Integrated Circuit.• Marca registrada da NXP Semiconductors.• Lançado na TecForum at DesignCon 2003
em San Jose, CA, 27/01/2003.• Março de 2003 (Application Note 10216-01).• Evolução do SMBus™.
I2C™
http://www.nxp.com/documents/user_manual/UM10204.pdf
COMUNICAÇÃO SERIAL5
17625/04/2017
I2C™
Mode Data transferStandard-mode 100 kbit/s
Fast-mode 400 kbit/sFast-mode plus 1 Mbit/s
High-speed mode 3.4 Mbit/s
COMUNICAÇÃO SERIAL5
17725/04/2017
I2C™
• Permite transmissão por meio de uma única via.• Transmissão e recepção são realizados em
momentos separados.• A comunicação é do tipo half-duplex.• Utiliza duas vias (concepção):
• SCL: Serial Clock Line.• SDA: Seria Data Line.
COMUNICAÇÃO SERIAL5
17825/04/2017
I2C™ – Idéia de funcionamento
COMUNICAÇÃO SERIAL5
17925/04/2017
Ponte SPI™ para I2C™ em VHDL
http://www.eewiki.net/display/LOGIC/SPI+to+I2C+Bridge+%28VHDL%29
SPI™ – PIC16F8776
18025/04/2017
SPI™ – PIC16F877
25/04/2017
31
SPI™ – PIC16F8776
18125/04/2017
• SSP Synchronous Serial Port• USART™ Universal Synchronous
Asynchronous Receiver Transmitter
Módulos seriais na PIC
SPI™ – PIC16F8776
18225/04/2017
• Synchronous Serial Port.• Porta serial síncrona.• Comunicação com periféricos externos ou outras MCU’s.• Quatro modos de operação.
• SPI™ master.• SPI™ slave.• I2C™ master.• I2C™ slave.
SSP
VEREMOS
VEREMOS
SPI™ – PIC16F8776
18325/04/2017
1. SSP: Synchronous Serial Port.2. BSSP: Basic SSP.3. MSSP: Master SSP (PIC16F877).
Módulo SSP – Variações
MSSP
SSP
BSSP
Recursos
VEREMOS
SPI™ – PIC16F8776
18425/04/2017
SPI™/I2C™ – Modos de operação<SSPM3:SSPM0> SSP BSSP MSSP
0000
SPI™ Master0001001000110100 SPI™ Slave01010110 I2C™ Slave01111000
ReservadoI2C™ Master
1001
Reservado
1010
1011 I2C™ Master1100 Reservado11011110 I2C™ Slave I2C™ Master1111
VEREMOS
VEREMOS
SPI™ – PIC16F8776
18525/04/2017
SPI™/I2C™ – Modos de operação
<SSPM2:SSPM0> Modo000 SPI™ Master mode clock = fOSC/4 = fCY (1:1)001 SPI™ Master mode clock = fOSC/16 = fCY/4 (1:4)010 SPI™ Master mode clock = fOSC/64 = fCY/16 (1:16)011 SPI™ Master mode clock = TMR2 output/2.100 SPI™ Slave mode clock = SCK pin. /SS pin control enabled.101 SPI™ Slave mode clock = SCK pin. /SS pin control disabled.110 I2C™ Slave mode 7-bit address.111 I2C™ Slave mode 10-bit address.
SPI™ – PIC16F8776
18625/04/2017
SPI™/I2C™ – SFR’s• SSPSTAT SSP Status Register 094h• SSPCON SSP Control Register 014h
• SSPBUF SSP Receive Buffer/Transmit Register 013h• SSPADD SSP Address Register (I2C™) 093h
• SSPCON2 SSP Control Register 2 (I2C™) 091h
• SSPSR SSP Shift Register ---
VEREMOS
VEREMOS
VEREMOS
VEREMOS
25/04/2017
32
SPI™ – PIC16F8776
18725/04/2017
SPI™/I2C™ – SFR’s – BSSP
SSPCON
SSPSTAT
0 0
SPI™ – PIC16F8776
18825/04/2017
SPI™/I2C™ – SFR’s – SSP
• Os bits SMP e CKE estão ausentes no modobásico.
• O modo básico contém SMP=0 e CKE=0, asmesmas usadas no Microwire™.
SSPCON
SSPSTAT
SPI™ – PIC16F8776
18925/04/2017
SPI™/I2C™ – SFR’s – MSSP
SSPCON2 (I2C™)
• O SFR SSPCON2 está ausente no modo normal.• A diferença entre SSP e MSSP está, apenas, no modo I2C™.
SSPCON
SSPSTATVEREMOS
VEREMOS
SPI™ – PIC16F8776
19025/04/2017
SPI™/I2C™ – Pinagem na PIC
• /SS SPI™ Slave Select 7• SCK SPI™ Synchronous Serial Clock input/output 18• SDO SPI™ Data Out 24• SDI SPI™ Data In 23
• SCL I2C™ Synchronous Serial Clock input/output 18• SDA I2C™ Data I/O 23
VEREMOS
VEREMOS
VEREMOS
VEREMOS
SPI™ – PIC16F8776
19125/04/2017
SPI™/I2C™ – Pinagem
SDOSDI/SDA
/SS
SCK/SCL
SPI™ – PIC16F8776
19225/04/2017
SPI™/I2C™ – Habilitação• SSPCON<5> SSPEN: Synchronous Serial Port Enable bit.
• 1: Habilitado.• 0: Desabilitado (reset default).
• No modo desabilitado, o módulo serial é desligado,economizando energia.
• No modo desabilitado, os pinos envolvidos na comunicaçãoserial são utilizados pela porta paralela ou AN4.• 07 RA5/AN4/SS• 18 RC3/SCK/SCL• 24 RC5/SDO• 23 RC4/SDI/SDA
25/04/2017
33
SPI™ – PIC16F8776
19325/04/2017
SPI™/I2C™ – Configuração dos pinos
• 07 RA5/AN4/SS• 18 RC3/SCK/SCL• 24 RC5/SDO• 23 RC4/SDI/SDA
reset default
• No modo master ou no modo slave 101,o pino 07 não é usado na comunicação,podendo receber RA5 ou AN4.
• No modo slave 100, o pino 07 deve serconfigurado para sinal digital por meiode ADCON1<3:0>.
<SSPM2:SSPM0> Modo100 SPI™ Slave mode clock = SCK pin. /SS pin control enabled.101 SPI™ Slave mode clock = SCK pin. /SS pin control disabled.
<PCFG3:PCFG0>
AN4
RA50000 A0001 A0010 A0011 A0100 D0101 D011x D1000 A1001 A1010 A1011 A1100 A1101 D1110 D1111 D
SPI™ – PIC16F8776
19425/04/2017
MultiplexaçãoPinagem na PIC
• /SS Slave Select• SCK Clock• SDO Data Out• SDI Data In
SPI™ – PIC16F8776
/SSNão usado
19525/04/2017
• TRISC<3> = 0 SCK Saída• TRISC<4> = 1 SDI Entrada• TRISC<5> = 0 SDO Saída• TRISA<5> = X /SS Não usado
Master – Pinagem na PIC
SDOSDISCK
SPI™ – PIC16F8776
19625/04/2017
Slave – Pinagem na PIC
SDOSDISCK
/SS• TRISC<3> = 1 SCK Entrada• TRISC<4> = 1 SDI Entrada• TRISC<5> = 0 SDO Saída• TRISA<5> = 1 /SS Entrada
SPI™ – PIC16F8776
19725/04/2017
Comunicação simplex
SDISDO
TransmissorMaster
ou Slave
ReceptorMaster
ou Slave
• TRISC<5> = 0 Saída • TRISC<4> = 1 Entrada
SPI™ – PIC16F8776
19825/04/2017
SDOSDISCK
SDOSDISCK
Master Slave
Um slave select
/SSOpcional
Bit de porta paralela/SSNão usado
25/04/2017
34
SPI™ – PIC16F8776
SDO
SDI
SCK
Master
Bits de portaparalela
/SS1
SDO1
SDI1
SCK1
Slave1
/SS2
SDO2
SDI2
SCK2
Slave2
19925/04/2017
Dois slave selectsSPI™ – PIC16F8776
20025/04/2017
Dois slave selects
• O curto-circuito entre SDO1 e SDO2 não é problema porque, como somente um deles é habilitado por vêz, entãoo desabilitado possui este pino em alta impedância (3S).
• O curto-circuito entre SDI1 e SDI2 requer que sejamobservadas as limitações de fan-out do pino SDO master.
SPI™ – PIC16F8776
20125/04/2017
Configuração Daisy-chain
Bit de portaparalela Opcional
SDO
SDI
SCK
Master
/SS
SDO1
SDI1
SCK1
Slave1
/SS
SDO2
SDI2
SCK2
Slave2
SPI™ – PIC16F8776
20225/04/2017
Modos de operação
<SSPM3:SSPM0> Modo0000 Master, clock = fOSC/4 = fCY (1:1)0001 Master, clock = fOSC/16 = fCY/4 (1:4)0010 Master, clock = fOSC/64 = fCY/16 (1:16)0011 Master, clock = TMR2out/20100 Slave, clock = SCK. /SS habilitado0101 Slave, clock = SCK. /SS desabilitado
reset default
SSPCON
SSPSTAT
SPI™ – PIC16F8776
20325/04/2017
Slave Select<SSPM3:SSPM0> Modo0100 Slave, clock = SCK. /SS habilitado0101 Slave, clock = SCK. /SS desabilitado
• No modo slave com /SS desabilitado, estepino assume a função de RA5 ou de AN4.
• No modo master, como a função /SS nãoé usada, então este pino assume a funçãode RA5 ou de AN4.• 07 RA5/AN4/SS.
• Se /SS está em uso, a configuração paraeste pino deve ser a digital por meio deADCON1<3:0> <PCFG3:PCFG0>.
SPI™ – PIC16F8776
20425/04/2017
Configuração
• SSPCON<5> SSPEN: Synchronous Serial Port Enable bit.• 1: Habilitado.• 0: Desabilitado (reset default).
• SSPCON<4> CKP: Clock Polarity Select bit.• 1: Ocioso em nível alto.• 0: Ocioso em nível baixo (reset default).
• Na comunicação entre duas MCU’s ou mais, a configuraçãode CKP deve ser a mesma para todas elas.
25/04/2017
35
SPI™ – PIC16F8776
20525/04/2017
Modos de operação
• Master: A PIC controla o relógio da comunicação.• Slave: O outro lado controla o relógio da comunicação.
• Master: SCK é a saída de relógio SPI™.• Slave: SCK é entrada de relógio SPI™.
• SCK Master: Configurar TRISC<3> = 0• SCK Slave: Configurar TRISC<3> = 1
SPI™ – PIC16F8776
20625/04/2017
Conversão série/paralelo
SPI™ – PIC16F8776
20725/04/2017
Conversão sérieparalelo
• Recepção.• O bit 7 é o primeiro a ser recebido.• A cada término de conversão o
shift register é copiado para obuffer register (master e slave).
SPI™ – PIC16F8776
20825/04/2017
Conversão paralelosérie
• Transmissão.• O bit 7 é o primeiro a ser enviado.• A cada cópia do buffer register
para o shift register, dá-se início auma conversão (master apenas).
SPI™ – PIC16F8776
20925/04/2017
Conversão série/paralelo
glitch filter
SPI™ – PIC16F8776
21025/04/2017
Conexão
25/04/2017
36
SPI™ – PIC16F8776
21125/04/2017
Conexão
http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
*Bit de porta paralela
*
SPI™ – PIC16F8776
21225/04/2017
Shift Register
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0 SDISDO
SSPSR
SPI™ – PIC16F8776
21325/04/2017
Buffer
• O buffer permite que a nova recepção sejainiciada antes da leitura da última palavrarecebida.
• O buffer não permite a escrita do mesmoantes do término da última transmissão;isso requer mais um buffer.
• O buffer também impede que palavrasincompletas sejam lidas.
• O buffer faz o papel de um holding register.
SPI™ – PIC16F8776
21425/04/2017
Conversão
ConversorParalelo
Série8-bit
8-bitSSPBUF
SPI™dataout*
8-bitdatabus
ConversorSérie
Paralelo8-bit
8-bitSSPBUF
SPI™data
in
8-bitdatabus
Receiver
Transmitter
SSPSR
SSPSR
*Vide slide seguinte.
SPI™ – PIC16F8776
21525/04/2017
Conversão série/paralelo
• A escrita no buffer register implica em uma automática cópiapara o shift register.
• A escrita no buffer do master implica em uma automáticaconversão paralelo→série.
• A escrita no buffer do slave implica em aguardar até que omaster envie o sinal serial clock para dar andamento àconversão paralelo→série.
• Se o módulo SSP está desligado (SSPCON<5> SSPEN = 0), aescrita no buffer register não implica em uma automática cópiapara o shift register e SSPBUF se comporta como um GPR.
SPI™ – PIC16F8776
21625/04/2017
Recepção – Buffer full
• SSPSTAT<0> <BF>: Buffer Full Status bit.• 0: Comunicação em andamento.• 1: Comunicação concluída.
25/04/2017
37
SPI™ – PIC16F8776
21725/04/2017
7
770
0
0
0
7
7
70
0 7
7
0SDI
• BF=1
• SSPIF=1
• SSPSRSSPBUF
• BF=?
Recepção – Buffer fullSSPSR
SPI™ – PIC16F8776
21825/04/2017
Leitura da recepção• O bit BF não pode ser alterado pelo programador.• O bit BF=1 indica que uma nova palavra foi recebida.• O bit BF=1 indica que a leitura de SSPBUF já pode ser feita.• O bit BF=1 indica que a leitura ainda não foi realizada.• O bit BF=0 indica que não há nova palavra ou que a leitura
já foi feita.• Essa leitura deve ser realizada antes da conclusão da
recepção da próxima palavra.• Ao realizar a leitura, BF=0 automaticamente.
SPI™ – PIC16F8776
21925/04/2017
Recepção
• Término daleitura do bit 0da palavra A.
• Início daleitura do bit 7da palavra B.
8 1 2 3 4 5 6 7 8 1 2 3 4 5
• Término daleitura do bit 0da palavra B.
• Início daleitura do bit 7da palavra C.
RecepçãoPalavra B Recepção
Palavra CRecepçãoPalavra A
Passo
SPI™ – PIC16F8776
22025/04/2017
Passo
8 1 2 3 4 5 6 7 8 1 2 3 4 5
RecepçãoPalavra B Recepção
Palavra CRecepçãoPalavra A
• Recepção dapalavra B.
• Possibilidadede leitura dapalavra A.
• Recepção dapalavra A.
• Possibilidadede leitura dapalavra B.
Recepção
SPI™ – PIC16F8776
22125/04/2017
• Quando a MCU age apenas como transmissor emuma comunicação simplex, o bit BF é irrelevante.
• Quando master ou slave realizam uma transmissão,ocorre, automaticamente, a recepção dos dadoscontidos no shift register do outro lado, recepçãoque é encerrada com BF=1.
• Isto significa que, mesmo em uma comunicaçãohalf-duplex, é preciso fazer BF=0 após cadatransmissão, no master e no slave.
Recepção – Buffer fullSPI™ – PIC16F8776
22225/04/2017
• Um contador de três bits identifica a conclusãoda transmissão/recepção dos oito bits.
Buffer full
3-bitCOUNTER
SPI™clock
Copiar SSPSR para SSPBUFBF=1
Se BF anterior =1 então SSPOV=1SSPIF=1
overflow
Bloquear nova comunicação
25/04/2017
38
SPI™ – PIC16F8776
22325/04/2017
Colisão
• Tentativa de escrever em SSPBUF durante arecepção ou transmissão.
• A escrita não é efetuada.• SSPCON<7> <WCOL>: Write Collision Detect bit.• 0: Não houve colisão.• 1: Houve colisão.• Trata-se de um flag, não pode receber BSF, deve
ser zerado manualmente.
SPI™ – PIC16F8776
22425/04/2017
7
770
0
0
0
7
7
70
0 7
7
0SDISDO
• Não é permitidoescrever em SSPBUF.
• Ao tentar escreverem SSPBUF: WCOL=1
• É permitido escrever em SSPBUF.
Colisão
SPI™ – PIC16F8776
22525/04/2017
Overflow
• SSPCON<6> <SSPOV>: Receive Overflow Indicator bit.• 0: Não houve overflow.• 1: Houve overflow.• Uma nova palavra foi recebida enquanto BF=1.• A palavra anterior foi perdida.• Este bit somente funciona no slave, pois, no master, há total
controle do instante da recepção.• Mesmo que o slave apenas transmita, é preciso sempre lerSSPBUF após as transmissões a fim de fazer BF=0 e SSPOV=0.
• Trata-se de um flag, não pode receber BSF, deve ser zeradomanualmente.
SPI™ – PIC16F8776
22625/04/2017
Conversão série/paraleloTransmitter
• SSPBUF recebe a palavra de oito bits do data bus.• Sendo master, a transmissão é iniciada.• Sendo slave, o sinal de relógio do master é aguardado.• SSPBUF mantém os oito bits da palavra até que todos os oito
bits tenham sido enviados ao pino de saída serial por meio deSSPSR. Após isso, é possível alterar SSPBUF.
• Não é permitida a escrita em SSPBUF durante a transmissão.• Se fosse permitida, uma escrita em SSPBUF durante a
transmissão invalidaria a transmissão em andamento, pois aescrita em SSPBUF dá início, automaticamente, a uma novatransmissão.
SPI™ – PIC16F8776
22725/04/2017
Conversão série/paraleloReceiver
• SSPSR recebe os oito bits do pino de entrada serial.• Quando os oito bits já forem recebidos, SSPSR é copiado
para SSPBUF, que pode ser copiado para o data bus.• Na cópia do SSPSR para SSPBUF, BF=1
automaticamente, no master e no slave.• Não é permitida a escrita em SSPBUF durante a recepção.• Se fosse permitida, uma escrita em SSPBUF durante a
recepção invalidaria a recepção em andamento, pois aescrita em SSPBUF dá início, automaticamente, a umanova transmissão.
SPI™ – PIC16F8776
22825/04/2017
SDO 7 6 5 4 3 2 1 06 5 4 3 2 1 0 x
5 4 3 2 1 0 x x
4 3 2 1 0 x x x3 2 1 0 x x x x2 1 0 x x x x x1 0 x x x x x x
0 x x x x x x x
SDI
x x x x x x x x
Gravado por meio de escrita em SSPBUF.
Master
Deslocamentos automáticos após escrita em SSPBUF.
Copiado automaticamente para SSPBUF; BF=1.
Situação 1 – Master para slave – Half duplex
25/04/2017
39
SPI™ – PIC16F8776
22925/04/2017
SDO SDISlave
x x x x x x x x
x x x x x x x 7
x x x x x x 7 6x x x x x 7 6 5
x x x x 7 6 5 4 x x x 7 6 5 4 3 x x 7 6 5 4 3 2
x 7 6 5 4 3 2 1
7 6 5 4 3 2 1 0Copiado automaticamente para SSPBUF; BF=1.
Deslocamentos automáticos em função de SCK e /SS.
Situação 1 – Master para slave – Half duplexSPI™ – PIC16F8776
23025/04/2017
Situação 1 – Master para slave – Half duplex
7 6 5 4 3 2 1 0Shift register
7 6 5 4 3 2 1 0Buffer
x x x x x x x xShift register
x x x x x x x xShift register
x x x x x x x xBuffer
7 6 5 4 3 2 1 0Shift register
7 6 5 4 3 2 1 0Buffer
7 6 5 4 3 2 1 0Shift register
x x x x x x x xShift register
x x x x x x x xShift register
7 6 5 4 3 2 1 0Shift register
(1)
Slave Receiver Master Transmitter
(2)
(3)
(4)
SPI™ – PIC16F8776
23125/04/2017
Situação 1 – Master para slave – Half duplex
1. O buffer master recebe a palavra a ser transmitida.Simultaneamente, o shifter master recebe uma cópia.
2. Bit a bit, a palavra é enviada ao slave. Simultaneamente,o master recebe a palavra irrelevante (X) do slave.
3. O shifter master recebe a palavra do shifter slave e vice-versa.
4. Terminado o deslocamento dos oito bits, o shifter slave écopiado, automaticamente, para o buffer slave , o shiftermaster é copiado, automaticamente, para o buffer master.
5. BF=1 no master e no slave.
SPI™ – PIC16F8776
23225/04/2017
Situação 2 – Master para slave – Simplex
7 6 5 4 3 2 1 0Shift register
7 6 5 4 3 2 1 0Buffer
x x x x x x x xShift register
0 0 0 0 0 0 0 0Shift register
0 0 0 0 0 0 0 0Buffer
7 6 5 4 3 2 1 0Shift register
7 6 5 4 3 2 1 0Buffer
7 6 5 4 3 2 1 0Shift register
x x x x x x x xShift register
0 0 0 0 0 0 0 0Shift register
7 6 5 4 3 2 1 0Shift register
(1)
Slave Receiver Master Transmitter
(2)
(3)
(4)
SPI™ – PIC16F8776
23325/04/2017
SDO SDIx x x x x x x x
x x x x x x x 7
x x x x x x 7 6x x x x x 7 6 5
x x x x 7 6 5 4 x x x 7 6 5 4 3 x x 7 6 5 4 3 2
x 7 6 5 4 3 2 1
7 6 5 4 3 2 1 0
MasterGravado por meio de escrita em SSPBUF.
Copiado automaticamente para SSPBUF; BF=1.
Situação 3 – Slave para master – Half duplexSPI™ – PIC16F8776
23425/04/2017
SDO 7 6 5 4 3 2 1 06 5 4 3 2 1 0 x
5 4 3 2 1 0 x x
4 3 2 1 0 x x x3 2 1 0 x x x x2 1 0 x x x x x1 0 x x x x x x
0 x x x x x x x
SDI
x x x x x x x x
Slave
Deslocamentos automáticos em função de SCK e /SS.
Copiado automaticamente para SSPBUF; BF=1.
Situação 3 – Slave para master – Half duplex
25/04/2017
40
SPI™ – PIC16F8776
23525/04/2017
Situação 3 – Slave para master – Half duplex
x x x x x x x xShift register
7 6 5 4 3 2 1 0Shift register
7 6 5 4 3 2 1 0Shift register
7 6 5 4 3 2 1 0Buffer
x x x x x x x xShift register
x x x x x x x xBuffer
x x x x x x x xShift register
7 6 5 4 3 2 1 0Shift register
7 6 5 4 3 2 1 0Shift register
x x x x x x x xShift register
Slave Transmitter Master Receiver
7 6 5 4 3 2 1 0Buffer
(1)
(3)
(4)
(5)
x x x x x x x xBuffer
(2)
SPI™ – PIC16F8776
23625/04/2017
Situação 3 – Slave para master – Half duplex1. O buffer slave recebe a palavra a ser transmitida.
Simultaneamente, o shifter slave recebe uma cópia.2. O slave aguarda sinalização para comunicação.3. O buffer master recebe uma palavra irrelevante (X) para dar
início à transmissão.4. A palavra é enviada do slave ao master bit a bit assim que a
oscilação do clock é iniciada pelo master. Simultaneamente, oslave recebe a palavra irrelevante (X) do master.
5. O shifter slave recebe a palavra do shifter master e vice-versa.6. Terminado o deslocamento dos oito bits, o shifter slave é
copiado, automaticamente, para o buffer slave , o shiftermaster é copiado, automaticamente, para o buffer master.
7. BF=1 automaticamente no master e no slave.
SPI™ – PIC16F8776
23725/04/2017
Situação 4 – Slave para master – Simplex
x x x x x x x xShift register
7 6 5 4 3 2 1 0Shift register
7 6 5 4 3 2 1 0Shift register
7 6 5 4 3 2 1 0Buffer
0 0 0 0 0 0 0 0Shift register
0 0 0 0 0 0 0 0Buffer
x x x x x x x xShift register
7 6 5 4 3 2 1 0Shift register
7 6 5 4 3 2 1 0Shift register
0 0 0 0 0 0 0 0Shift register
Slave Transmitter Master Receiver
7 6 5 4 3 2 1 0Buffer
(1)
(3)
(4)
(5)
x x x x x x x xBuffer
(2)
SPI™ – PIC16F8776
23825/04/2017
Situação 5 – Full duplex
H G F E D C B AShift register
P O N M L K J IShift register
P O N M L K J IShift register
P O N M L K J IBuffer
H G F E D C B AShift register
H G F E D C B ABuffer
H G F E D C B AShift register
P O N M L K J IShift register
P O N M L K J IShift register
H G F E D C B AShift register
Slave Transmitter Master Transmitter
P O N M L K J IBuffer
(1)
(3)
(4)
(5)
H G F E D C B ABuffer
(2)
SPI™ – PIC16F8776
23925/04/2017
Situação 5 – Full duplex1. O buffer slave recebe a palavra slave. Simultaneamente, o
shifter slave recebe uma cópia.2. O slave aguarda sinalização para comunicação.3. O buffer master recebe a palavra master. Simultaneamente, o
shifter master recebe uma cópia.4. A palavra master é enviada ao slave bit a bit assim que a
oscilação do clock é iniciada pelo master. Simultaneamente, apalavra slave é enviada ao master bit a bit.
5. O shifter slave recebe a palavra do shifter master e vice-versa.6. Terminado o deslocamento dos oito bits, o shifter slave é
copiado, automaticamente, para o buffer slave , o shiftermaster é copiado, automaticamente, para o buffer master.
7. BF=1 automaticamente no master e no slave.
SPI™ – PIC16F8776
24025/04/2017
Situação 5 – Full duplex
• Do ponto de vista da PIC, a comunicação é semprefull duplex.
• A comunicação é considerada half duplex quando acomunicação relevante é sempre em um único sentido,e este sentido pode mudar em instantes diferentes.
• A comunicação é considerada simplex quando não hácírculo das informações, o caminho é aberto, um ladosomente transmite e o outro lado somente recebe.
25/04/2017
41
SPI™ – PIC16F8776
24125/04/2017
Sinalização
• O protocolo SPI™ na PIC possiu três bits de sinalização:1. SSPSTAT<0> <BF>: Buffer Full Status bit.2. SSPCON<7> <WCOL>: Write Collision Detect bit.3. SSPCON<6> <SSPOV>: Receive Overflow Indicator bit.• O uso desses bits é opcional, porém recomendado.• O bit WCOL faz parte da concepção do protocolo SPI™.
SPI™ – PIC16F8776
24225/04/2017
Master – SPI™ prescaler
Para o SR
TCY
1,4,16
Na página 256 do data sheetmid range está errado
MUX211-bit
<SSPM3:SSPM0> Modo0000 Master, clock = fOSC/4 = fCY (1:1)0001 Master, clock = fOSC/16 = fCY/4 (1:4)0010 Master, clock = fOSC/64 = fCY/16 (1:16)
• Contador prescaler de 4 bits.
SPI™ – PIC16F8776
24325/04/2017
<SSPM3:SSPM0> Modo0000 Master, clock = fOSC/4 = fCY (1:1)0001 Master, clock = fOSC/16 = fCY/4 (1:4)0010 Master, clock = fOSC/64 = fCY/16 (1:16)
Master – SPI™ prescaler• A velocidade da comunicação depende doTMR2 prescaler ratio e do SPI™ prescaler ratio.
• Dois TCY´s são gastos da leitura do SSPBUF.• Dois TCY´s são gastos da escrita do SSPBUF.
;escrita por literalMOVLW 0x45 ;literalMOVWF SSPBUF
;escrita por GPRMOVF 0x45,W ;GPRMOVWF SSPBUF
;leituraMOVF SSPBUF,W ;SFRMOVWF 0x23 ;GPR
SPI™ – PIC16F8776
24425/04/2017
Master – TMR2 output
TCY
1,4,16
<SSPM3:SSPM0> Modo0011 Master, clock = TMR2out/2
<T2CKPS1:T2OUTPS0> Rate
00 1:101 1:41x 1:16
<SSPM3:SSPM0>
Rate0000 1:10001 1:40010 1:16
SPI™ – PIC16F8776
24525/04/2017
Master – TMR2 output
• TMR2out fornece o período de duas rampas de TMR2.• A frequência de TMR2out depende o TMR2 prescaler
ratio, mas não do TMR2 postscaler ratio.• A frequência de TMR2out depende do PR2.• A frequência de TMR2out corresponde à metade da
frequência PWM da função PWM do CCP.
PR2<7:0>
t
<T2CKPS1:T2OUTPS0> Rate
00 1:101 1:41x 1:16
Vide exemplos
SPI™ – PIC16F8776
24625/04/2017
CKPSSPCON<4>
CKESSPSTAT<6>
Transmissão
0 0Borda de subida de SCK
1 10 1
Borda de descida de SCK1 0
Master
CKPSSPCON<4>
Significado
0 Clock inativo em nível baixo.1 Clock inativo em nível alto.
reset default
• SSPCON<4> CKP: Clock Polarity Select bit.• SSPSTAT<6> CKE: SPI™ Clock Edge Select.
25/04/2017
42
SPI™ – PIC16F8776
24725/04/2017
Master
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
SPI™ – PIC16F8776
24825/04/2017
Master
SPI™ – PIC16F8776
24925/04/2017
Master
• O master pode iniciar a comunicação em qualquerinstante, pois controla o clock do SPI™, desde que nãointerrompa uma comunicação em curso.
• Quando o master dá início à transmissão, também dáinício à oscilação no pino SCK.
• O master determina quando o slave fará a comunicação.• Quando o slave recebe a oscilação no pino SCK e a
entrada /SS está em zero, inicia a recepção.• Opcionalmente, o slave pode ser insensível a /SS.• A comunicação (transmissão ou recepção) tem início
quando o master SSPBUF sofre uma escrita.
SPI™ – PIC16F8776
25025/04/2017
Master – Sinal /SS
• Se o slave está com o controle por /SS habilitado, este bitdeve ser fornecido pelo master e seu controle é feito por meiodo programa em execução no master.
• A geração do sinal /SS para o slave não é automática, deveestar prevista no programa. Isto permite que vários slavessejam selecionáveis.
• O programa deve realizar os comandos BSF, BCF ou qualqueroutra operação de escrita que configure o bit da porta paralelaque está ligado à entrada /SS do slave.
• O programa deve enviar valor zero quando a comunicaçãoestiver ativa, e um quando estiver inativa (iddle).
SPI™ – PIC16F8776
25125/04/2017
Slave
• <SSPM3:SSPM0>: Synchronous Serial Port Mode Select bits.• SSPCON<3:1> <SSPM3:SSPM1> = 010
• SSPCON<0> SSPM0 = 0: Controle por /SS habilitado.• SSPCON<0> SSPM0 = 1: Controle por /SS desabilitado.• Se o slave está com o controle por /SS habilitado, este bit
deve ser fornecido pelo master e seu controle é feito por meiodo programa em execução no master.
• Estando /SS desabilitado, o pino correspondente é utilizadopela outra função que compartilha o pino (RA5 ou AN4).
<SSPM3:SSPM0> Modo0100 Slave, clock = SCK. /SS habilitado0101 Slave, clock = SCK. /SS desabilitado
SPI™ – PIC16F8776
25225/04/2017
Slave
• Se o slave está com o controle por /SS habilitado, o valor1 impede qualquer shift no slave.
• O valor 1 coloca e mantém todos os bits do shift registerem zero.
• A mudança de 0 para 1 interrompe a comunicação com oslave instantaneamente, zerando todos os bits do slaveshift register.
• Como a contagem de três bits não foi concluída, a cópiaautomática deste registrador para o buffer não érealizada e o bit BF não recebe valor 1.
25/04/2017
43
SPI™ – PIC16F8776
SCK
SCK
25325/04/2017
Circuito de deslocamento
Relógio interno
Mas
ter
Slav
e
glitch filter
glitch filter
SPI™ – PIC16F8776
25425/04/2017
Slave
0: slave selecionado1: slave inibido
• O buffer 3S na saída permite que se liguevários slaves no mesmo circuito, emparalelo, sem a ocorrência de danos.
• Somente um slave é acionado por vêz,enquanto os demais estão com SDO em 3S.
glitch filter
No data sheet está errado
SPI™ – PIC16F8776
25525/04/2017
Slave
SSPCON<0> SSPM0
Pino SCKGerador de clock
proveniente do master.
0: selecionado1: não selecionado
0: com /SS1: sem /SS
<SSPM3:SSPM0> Modo0100 Slave, clock = SCK. /SS habilitado0101 Slave, clock = SCK. /SS desabilitado
glitch filter
SPI™ – PIC16F8776
25625/04/2017
SSPM0 /SS Habilitação0 0 Sim0 1 Não1 0 Sim1 1 Sim
habilitação=/(/SSPM1/SS)
SSPM0 /SS En0 0 00 1 11 0 01 1 0
Slave
glitch filter
SSPM0
No data sheet está errado