Sie sind auf Seite 1von 41

Comunicao serial Microcontroladores PIC 18F

Parte 1

Prof. Ilton L Barbacena iltonlb@gmail.com

Comunicao - Estado da arte


Interface Rs232 Rs485 Ethernet
Firewire 800

Formato
Serial Assncrona Serial Assncrona Serial

Qtde de dispositivos 2 32 - 256 1024 64 15 40 8 2 2 8 127

Distncia (ft) 50-100 4000 1600 300 60 18 10 50 10-30 10


16 (1 hub) 98 (5 hubs)

Bps (mx) 20k 10M 10G 3.2G 8M 3.4M 2M 31.5k 8M 2.1M


1.5M, 12M e 480M

Aplicao modem
Controle de Sistema

PC Vdeo
Instrumentao

Serial Paralela Serial sncrona Serial loop de corrente Serial sncrono Paralela Serial sncrono Serial Assncrona

GPIB I2C Microwire Midi Lpt SPI USB

PCI e uC PCI e uC Msica Impressora PCI e uC Pc e uC


2 / 40

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

Comunicao serial na linha PIC 18F


SPI (Serial Peripheral Interface)
Protocolo criado pela empresa Motorola; Utiliza 3 fios: Clock, Data IN, Data Out; Comunicao sncrona

I2C (Inter-Integrated Circuit)


Protocolo criado pela empresa Philips (1980); Utiliza 2 fios: Clock (RC3), Data(RC4); Comunicao sncrona

USART
Protocolo universal: sncrona e assncrona.

USB (alguns dispositivos: 18F4550)


Comunicao assncrona
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 3 / 40

Conceitos bsicos
Linguagem de Programao
A programao de uma interface serial pode usar qualquer linguagem, e a linguagem no tem que ser a mesma em cada computador. A nica exigncia que os dois computadores devem concordar com as regras estabelecidas para a comunicao. Programas escritos em microcontroladores acessam os registros diretamente ou usam funes da biblioteca do programa.

Protocolos: I2C, SPI, USB, SPI


Conjunto de regras que define como computadores vo gerenciar as comunicaes. Comunicao serial deve implementar um protocolo de comunicao de baixo nvel ou usar um protocolo de troca de mensagens, em um nvel mais alto.
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 4 / 40

Comunicao sncrona: I2C x SPI


SPI No enderevel, portanto, comunicao com apenas um dispositivo. Existe a opo do 4 pino RA5 (SS) para habilitao de dispositivos Apenas um mestre na rede, quando expandida, usando 4 pinos. Necessita mapeamento de I/O e pinos do uC para expandir o barramento 8 bits de dados em (RC4 e RC5) Conceito mestre / escravo O mestre controla o clock (RC3) I2C Enderevel, 7 bits (128 dispositivos) ou 10 bits (1024 dispositivos). Utiliza os pinos RC3 (Clock) e RC4 (Data), que devem estar com resistor de pull-up. Possibilidade de vrios mestres , entretanto, com apenas um mestre ao mesmo tempo. 8 bits de dados em (RC4) Conceito mestre / escravo O mestre controla o clock (RC3)

O barramento SPI e I2C usam os mesmo recursos do microcontrolador (registradores e pinos). Portanto, o uso de um deles, inibe o uso do outro.
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 5 / 40

Protocolo ou barramento SPI

Para comunicao com mais de um dispositivo necessrio utilizar o pino SS (RA5) e o processador implementar um mapeamento de I/O para habilitar somente um dispositivo ao mesmo tempo.

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

6 / 40

Protocolo ou barramento I2C


Barramento multi-master Qualquer dispositivo pode ser mestre na mesma rede I2C, podendo iniciar uma comunicao; No incio do processo, apenas o mestre pode iniciar a comunicao enviando o sinal de clock, os demais dispositivos devem estar configurados como escravos; A comunicao sncrona, com dois fios: Clock e Data; O controle da comunicao sempre pelo mestre, que controla o clock; Necessidade de resistores de 1 a 10K, de pull-up, para evitar conflitos no barramento dados; O valor padro nos barramentos alto. E os bits so lidos sempre na transio de descida do clock;
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 7 / 40

