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 PICExemplos 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íncronoUSART/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 registradoresArquitetura 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 SynchronousUSART/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 BaudUSART/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çãoConfiguraçã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éricosEntendendo 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 EEPROMArquitetura 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 EEPROMArquitetura 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óriaMigrando 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óriaMigrando 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 EEPROMArquitetura 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 registradoresArquitetura 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éricosEntendendo 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