Guia Prático: Manipulação de I/O no PIC com LEDs e Botões
Tutorial Prático: Comunicação I²C entre PIC e Periféricos
Nesta etapa de aprendizado, vamos explorar o barramento I²C (Inter-Integrated Circuit) e sua importância na comunicação entre o PIC
Exemplos Práticos em Assembly: Quando Vale a Pena Programar em Baixo NívelExplore como a programação Assembly em PIC maximiza controle de hardware com alta eficiência, ideal para sistemas críticos e dispositivos de baixa energia. e uma variedade de periféricos
Entendendo a Arquitetura dos PIC: Memória, Registradores e PeriféricosDescubra conceitos essenciais de arquitetura Harvard, memória, registradores e periféricos dos microcontroladores PIC para projetos eficientes.. O objetivo é fornecer uma visão prática de como esse protocolo pode simplificar projetos, permitindo a conexão de múltiplos dispositivos usando apenas dois fios principais: SDA (Serial Data) e SCL (Serial Clock).
Visão Geral do I²C🔗
O I²C é um protocolo de comunicação serial e síncrono
USART/Serial: Transmissores e Receptores para conexão com outros sistemasAprenda a configurar a comunicação serial via USART em PICs com este tutorial detalhado. Domine fundamentos, práticas avançadas e integração eficaz com IoT., desenhado para conectar dispositivos em curtas distâncias. Entre suas principais características, destacam-se:
- Topologia de Barramento: há um barramento único com as linhas SDA (dados) e SCL (clock).
- Arquitetura
Comparação entre Famílias PIC12, PIC16 e PIC18: Escolhendo a IdealEste guia detalhado analisa arquiteturas, desempenho e aplicações dos microcontroladores PIC12, PIC16 e PIC18, auxiliando em escolhas técnicas e econômicas. Mestre-Escravo: o microcontrolador PIC
Evolução dos PIC: Tendências, Desafios e Perspectivas FuturasDescubra a evolução dos microcontroladores PIC, desde os modelos 8 bits até as avançadas soluções de 32 bits, destacando tendências e desafios. geralmente atua como mestre, controlando o clock e iniciando as transferências. - Endereçamento
Migrando de PIC16/PIC18 para PIC24/PIC32: Principais Diferenças e ConsideraçõesDescubra como migrar de PIC16/PIC18 para PIC24/PIC32, explorando diferenças em arquitetura, memória, compiladores e interrupções para otimizar seu projeto. de Dispositivos: cada dispositivo conectado ao barramento possui um endereço único, facilitando a identificação. - Suporte a Vários Dispositivos: com apenas duas linhas físicas, podemos expandir o sistema para diversos sensores e periféricos
Entendendo a Arquitetura dos PIC: Memória, Registradores e PeriféricosDescubra conceitos essenciais de arquitetura Harvard, memória, registradores e periféricos dos microcontroladores PIC para projetos eficientes..
O barramento I²C requer o uso de resistores de pull-up (tipicamente entre 2,2 kΩ e 10 kΩ, dependendo da velocidade de comunicação e da capacidade do barramento) em ambas as linhas SDA e SCL, pois o controle ocorre via tensões em “open-drain” ou “open-collector”.
Configuração Básica no PIC🔗
Antes de iniciar a comunicação, precisamos configurar os registradores
Arquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados. adequados para habilitar o periférico I²C e ajustar a velocidade de operação (por exemplo, 100 kHz ou 400 kHz). A configuração envolve os seguintes passos gerais:
1. Selecionar o Módulo I²C: em muitos PICs, ele está incluso no MSSP (Master Synchronous
USART/Serial: Transmissores e Receptores para conexão com outros sistemasAprenda a configurar a comunicação serial via USART em PICs com este tutorial detalhado. Domine fundamentos, práticas avançadas e integração eficaz com IoT. Serial Port).
2. Configurar os Pinos SDA e SCL: normalmente, devem ser configurados como entradas digitais ou funções especiais, de acordo com o datasheet do microcontrolador.
3. Definir a Taxa de Baud
USART/Serial: Transmissores e Receptores para conexão com outros sistemasAprenda a configurar a comunicação serial via USART em PICs com este tutorial detalhado. Domine fundamentos, práticas avançadas e integração eficaz com IoT. (velocidade): através de registradores
Arquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados. específicos (por exemplo, SSPADD), estipulamos a frequência de clock desejada.
4. Habilitar o Módulo: utilizando bits de controle de configuração, ativamos o I²C em modo mestre ou escravo.
Embora cada família de PIC possa ter pequenas diferenças de registradores, o fluxo é semelhante. Consulte o datasheet do seu microcontrolador para detalhes específicos de nome e localização dos bits de configuração
Configuração de Fuses e Clock no Microcontrolador PICAprenda a configurar fuses e definir o clock em PIC para otimizar desempenho e segurança, garantindo confiabilidade no seu projeto..
Tabela de Endereços Comuns🔗
Uma das grandes vantagens do I²C é a possibilidade de conectar múltiplos dispositivos sem aumentar muito a fiação. Cada dispositivo possui um endereço único de 7 bits (ou 10 bits em casos especiais). Abaixo, um exemplo de tabela com alguns periféricos
Entendendo a Arquitetura dos PIC: Memória, Registradores e PeriféricosDescubra conceitos essenciais de arquitetura Harvard, memória, registradores e periféricos dos microcontroladores PIC para projetos eficientes. I²C bastante comuns:
| Dispositivo | Endereço padrão (7 bits) | Função |
|---|---|---|
| EEPROM 24LC256 | 0x50 | Armazenamento de dados em memória não volátil |
| RTC DS1307 | 0x68 | Relógio/Calendário com backup de bateria |
| Sensor de Temperatura LM75 | 0x48 | Monitoramento de temperatura digital |
| Acelerômetro MPU6050 | 0x68 ou 0x69 | Medição de aceleração e giroscópio integrado |
| Expandir IO MCP23017 | 0x20 a 0x27 (configurável) | Expansão de portas de entrada/saída para aplicações |
No momento de iniciar a escrita ou leitura no barramento, devemos informar o endereço do dispositivo, bem como se a operação é de escrita (bit de R/W = 0) ou de leitura (bit de R/W = 1).
Exemplo de Aplicação com EEPROM (24LC256)🔗
Suponhamos que queremos armazenar dados em uma EEPROM
Arquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados. 24LC256 e posteriormente ler esse conteúdo. No código C abaixo, ilustramos uma rotina genérica de escrita e leitura I²C. Observe que os nomes de funções e registradores
Arquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados. podem variar conforme o compilador e a família PIC, mas o fluxo exemplifica a lógica básica.
// Exemplo demonstrativo (código genérico)
#include <xc.h>
// Define o endereço I2C da EEPROM 24LC256 (0x50 para escrita/leitura)
#define EEPROM_ADDRESS 0x50
void I2C_Init(void) {
// Ajuste de registradores para modo Master I²C,
// configuração de velocidade (100 kHz, por exemplo) e
// habilitação do módulo I²C.
// Exemplo fictício:
// SSPCON1 = 0b00101000; // Habilita I2C Master
// SSPADD = ((FOSC/4)/100000) - 1; // Configura a velocidade baseada no clock
}
void I2C_Start(void) {
// Gera condição de START no barramento
}
void I2C_Stop(void) {
// Gera condição de STOP no barramento
}
void I2C_Write(unsigned char data) {
// Escreve um byte no barramento
}
unsigned char I2C_Read(unsigned char ack) {
// Lê um byte do barramento e envia ACK ou NACK
}
// Rotina para escrever um byte em um endereço da EEPROM
void EEPROM_WriteByte(unsigned int addr, unsigned char data) {
unsigned char addrHigh = (addr >> 8) & 0xFF; // Parte alta do endereço
unsigned char addrLow = addr & 0xFF; // Parte baixa do endereço
I2C_Start();
I2C_Write((EEPROM_ADDRESS << 1) | 0); // Envia endereço + bit Write (0)
I2C_Write(addrHigh); // Envia parte alta do endereço
I2C_Write(addrLow); // Envia parte baixa do endereço
I2C_Write(data); // Envia o byte de dados
I2C_Stop();
// Aguardar tempo de escrita interna (tWR) antes de acessar novamente
}
// Rotina para ler um byte de um endereço da EEPROM
unsigned char EEPROM_ReadByte(unsigned int addr) {
unsigned char data;
unsigned char addrHigh = (addr >> 8) & 0xFF;
unsigned char addrLow = addr & 0xFF;
I2C_Start();
I2C_Write((EEPROM_ADDRESS << 1) | 0); // Endereço + bit Write
I2C_Write(addrHigh);
I2C_Write(addrLow);
I2C_Start(); // Repeated Start
I2C_Write((EEPROM_ADDRESS << 1) | 1); // Endereço + bit Read (1)
data = I2C_Read(0); // Ler byte, enviar NACK
I2C_Stop();
return data;
}
Passo a Passo da Escrita na EEPROM
1. Iniciar a comunicação com um Start.
2. Enviar o endereço do escravo (0x50 << 1 no caso da EEPROM
Arquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados.) + bit de escrita.
3. Definir o endereço de memória
Migrando de PIC16/PIC18 para PIC24/PIC32: Principais Diferenças e ConsideraçõesDescubra como migrar de PIC16/PIC18 para PIC24/PIC32, explorando diferenças em arquitetura, memória, compiladores e interrupções para otimizar seu projeto. interno da EEPROM (bytes alto e baixo).
4. Enviar o dado a ser gravado.
5. Finalizar com um Stop.
6. Aguardar um tempo de escrita antes de acessar novamente o componente.
Passo a Passo da Leitura na EEPROM
1. Iniciar a comunicação com um Start.
2. Enviar o endereço do escravo + bit de escrita.
3. Definir o endereço de memória
Migrando de PIC16/PIC18 para PIC24/PIC32: Principais Diferenças e ConsideraçõesDescubra como migrar de PIC16/PIC18 para PIC24/PIC32, explorando diferenças em arquitetura, memória, compiladores e interrupções para otimizar seu projeto. a ser lido.
4. Gerar um Repeated Start.
5. Enviar o endereço do escravo + bit de leitura.
6. Ler o byte retornado.
7. Finalizar com Stop.
Outros Exemplos de Aplicação🔗
O mesmo método de inicialização e transmissão aplicado na EEPROM
Arquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados. pode ser adaptado para diversos outros periféricos
Entendendo a Arquitetura dos PIC: Memória, Registradores e PeriféricosDescubra conceitos essenciais de arquitetura Harvard, memória, registradores e periféricos dos microcontroladores PIC para projetos eficientes. I²C. Destacam-se:
- Sensores
Uso das Portas I/O: Controlando LEDs, Displays e SensoresAprenda a configurar portas, CDs, LEDs, displays, ADC e muito mais em sistemas PIC, com dicas de segurança, depuração e integração de sensores. de Temperatura (ex.: LM75, MCP9808): leitura de registradores
Arquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados. de temperatura e configuração de alarmes. - Relógio de Tempo Real (ex.: DS1307): leitura e escrita de registros de data e hora.
- Expanders de I/O (ex.: MCP23017): expansão de portas digitais sem precisar trocar o microcontrolador.
- Displays LCD
Implementação de Display LCD e TFT: Interfaces Gráficas com PICAprenda como integrar displays LCD e TFT com PIC, abordando conexão, programação e técnicas gráficas para interfaces interativas e informativas. compatíveis com I²C: facilitação da conexão e economia de pinos no PIC
Exemplos Práticos em Assembly: Quando Vale a Pena Programar em Baixo NívelExplore como a programação Assembly em PIC maximiza controle de hardware com alta eficiência, ideal para sistemas críticos e dispositivos de baixa energia..
Em todos os casos, os passos básicos são iguais: iniciar uma transação, enviar endereço do dispositivo, escrever ou ler os registradores
Arquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados. internos e encerrar a transação.
Conclusão🔗
O barramento I²C é uma ferramenta poderosa para ampliar as capacidades de um projeto com PIC, permitindo conectar sensores, memórias e periféricos
Entendendo a Arquitetura dos PIC: Memória, Registradores e PeriféricosDescubra conceitos essenciais de arquitetura Harvard, memória, registradores e periféricos dos microcontroladores PIC para projetos eficientes. usando apenas duas linhas de dados. Seus principais benefícios incluem simplicidade de cabeamento, relativa facilidade de implementação
Estrutura de Código em C para PIC: Definições e Convenções EssenciaisDescubra técnicas avançadas de programação em C para microcontroladores PIC. Aprenda otimização de memória, gestão de interrupções e depuração eficaz. e ampla disponibilidade de componentes já compatíveis.
Ao dominar a configuração e o fluxo de escrita/leitura, você será capaz de:
- Integrar rapidamente periféricos
Entendendo a Arquitetura dos PIC: Memória, Registradores e PeriféricosDescubra conceitos essenciais de arquitetura Harvard, memória, registradores e periféricos dos microcontroladores PIC para projetos eficientes. diversos; - Expandir seu projeto sem aumentar o número de pinos;
- Simplificar a manutenção do circuito e o desenvolvimento de firmware.
Com esse conhecimento, você poderá avançar na criação de sistemas completos e escaláveis, aproveitando toda a versatilidade proporcionada pelo protocolo I²C.
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- Datasheet do PIC16F877A, que contém detalhes importantes dos registradores e configurações de comunicação, incluindo o módulo I²C: ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf
- Documentação de suporte para PIC16F1xxx, relevante para acessar informações específicas sobre a implementação de módulos como o I²C: microchipdeveloper.com/8bit:pic16f1xxx
- Ferramenta MPLAB Code Configurator, que pode ajudar na configuração automatizada dos módulos do PIC, incluindo o I²C, facilitando a geração de código: www.microchip.com/mplab/mplab-code-configurator
- Página oficial do MPLAB X IDE, ferramenta essencial para desenvolvimento e depuração dos projetos PIC que utilizam o barramento I²C: www.microchip.com/en-us/development-tools-tools-and-software/mplab-x-ide
- Visão geral dos microcontroladores PIC, que é útil para entender a plataforma na qual os exemplos de I²C são implementados: www.microchip.com/design-centers/8-bit/pic-mcus
há 10 months atrás
há 11 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 10 months atrás