Protocolo ou barramento I2C


O protocolo, on-chip, admite 2 modos diferentes de especificar o endereo do dispositivo, que deve ser nico:
7 bits: rede com at 128 dispositivos; 10bits: rede com at 1024 dispositivos;

Tornou-se o padro mundial para comunicao entre CIs, na mesma placa; Atualmente existem mais de 150 dispositivos cmos e bipolar, que implementam o protocolo I2C (memrias, LCDs, RTCs, microcontroladores, etc); No barramento I2C no se pode colocar dispositivos que no implementam I2C.
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 8 / 40

Velocidades de transmisso no I2C


Velocidades de clock padro so 100kHz e 10kHz, mas o padro permite utilizar velocidades de clock de zero a 100 kHz; Um modo rpido tambm est disponvel (400kHz - Fast-mode); Existe tambm uma velocidade ainda maior (3.4MHz - modo de alta velocidade) para aplicaes mais exigentes; Nos PICs so implementados barramentos com at 400kHz.

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

9 / 40

Histria do barramento I2C


Desenvolvido pela Philips em 1980, para aplicao em TV, com objetivo de reduzir os barramentos nas placas, bem como, os distrbios por interferncia eletromagntica (EMI) e descarga eletrosttica (ESD). Hoje, o barramento I2C utilizado em muitos outros campos de aplicao de equipamentos de udio e vdeo. O barramento I2C tem sido adotada por diversos fabricantes de chips de ponta como Xicor, ST Microelectronics, a Infineon Technologies, Intel, Texas Instruments, Maxim, Atmel, Analog Devices, Microchip e outros.
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 10 / 40

Funcionamento do I2C

Cada dispositivo conectado ao barramento tem o seu prprio endereo, no importa se uma CPU, excitador do LCD, memria, RTC, LCD, etc; Cada um destes chips podem funcionar como receptor e / ou transmissor, dependendo da funcionalidade. Obviamente, um controlador de LCD apenas um receptor, enquanto que uma memria ou I / O chip pode ser o transmissor e receptor.
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 11 / 40

Funcionamento do I2C
O barramento I2C um barramento multi-mestre. Isso significa que mais de um IC capaz de iniciar uma transferncia de dados; O protocolo I2C determina que o CI que inicia uma transferncia de dados no barramento considerado o mestre. Por conseguinte, nesse momento, todos os outros CIs so configurados para ser escravos do barramento. Os mestres so geralmente os microcontroladores; Normalmente o mestre quer sempre enviar ou ler dados de um escravo; Condies possveis: start, stop, re-start, acknowledge, transmisso de endereo, transmisso de dados e pausas;
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 12 / 40

Condio de start e stop


Geralmente cabe a CPU emitir uma condio de start, agindo como um alerta, a todos os dispositivos conectados ao barramento; Em geral em barramento de multi-mestre, este sinal serve tambm para informar aos demais mestres, que a linha est ocupada; A partir desta condio todos os demais dispositivos ficam ouvindo o barramento; A condio de stop, tem o efeito contrrio da condio de start, ou seja, o barramento fica disponvel a quem quiser transmitir; O dado na linha SDA precisa ser estvel durante o perodo ALTO do clock. A mudana entre os nveis lgicos alto e baixo s podem ser feitas enquanto a sinal de clock estiver BAIXO.

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

13 / 40

Condio de start e stop


SDA : Serial Data SCL : Serial Clock

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

14 / 40

Condio de start e stop


