·

Automação Industrial ·

Automação Industrial

Send your question to AI and receive an answer instantly

Ask Question

Preview text

SISTEMAS EMBARCADOS Professor Vinicius Belmuds Vasconcelos Tatagiba Curso Técnico em Automação Industrial IFES Campus Linhares 1 Introdução 2 Características do PIC18F4520 3 Aplicações 4 Exercícios Sumário Características do PIC18F4520 Características PIC18F2420 PIC18F2520 PIC18F4420 PIC18F4520 Frequência de operação DC 40MHz DC 40MHz DC 40MHz DC 40MHz Memória de programa Bytes 16384 32768 16384 32768 Memória de programa Instruções 8192 16384 8192 16384 Memória de dados 768 1536 768 1536 Memória de dados EEPROM 256 256 256 256 Fontes de interrupção 19 19 20 20 Ports de IO Ports A B C E Ports A B C E Ports A B C D E Ports A B C D E Timers 4 4 4 4 CaptureComparePWM Modules 2 2 1 1 Enhanced CaptureComparePWM Modules 0 0 1 1 Comunicação serial MSSP Enhanced USART MSSP Enhanced USART MSSP Enhanced USART MSSP Enhanced USART Comunicação paralela PSP Não Não Sim Sim Conversor AD de 10 bits 10 canais de entrada 10 canais de entrada 13 canais de entrada 13 canais de entrada Resets e Delays POR BOR instrução RESET Stack Full Stack Underflow PWRT OST MCLR opcional WDT POR BOR instrução RESET Stack Full Stack Underflow PWRT OST MCLR opcional WDT POR BOR instrução RESET Stack Full Stack Underflow PWRT OST MCLR opcional WDT POR BOR instrução RESET Stack Full Stack Underflow PWRT OST MCLR opcional WDT Detecção de programação em altabaixa tensão Sim Sim Sim Brownout Detect Programável Sim Sim Sim Sim Set de instruções 75 instruções 83 com set de instruções estendido habilitado 75 instruções 83 com set de instruções estendido habilitado 75 instruções 83 com set de instruções estendido habilitado 75 instruções 83 com set de instruções estendido habilitado Encapsulamentos 28 Pin SPDIP 28 Pin SOIC 28 Pin QFN 28 Pin SPDIP 28 Pin SOIC 28 Pin QFN 40 Pin PDIP 44 Pin QFN 44 Pin TQFP 40 Pin PDIP 44 Pin QFN 44 Pin TQFP 4 modos de oscilador de cristal até 40MHz 2 modos RC de até 4 MHz 2 blocos de oscilador interno 31Khz a 8Mhz Alta corrente sinksource 25mA25mA 3 modos de interrupções externas programáveis 13 canais de conversão AD 10 bits de resolução 100000 escritas na memória Flash 1000000 escritas na memória EEPROM Possui prioridade nas interrupções 16F não possui 4 Timers 1 de 8 bits e 3 de 16 bits 36 entradas e saídas Características do PIC18F4520 4 Timers 1 de 8 bits e 3 de 16 bits 36 entradas e saídas Capacidade de executar até 10 milhões de instruções por segundo 40MHz de sinal de clock 3 pinos de interrupção externa Módulo temporizadorcontador Timer0 de 16bits Módulo temporizadorcontador Timer1 de 16 bits Módulo temporizadorcontador Timer2 de 8 bits Módulo temporizadocontador Timer3 de 16 bits 2 módulos CaptureComparePWMCCP Módulo MSSP Master Synchronous Serial Port podendo operar nos modos Módulo EUSART Universal Synchronous Asynchronous Receiver Transmitter com suporte para RS232 RS485 e LIN 12 2 comparadores analógicos com entradas multiplexadas Características do PIC18F4520 Pinagem do PIC18F4520 Possui 40 pinos Contém 5 Ports de Com exceção dos pinos de alimentação todos os outros pinos são multiplexados com outra função Pinos com uma única seta podem ser apenas utilizados como entrada Pinos com seta dupla podem ser utilizados como entrada e saída PORTA PORTB PORTC PORTD possui 8 pinos cada RA7RA0 RB7RB0 RC7RC0 e RD7RD0 PORTE possui apenas 4 pinos RE3RE0 Descrição dos pinos do PIC18F4520 Número do pino Função Tipo de buffer Pino 1 MCLRVPPRE3 MCLR Função reset ST VPP Tensão de programação RE3 Pino digital TTL Pino 2 RA0AN0 RA0 Pino digital TTL AN0 Entrada analógica de tensão Analógica Pino 3 RA1AN1 RA1 Pino digital TTL AN1 Entrada analógica de tensão Analógica Descrição dos pinos do PIC18F4520 Pino 4 RA2AN2VREFCVREF RA2 Pino digital TTL AN2 Entrada analógica de tensão Analógica VREF Entrada de tensão de referência do Conversor AD Analógica CVREF Saída de tensão de referência do comparador Analógica Pino 5 RA3AN3VREF RA3 Pino digital TTL AN3 Entrada analógica de tensão Analógica VREF Entrada de tensão de referência do Conversor AD Analógica Pino 6 RA4T0CKIC1OUT RA4 Pino digital STOD T0CKI Entrada de clock externo do TMR0 ST C1OUT Saída do Comparador 1 Pino 7 RA5AN4SSLVDIN RA5 Pino digital TTL AN4 Entrada analógica de tensão Analógica SS Entrada de seleção do SPI escravo ST LVDIN Entrada de detecção de altabaixa tensão Analógica Pino 8 RE0RDAN5 RE0 Pino digital ST RD Controle de leitura da Port Slave Paralel TTL AN5 Entrada analógica de tensão Analógica Pino 9 RE1WRAN6 RE1 Pino de IO ST WR Controle de escrita da Port Slave Paralel TTL AN6 Entrada analógica de tensão Analógica Pino 10 RE2CSAN7 RE2 Pino digital ST CS Chip Select da Port Slave Paralel TTL AN7 Entrada analógica de tensão Analógica Pino 11 VDD VDD Tensão de alimentação positiva 2V 5V Pino 12 VSS VSS Tensão de alimentação negativa Gnd Pino 13 OSC1CLKIRA7 OSC1 Entrada do oscilador a cristal ou entrada de clock externo ST CLKI Entrada de clock externo CMOS RA7 Pino digital TTL Pino 14 OSC2CLKORA6 OSC2 Entrada do oscilador a cristal CLKO Saída de clock com ¼ da frequência do oscilador RA6 Pino digital TTL Pino 15 RC0T1OSOT13CKI RC0 Pino digital ST T1OSO Entrada do oscilador do Timer1 T13CKI Entrada de clock externo do Timer1Timer3 ST Pino 16 RC1T1OSVCCP2 RC1 Pino digital ST T1OSI Entrada do oscilador do Timer1 CMOS CCP2 Entrada do Capture2 saida do Compare2 saida do PWM2 ST Pino 17 RC2CCP1P1A RC2 Pino digital ST CCP1 Entrada do Capture1 saida do Compare1 saida do PWM1 ST P1A Saida avançada do CCP1 Pino 18 RC3SCKSCL RC3 Pino digital ST SCK EntradaSaida de clock do modo SPI ST SCL EntradaSaida de clock do modo I2C ST Pino 19 RD0PSP0 RD0 Pino digital ST PSP0 Dado da Serial Port Paralel TTL Pino 20 RD1PSP1 RD1 Pino digital ST PSP1 Dado da Serial Port Paralel TTL Pino 21 RD2PSP2 RD2 Pino digital ST PSP2 Dado da Serial Port Paralel TTL Pino 22 RD3PSP3 RD3 Pino digital ST PSP3 Dado da Serial Port Paralel TTL Pino 23 RC4SDISDA RC4 Pino digital ST SDI Entrada de Dados SPI ST SDA EntradaSaida de Dado I2C ST Pino 24 RC5SDO RC5 Pino digital ST SDO Saida de Dados SPI Pino 25 RC6TXCK RC6 Pino digital ST TX Transmissao assincrona da EUSART CK Saida de clock na transmissao síncrona da EUSART ST Pino 26 RC7RXDT RC7 Pino digital ST RX Recepcao assincrona da EUSART DT Saida de dados na transmissao síncrona da EUSART ST Pino 27 RD4PSP4 RD4 Pino digital ST PSP4 Dado da Serial Port Paralel TTL Pino 28 RD5PSP5P1B RD5 Pino digital ST PSP5 Dado da Serial Port Paralel TTL P1B Saida avancada do CCP1 Pino 29 RD6PSP6P1C RD6 Pino digital ST PSP6 Dado da Serial Port Paralel TTL P1C Saida avançada do CCP1 Pino 30 RD7PSP7P1D RD7 Pino digital ST PSP7 Dado da Serial Port Paralel TTL P1D Saida avançada do CCP1 Pino 31 VSS VSS Tensão de alimentação negativa Gnd Pino 32 VDD VDD Tensão de alimentação positiva 2V 5V Pino 33 RB0INT0FLTOAN12 RB0 Pino digital TTL INT0 Interrupcao externa 0 ST FLTO Entrada de falha PWM do avancado CCP1 ST AN12 Entrada analogica de tensao Analogica Pino 34 RB1INT1AN10 RB1 Pino digital TTL INT1 Interrupcao externa 1 ST AN10 Entrada analógica de tensão Analogica Pino 35 RB2INT2AN8 RB2 Pino digital TTL INT2 Interrupcao externa 2 ST AN8 Entrada analógica de tensão Analogica Pino 36 RB3AN9CCP2 RB3 Pino digital TTL AN9 Entrada analógica de tensão Analógica CCP2 Entrada do Capture2 saida do Compare2 saida do PWM2 ST Pino 37 RB4KBIOAN11 RB4 Pino digital TTL KBIO Entrada de interrupção por mudança de estado TTL AN11 Entrada analógica de tensão Analógica Pino 38 RB5KB11PGM RB5 Pino digital TTL KB11 Entrada de interrupção por mudança de estado TTL PGM Habilitação da programação com baixa tensão LVP ST Pino 39 RB6KB12PGC RB6 Pino digital TTL KB12 Entrada de interrupção por mudança de estado TTL PGC Clock da programação via ICSP ST Pino 40 RB7KB13PGD RB7 Pino digital TTL KB13 Entrada de interrupção por mudança de estado TTL PGD EntradaSaída de dados na programação via ICSP ST Legenda TTL compatível com entrada TTL ST entrada Schmitt Trigger com níveis CMOS Aplicação 1 Nesta aplicação vamos fazer um led conectado ao pino piscar a uma frequência de Para isto faça a montagem mostrada abaixo no Proteus Obs utilize um clock de Considerações O Master Clear está conectado ao pino 1 logo conectamos este pino a 5 volts para desativálo desativado em nível lógico alto O pino 33 pode ser utilizado como pino digital ou como pino analógico Portanto devemos configurá lo como digital para esta aplicação Para configurálo como digital ou analógico devemos modificar o registrador Para configurar se um pino será entrada ou saída devemos modificar o registrador Para configurar o nível lógico de um pino podemos modificar o registrador Vamos começar a estudar um pouco destes registradores Aplicação 1 PORTS Dependendo do dispositivo selecionado e recursos habilitados há até cinco portas disponíveis Alguns pinos de entrada e saída são multiplexadas com uma função alternativa dos recursos periféricos do dispositivo No geral quando um periférico está ativado esse pino não pode ser usado como um pino de E S de uso geral Cada porta possui 3 registradores TRIS direção dos dados PORT lê o nível dos pinos do dispositivo LAT lê e escreve operações nos valores dos pinos Aplicação 1 REGISTRADORES ASSOCIADOS AO PORTB Nesta primeira aplicação vamos focar nos registradores Futuramente mexeremos nos outros registradores associados ao PORTB Aplicação 1 REGISTRADORES ASSOCIADOS AO PORTB O conversor analógicodigital possui 13 entradas para este dispositivo de 40 pinos e possui uma resolução de 10 bits Vamos focar inicialmente no registrador ADCON1 associado ao PORTB Aplicação 1 O registrador Este registrador possui 6 bits a serem configurados Qual é a função de cada um deles Os bits configuram quais portas serão analógicas ou digitais O bit configura a voltagem de referência positiva O bit configura a voltagem de referência negativa Para colocar o pino do como digital devemos configurar Todos os pinos do PORTB são digitais Tensão de referência e usado apenas se a porta analógica for utilizada Bits não implementados Aplicação 1 Agora programa o seguinte código no mikro C PRO for PIC Para Portanto o LED ficará 100ms ligado e 100ms desligado Aplicação 1 Ao gravar o programa no PIC teremos Aplicação 1 Observação em relação ao Master Clear Neste projeto o fusível do Master Clear está habilitado por isto é necessário conectar este pino a um resistor de pullup Caso este fusível estivesse desabilitado não seria necessário realizar esta conexão Aplicação 2 Nesta aplicação vamos aprender a configurar um pino como entrada no PIC18F4520 Para isto o pino será configurado como entrada e ao pressionar um botão conectado a ele o led conectado ao pino irá ligar durante 1 segundo e depois apagar Monte o circuito abaixo e utilize um clock de 4Mhz Considerações Um resistor de pullup é utilizado para conectar o botão ao led Logo ao ser pressionado o botão colocará nível lógico baixo no pino Vamos deixar o Master Clear ativado e portanto é necessário utilizar o resistor de pullup no pino 1 Aplicação 2 Nesta aplicação vamos aprender a configurar um pino como entrada no PIC18F4520 Para isto o pino será configurado como entrada e ao pressionar um botão conectado a ele o led conectado ao pino irá ligar Programa o código mostrado abaixo Perceba que todos os pinos do PORTB foram configurados como entrada exceto o RB0 É sempre interessante deixar os pinos que não estão sendo utilizados como entrada pois evita a queima dos pinos do dispositivo configuração de entrada possui alta impedância Aplicação 2 Ao gravar o programa no PIC teremos ao pressionar o botão Aplicação 2 Por que utilizar o PORTx ou o LATx PORTx Função Principal O registrador PORT é usado para ler o estado atual dos pinos da porta Quando você lê o valor de um registrador PORT você está lendo o valor real do pino que pode refletir mudanças feitas por dispositivos externos ou por outros circuitos conectados aos pinos Acesso Os bits do registrador PORT são atualizados diretamente pelo hardware com base no que está presente nos pinos de entradasaída do microcontrolador LATx Latch Função Principal O registrador LAT é usado para escrever o valor desejado para os pinos da porta O valor escrito no LAT é armazenado em um latch o que significa que o valor é mantido independentemente das mudanças que podem ocorrer no pino de saída devido a outras condições Acesso Quando você escreve um valor no registrador LAT ele altera o valor do latch que então controla o estado dos pinos de saída Isso é útil porque o LAT pode manter o valor mesmo se houver mudanças no nível da tensão nos pinos devido a fatores externos Aplicação 3 A aplicação será a mesma da anterior porém agora vamos utilizar o resistor de pullup interno ao PIC18F4520 Para conseguir configurar este resistor deveremos configurar o registrador INTCON2 Este registrador controla uma das interrupções do PIC18f4520 Porém através dele também configuramos os pullup internos do PIC Ele possui 6 bits de configuração como destacados acima Vamos ver qual bit devemos configurar para ativar os pullup internos O bit 7 habilita ou desabilita os pullup do PORTB 1 Todos os pullup são desativados 0 Todos os pullup são ativados Obs Não vamos nos preocupar com os outros bits de configuração por enquanto Voltaremos a falar deles quando começarmos a ver interrupções Aplicação 3 A aplicação será a mesma da anterior porém agora vamos utilizar o resistor de pullup interno ao PIC18F4520 Para conseguir configurar este resistor deveremos configurar o registrador INTCON2 Monte o circuito abaixo Considerações Configuraremos um resistor de pullup interno ao PIC logo não será mais necessário colocar este resistor conectado externamente ao pino Vamos deixar o Master Clear ativado e portanto é necessário utilizar o resistor de pullup no pino 1 Aplicação 3 A aplicação será a mesma da anterior porém agora vamos utilizar o resistor de pullup interno ao PIC18F4520 Para conseguir configurar este resistor deveremos configurar o registrador INTCON2 Programa as linhas de código mostradas abaixo Aplicação 3 A aplicação será a mesma da anterior porém agora vamos utilizar o resistor de pullup interno ao PIC18F4520 Para conseguir configurar este resistor deveremos configurar o registrador INTCON2 Ao carregar o programa perceba que todas as portas do PORTB ficaram com nível lógico alto Isto acontece pois habilitamos todos os resistores pullup internos ao PORTB Aplicação 4 Vamos implementar a lógica do shiftleft no PIC18F4520 para criarmos um sequencial de LEDS Para isto monte o circuito mostrado abaixo e utilize um clock de 4MHz Aplicação 4 Podemos melhorar o esquemático do Proteus através da utilização de terminais Aplicação 4 Podemos melhorar o esquemático do Proteus através da utilização de terminais 1 Clique em Terminals Mode 2 Selecione DEFAULT 3 Nomeie com o mesmo nome as ligações dos componentes no Proteus Exemplo RA0AN0C1IN RC0T1OSOT13CKI RA1AN1C2IN RC1T1OSICCP2B RA2AN2C2INVREFCVREF RC2CCP1P1A RA3AN3C1INVREF RC3SCKSCL RA4T0CKIC1OUT RC4SDISDA RA5AN4SSHLVDINC2OUT RC5SDO RA6OSC2CLKO RC6TXCK RA7OSC1CLKI RC7RXDT RB0AN12FLT0INT0 RD0PSP0 RB1AN10INT1 RD1PSP1 RB2AN8INT2 RD2PSP2 RB3AN9CCP2A RD3PSP3 RB4KBI0AN11 RD4PSP4 RB5KBI1PGM RD5PSP5P1B RB6KBI2PGC RD6PSP6P1C RB7KBI3PGD RD7PSP7P1D RE0RDAN5 RE1WRAN6 RE2CSAN7 RE3MCLRVPP R11 10k R10 220 R12 220 R13 220 R14 220 R15 220 R16 220 R17 220 R18 220 rb7 rb6 rb5 rb4 rb3 rb2 rb1 rb0 rb4 rb2 Aplicação 4 Vamos implementar a lógica do shiftleft no PIC18F4520 para criarmos um sequencial de LEDS Agora programa as linhas de código abaixo e carregueas no PIC RA0AN0C1IN RC0T1OSOT13CKI RA1AN1C2IN RC1T1OSICCP2B RA2AN2C2INVREFCVREF RC2CCP1P1A RA3AN3C1INVREF RC3SCKSCL RA4T0CKIC1OUT RC4SDISDA RA5AN4SSHLVDINC2OUT RC5SDO RA6OSC2CLKO RC6TXCK RA7OSC1CLKI RC7RXDT RB0AN12FLT0INT0 RD0PSP0 RB1AN10INT1 RD1PSP1 RB2AN8INT2 RD2PSP2 RB3AN9CCP2A RD3PSP3 RB4KBI0AN11 RD4PSP4 RB5KBI1PGM RD5PSP5P1B RB6KBI2PGC RD6PSP6P1C RB7KBI3PGD RD7PSP7P1D RE0RDAN5 RE1WRAN6 RE2CSAN7 RE3MCLRVPP R11 10k R10 220 R12 220 R13 220 R14 220 R15 220 R16 220 R17 220 R18 220 rb7 rb6 rb5 rb4 rb3 rb2 rb1 rb0 Exercício 1 Implementar um sistema utilizando o PIC que possui três botões para selecionar animações de 5 leds conectados ao PORTB O botão 1 deverá ser conectado ao pino O botão 2 deverá ser conectado ao pino O botão 3 deverá ser conectado ao pino Os leds deverão ser conectados aos pinos Os pullup internos do PORTB devem ser habilitados O pino Master Clear deve ser habilitado nos fusíveis do PIC Ao pressionar o botão 1 os leds devem ligar sequencialmente da esquerda para a direita Ao pressionar o botão 3 os leds devem ligar sequencialmente da direita para a esquerda Ao pressionar o botão 2 a animação que estiver rodando deverá ser interrompida e todos os leds deverão ser apagados As animações só poderão ser realizadas caso todos os leds estejam apagados Utilizar o clock de 4Mhz Veja no próximo slide como deve ser o funcionamento do sistema Exercício 1 RA0AN0C1IN RC0T1OSOT13CKI RA1AN1C2IN RC1T1OSICCP2B RA2AN2C2INVREFCVREF RC2CCP1P1A RA3AN3C1INVREF RC3SCKSCL RA4T0CKIC1OUT RC4SDISDA RA5AN4SSHLVDINC2OUT RC5SDO RA6OSC2CLKO RC6TXCK RA7OSC1CLKI RC7RXDT RB0AN12FLT0INT0 RD0PSP0 RB1AN10INT1 RD1PSP1 RB2AN8INT2 RD2PSP2 RB3AN9CCP2A RD3PSP3 RB4KBI0AN11 RD4PSP4 RB5KBI1PGM RD5PSP5P1B RB6KBI2PGC RD6PSP6P1C RB7KBI3PGD RD7PSP7P1D RE0RDAN5 RE1WRAN6 RE2CSAN7 RE3MCLRVPP PIC18F4520 R11 10k R10 220 R12 220 R13 220 R14 220 R15 220 B1 B2 B3 rb0 rb1 rb2 rb0 rb1 rb2 rb3 rb4 rb5 rb6 rb7 define B RA0bit char contador 0x02 void main TRISB 0x000b00000000 todos os pinos são saídas ADCON1 0x0FTodos os pinos são digitais LATB 0x00todos os leds estão apagados inicialmente while1 ifB 0 whilecontador 0x0Fenquanto LATB for diferente de 15 LATB contador delayms500 contador LATB 0x00 Apaga todos os leds contador 0x02 Exercício 2 Implementar um sistema utilizando o PIC que possui um botão para realizar a contagem de 2 a 14 em binário O botão deverá ser conectado ao pino 4 leds deverão ser conectados aos pinos do PORTB O pino Master Clear deve ser habilitado nos fusíveis do PIC e deverá ser conectado um botão através de um resistor de pullup para resetar o microcontrolador sempre que desejado Ao pressionar o botão os leds devem ligar iniciando a contagem de 2 a 14 em binário a cada 500ms Utilizar o clock de 4Mhz Veja no próximo slide como deve ser o funcionamento do sistema Exercício 2 define B0 RB0bit define B1 RB1bit define B2 RB2bit char controlevariável de controle controla os bits do PORTB void main TRISB 0x070b00000111 RB0 RB1 e RB2 são entradas e o resto são saídas ADCON1 0x0FTodos os pinos do PORTB são digitais INTCON2 0x7F Habilita todos os pullups internos do PORTB LATB 0x070b00000111 RB0 RB1 e RB2 em 1 pullup while1 if B0 0 controle 0b00001000começa a sequência no led de rb3 whileB1 1 LATB controle delayms300 controle controle 0x01 deslocamento de bits à esquerda ifcontrole 0x00 se todos os bits forem deslocados controle 0b00001000controle reinicia em 8primeiro led LATB 0x07 0b00000111 apaga todos os leds if B2 0 controle 0b10000000 whileB1 1 LATB controle delayms300 controle controle 0x01 deslocamento de bits à direita ifcontrole 0x04se controle chegar em 0b00000100 controle 0b10000000reinicia a contagem LATB 0x07apaga todos os leds conectados ao portb Vamos finalizar por hoje viniciustatagibaifesedubr