Depois que o envio de uma mensagem foi concludo, uma condio de parada enviado. Este o sinal para todos os dispositivos no barramento fique novamente disponvel (idle). Se um chip foi acessado e recebeu os dados durante a ltima operao, ele vai agora processar essa informao (se ainda no processou durante a recepo da mensagem). Uma nica mensagem pode conter vrias condies de start. O uso deste assim chamado re-start" comum em I2C. A condio de Stop sempre denota o fim de uma transmisso., mesmo que seja emitido no meio de uma transao ou no meio de um byte. Neste caso, desconsiderado as informaes enviadas e retoma ao "estado de escuta", espera de uma condio de start, de novo.
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 15 / 40

Procedimentos no I2C
1. 2. 3. 4. 5.

6.

O dispositivo mestre ajusta a condio inicial (start). O dispositivo mestre envia 7 bis de endereamento. O dispositivo mestre envia o 8 bit, RW/ O dispositivo escravo envia o sinal de ACK (Acknowledge) O dispositivo mestre (ou escravo) envia pacotes de 8 bits de dados, sempre seguidos de um sinal ACK enviado pelo dispositivo escravo (ou mestre) confirmando a recepo. O dispositivo mestre encerra a comunicao (stop).
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 16 / 40

Procedimentos no I2C
O endereamento default feito com 7 bits, mas existe o modo estendido que possibilita o uso de 10 bits de endereamento (1024 dispositivos); A quantidade de pacotes de transmisso controlada pelo dispositivo mestre, no possuindo um valor mximo definido. Este um ponto importante a ser observado, pois como os dados so transmitidos serialmente, na utilizao de memrias, perde-se os limites de endereamento que existem nos dispositivos paralelos; A comunicao pode ser suspensa, simplesmente travando-se o sinal de clock. Isto pode ser til para efetuar o tratamento de interrupes ou derivados, sem, no entanto, corromper os dados transmitidos.
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 17 / 40

Procedimentos no I2C
O endereamento default feito com 7 bits, mas existe o modo estendido que possibilita o uso de 10 bits de endereamento (1024 dispositivos). Neste caso, utiliza-se 2 bytes para envio do endereo, e neste caso, no segundo byte, enviado 1110 para os bits de 7 a 3; O ltimo bit (LSB) do primeiro byte usado como flag. Se zero, indica que o mestre vai enviar dados ao escravo e se 1, o contrrio; A quantidade de pacotes de transmisso controlada pelo dispositivo mestre, no possuindo um valor mximo definido. Este um ponto importante a ser observado, pois como os dados so transmitidos serialmente, na utilizao de memrias, perde-se os limites de endereamento que existem nos dispositivos paralelos; A comunicao pode ser suspensa, simplesmente travando-se o sinal de clock. Isto pode ser til para efetuar o tratamento de interrupes ou derivados, sem, no entanto, corromper os dados transmitidos.
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 18 / 40

Procedimentos no I2C
Depois do trmino da transferncia da parte relacionada ao endereo, o mestre ou escravo (a depender do flag), deve transmitir um ou mais dados; Caso seja o escravo que esteja transmitindo, o mestre deve responder com ack=1, no trmino do ltimo byte recebido e depois enviar uma condio de stop; Com isso, o mestre informa ao escravo que no deseja receber mais nenhum dado, tornando o protocolo mais robusto.
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 19 / 40

I2C no 18F4520
Preparado para trabalhar com multi-master Deve-se configurar iniciar os pinos do barramento como entrada (set_TRIS) para que fiquem em alta impedncia; Se na comunicao o PIC estiver como master, configurar o pino SCL como sada; A tabela a seguir detalha os registradores envolvidos na comunicao I2C; Um destaque ao registrador SSPAD, que tem dupla funcionalidade:
Slave: contm o endereo do dispositivo Master: contm a taxa de comunicao
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 20 / 40

I2C no 18F4520
Pinos usados: Serial clock (SCL) RC3/SCK/SCL Serial data (SDA) RC4/SDI/SDA Registradores: MSSP Control Register 1 (SSPCON1) MSSP Control Register 2 (SSPCON2) MSSP Status Register (SSPSTAT) Serial Receive/Transmit Buffer Register (SSPBUF) MSSP Shift Register (SSPSR) Not directly accessible MSSP Address Register (SSPADD)

O mdulo MSSP implementa completamente todas as funes mestre e escravo, prev interrupes ao iniciar e no fim da comunicao, bem como, o modo de endereamento de 7 bits e 10 bits.
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 21 / 40

I2C no 18F4520
SSPSTAT : MSSP STATUS REGISTER

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

22 / 40

I2C no 18F4520
SSPCON1: MSSP STATUS REGISTER

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

23 / 40

I2C no 18F4520
SSPCON2 : MSSP STATUS REGISTER

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

24 / 40

I2C no PIC CCS

O CCS possui drivers instalados que podem ser utilizados ou se construir novos drivers.
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 25 / 40

I2C no PIC CCS

Opo para habilitar interrupo para I2C


IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 26 / 40

RTC (Real Time Clock)


RTC , basicamente, como um relgio, acompanhado de uma bateria e mantm o tempo para voc mesmo quando h uma queda de energia; Usando um RTC, voc pode acompanhar prazos longos, mesmo se voc reprogramar sua placa ou seu micro ou desconect-lo da USB ou desconectar o cabo de alimentao. O RTC e o relgio ficam instalados na placa.

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

27 / 40

RTC DS1307
DS1307 , um chip RTC completo e que por utilizar interface de comunicao I2C, permite uma fcil integrao aos sistema que implementam esta interface. Consome menos de 500nA e com uma bateria de Ltio de 48mAh, consegue-se uma autonomia de 10 anos; O custo do circuito integrado DS1307 de R$ 5,00, que adicionado a um cristal oscilador de 32.768 kHz e bateria (com soquete), o custo total do relgio completo fica menos de R$ 20,00. Configurao dos 5 pinos no esquema de ligaes do RTC-DIP8:
8: 5V utilizada para alimentar o chip RTC. Se faltar o sinal de 5V, o chip vai dormir usando a bateria; 4: GND para a bateria e o terra da placa; 5: SCL pino do clock do I2C; 6: SDA o pino de dados do I2C; 7: SQW a sada de uma onda quadrada configurada :1Hz, 4 Khz, 8 Khz e 32 Khz ; 1 e 2: X1 e X2 so os pinos para ligao do cristal de 32.768 kHz, que gera 1Hz; 3:Vbat pino para ligao do lado positivo da bateria
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 28 / 40

RTC DS1307
Endereo do DS1307 no barramento I2C: 0x68 (1101000X); A memria RAM do CI vai de 0x00 a 0x3F, sendo os 7 primeiros endereos reservados para os registradores de configurao do chip; Os valores so armazenados em BCD no RTC e portanto devem ser convertidos para ASCII antes de serem enviados para a serial ou LCD.

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

29 / 40

RTC DS1307
End 0x07 bit7 OUT bit6 0 bit5 0 bit4
SQWE

bit3 0

bit2 0

bit1 RS1

bit0 RS0

O registro do endereo 0x07 controla a sada do pino 7:


Se SQWE=0, desabilita sada de onda quadrada: se out=1, o sinal no pino 7 fica zero, e se out= 0 o sinal no pino 7 fica 1; SQWE=1, habilita sada de um sinal de onda quadrada no pino 7, cuja frequencia depender de RS1 e RS0:
Se 00 Se 10 1Hz 8.192kHz Se 01 SE 11 4.096kHz 32.768kHz

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

30 / 40

RTC DS1307
End 0x00 0x01 bit7 CH 0 1224 bit6 bit5 Seg (x10) Ampm H(x10) H(x10) bit4 bit3 bit2 bit1 bit0 Seg (x1) H (x1)

O registro do endereo 0x00 contm os valores de segundos e o bit de controle CH que liga (0) e desliga o relgio (1). O bit 6 e 5 do endereo 0x01 define o formato do relgio: Se 1224=0 seleciona o modo 24h e o bit 5 guarda Hx10. Quando 1224=1, seleciona o modo 12h, e neste caso, se ampm=1 indica PM e qdo ampm=0, indica AM.

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

31 / 40

RTC DS1307
Os 3 bits menos significativos do registro do endereo 0x03 so reservados para entrada do dia da semana (1 a 7): 7=domingo, 1 =segunda, etc; Os bits 5 e 4 do registro do endereo 0x04 so reservados para entrada de dezena do dia do ms (10xdia) e os bits 3, 2, 1 e 0 para entrada de unidades do dia do ms (1xdia); Os bits 4 do registro do endereo 0x05 reservado para entrada da dezena do ms (10xms) e os bits 3, 2, 1 e 0 para entrada de unidades do ms(1xdia); Os bits 7, 6 5 e 4 do registro do endereo 0x06 reservado para entrada da dezena do ano(10xano) e os bits 3, 2, 1 e 0 para entrada de unidades do ano (1xano);
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 32 / 40

Eeprom 24C04
Capacidades: 512x8 Tempo escrita (total): 10ms Durao: 1 milho escritas Velocidade (I2C): at 400KHz Consumo: 2mA (ativa) / 8uA(SB) A0 (no conectado eletricamente) WC=0 normal, WC=1 Protege

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

33 / 40

Biblioteca para 24LC04B


init_ext_eeprom();
Precisa ser chamada antes de qualquer outra funo;

write_ext_eeprom(adr, byte);
Escreve um byte no endereo adr

d = read_ext_eeprom(adr);
Faz a leitura de um byte no endereo adr

b = ext_eeprom_ready();
Retorna verdadeiro se a eeprom est disponvel para uso;
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 34 / 40

Biblioteca para DS1307


ds1307_init();
Precisa ser chamada antes de qualquer outra funo;

ds1307_set_date_time(day, mth, year, dow, hour, min, sec) ; Acerta o relgio

d = ds1307_get_date(day, mth, year, dow)


Faz a leitura da data e do dia da semana

b = ds1307_get_time(hr, min, sec)


Faz a leitura do tempo;
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 35 / 40

Biblioteca para DS1307


ds1307_set_date_time(day, mth, year, dow, hour, min, sec)
byte sec, byte min, byte hour, byte dow byte day, byte month, byte year // 0-59 // 0-59 // 1-23 // dayOfWeek => 1-7 (7 = domingo) // 1-28/29/30/31 // 1-12 // 0-99

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

36 / 40

Biblioteca para DS1307


Funes secundrias para DS1307
// Converte decimal para BCD byte decToBcd(byte val) } return ( (val/10*16) + (val%10) ); { // Converte BCD para decimal byte bcdToDec(byte val) } return ( (val/16*10) + (val%16) ); {
IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011 37 / 40

Fusveis para 18F4520

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

38 / 40

PIC CCS teclas de atalho

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

39 / 40

Fontes consultada
http://www.esacademy.com/en/library/technical-articles-anddocuments/miscellaneous/i2c-bus.html http://www.robot-electronics.co.uk/acatalog/I2C_Tutorial.html http://www.best-microcontroller-projects.com/i2c-tutorial.html http://tronixstuff.files.wordpress.com/2010/05/example7p33.pdf
http://microcontroladores-c.blogspot.com/2010/11/usando-rtc-ds1307.html

Livros:
Sousa, R. D. e outros; Desbravando o Microcontrolador PIC18 Recursos Avanados, Editora rica, 2010 Miyadaira, N. A; Microcontroladores PIC18 Linguagem C, Editora rica, 2009.

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

40 / 40

Comunicao serial Microcontroladores PIC 18F


Parte 1

Obrigado

IFPB Engenharia Eltrica - Prof. Dr. Ilton Luiz Barbacena - 2011

41 / 40

Das könnte Ihnen auch gefallen