Minicurso PIC

Download Minicurso PIC

Post on 24-Jul-2015

62 views

Category:

Documents

3 download

Embed Size (px)

TRANSCRIPT

<p>Minicurso</p> <p>Introduo aos Microcontroladores PIC</p> <p>Prof. M.Sc. Tcio Luiz de Souza Barbeiro http://docentes.unirp.edu.br/tacio</p> <p>MotivaoDesenvolvimento de Sistemas Eletrnicos Microprocessados Embbeded Systems; Mercado de microcontroladores em expanso Novos chips e famlias; Estima-se que, em poucos anos, em mdia uma pessoa interagir com 300 dispositivos microcontroladores diariamente; Aplicao em diversas reas: Automao, Controle e Instrumentao de Processos, etc.</p> <p>Fabricantes de MicrocontroladoresINTEL (80C51) - www.intel.com/design/MCS51/ MOTOROLA (HC908) - www.mot-sps.com MICROCHIP (PIC) - www.microchip.com TEXAS INSTRUMENTS (MSPs) - www.ti.com MITSUBISHI - www.mitsubishichips.com ATMEL - www.atmel.com PHILIPS - www.philips.com NATIONAL - www.national.com</p> <p>IntroduoUm microcontolador um sistema computacional completo, no qual esto includos uma CPU (Central Processor Unit), memria, um sistema de clock, sinais de I/O (Input/Output), alm de outros possveis perifricos, tais como, mdulos de temporizao e conversores A/D entre outros, integrados em um mesmo componente (chip). As partes mais integrantes de qualquer computador, e que tambm esto presentes, em menor escala, nos microcontroladores so: Unidade Central de Processamento (CPU); Sistema de Clock para dar seqncia s atividades da CPU; Memria para armazenamento de instrues e manipulao de dados; Entradas para interiorizar na CPU informaes do mundo externo; Sadas para exteriorizar as informaes processadas pela CPU para o mundo externo; Programa (Software) para que o sistema faa alguma coisa til.</p> <p>Estruturao InternaULA (Unidade Lgica Aritmtica); Memria de Programa Bus de 14 bits; Memria de Dados RAM Bus de 8 bits; Portas: PORTA, B, C e D Pinos de I/O; EEPROM (Memria de Dados No voltil); Timers: TIMER0, TIMER1 e TIMER2 Comparador - Mdulo CCP (Capture, Compare e PWM); Porta Serial USART; Circuitos Internos: Reset, Osciladores, Watchdog Timer (WDT), Power-up e Brown-out.</p> <p>O PIC16F877Microcontrolador RISC de 40 pinos; Memria de Programa FLASH (8K de 14 bits); Memria de dados 368 bytes; Memria EEPROM 256 bytes; Freqncia de operao at 20MHz; 33 I/O (Entradas/Sadas) configurveis: PORT A: RA0 RA5 (6 PINOS) PORT B: RB0 RB7 (8 PINOS) PORT C: RC0 RC7 (8 PINOS) PORT D: RD0 RD7 (8 PINOS) PORT E: RE0 RE2 (3 PINOS); 14 Interrupes; 3 Timers; 2 Mdulos CCP (Capture/Compare/PWM); Comunicao Serial USART; 8 canais de entrada de conversores A/D de 10 bits.</p> <p>Principais Caractersticas EltricasTemperatura de trabalho: -40 at +125 C C; Temperatura de Armazenamento: -65 at 150 C C; Tenso de Trabalho: 3.0Va 5.5V; Voltagem Mxima nos demais pinos (em relao ao Vss): -0.3V at (VDD + 0.3V); Dissipao mxima de potncia: 1.0 W; Corrente mxima de sada no pino Vss: 350 mA; Corrente mxima de sada no pino VDD: 250 mA; Corrente mxima de entrada de um pino: 25 mA; Corrente mxima de sada de um pino: 25 mA.</p> <p>Pinagem do PIC 16F877</p> <p>Descrio dos PinosNome PINOOSC1/CLKIN OSC2/CLKOUT MCLR/VPP 1 RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/SS/AN4 RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD</p> <p>NPINO13 14 1 2 3 4 5 6 7 33 34 35 36 37 38 39 40</p> <p>TIPOI O I/P I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O</p> <p>DescrioEntrada para ceristal externo (fonte de clock) Sada para cristal exetrno MAster Clear (reset) externo. Lgica baixa para reset I/O digital bidirecional ou entrada analgica 0 I/O digital bidirecional ou entrada analgica 1 I/O digital bidirecional ou entrada analgica 2 ou tenso de referncia analgica negativa I/O digital bidirecional ou entrada analgica 3 ou tenso de referncia analgica positiva I/O digital bidirecional ou entrada de clock para contador TMR0 I/O digital bidirecional ou entrada analgica 4 ou slave select para a porta de comunicao serial sncrona I/O digital bidirecional ou entrada para interrupo externa I/O digital bidirecional I/O digital bidirecional I/O digital bidirecional ou entrada para programao em baixa tenso I/O digital bidirecional I/O digital bidirecional I/O digital bidirecional ou clock da programao serial (ICSP) I/O digital bidirecional ou dados da programao serial (ICSP)</p> <p>Descrio dos PinosNome PINORC0/T1OSO/ T1CK1 RC1/T1OSI/ CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX//CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7</p> <p>NPINO15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30</p> <p>TIPOI/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O</p> <p>DescrioI/O digital bidirecional ou sada para cristal esxterno para TMR1 ou entrada de clock para contador TMR1 I/O digital bidirecional ou entrada para cristal esxterno para TMR1 ou I/O para Capture, Compare, PWM 2 I/O digital bidirecional ou I/O para Capture, Compare, PWM 1 I/O digital bidirecional ou entrada de clock serial sncrono ou saida para os modos SPI e I2C I/O digital bidirecional ou entrada de dados SPI ou I/O de dados I2C I/O digital bidirecional ou sada de dados SPI I/O digital bidirecional ou Transmisso para comunicao USART assncrona ou via de clock para para comunicao USART sncrona I/O digital bidirecional ou Recepo para comunicao USART assncrona ou via de dados para para comunicao USART sncrona I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava</p> <p>Descrio dos PinosNome PINORE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 VSS VDD</p> <p>NPINO8 9 10 12,31 11,32</p> <p>TIPOI/O I/O I/O P P</p> <p>DescrioI/O digital bidirecional ou Controle de Leitura para a Porta paralela escrava ou entrada analgica 5 I/O digital bidirecional ou Controle de Escrita para a Porta paralela escrava ou entrada analgica 6 I/O digital bidirecional ou Select Control para a Porta paralela escrava ou entrada analgica 7 Referncia TERRA Alimentao Positiva (+5V)</p> <p>LEGENDA:</p> <p>I = Input (Entrada)</p> <p>O = Output (Sada)</p> <p>I/O = Input/Output (Entrada/Sada)</p> <p>P = Power (Alimentao)</p> <p>Parmetros de ConfiguraoTipo de Oscilador: 2 grupos: Internos e ExternosOscilador Interno: 32 KHz ou 4 MHz (Seleo por software) Osciladores Externos: - RC_CLKOUT: Para oscilador externo tipo RC com o pino 15 operando como CLKOUT, isto , com uma onda quadrada de da freqncia; - RC_I/O: Para oscilador externo tipo RC com o pino 15 operando como I/O (RA6); - INTOSC_CLKOUT: Para oscilador interno com o pino 15 operando como I/O (RA6); - EC_I/O: Para clock externo (circuito auto-oscilante) com o pino 15 operando como I/O (RA6); - XT: Para osciladores externos tipo cristal ou ressoadores; - HS: Para cristais ou ressoadores externos com frequencias elevadas (acima de 4 MHz); - LP: Para cristais ou ressoadores externos com baixas freqncias (abaixo de 200 KHz). Utilizado para minimizar consumo.</p> <p>Parmetros de ConfiguraoWATCHDOG (WDT) um recurso disponvel no PIC que parte do princpio que todo sistema passvel de falha. Se todo sistema pode falhar, cabe ao mesmo ter recursos para que, em ocorrendo uma falha, algo seja feito de modo a tornar o sistema novamente operacional. Dentro do PIC existe um contador incrementado por um sinal de relgio (clock) independente. Toda vez que este contador extrapola o seu valor mximo retornando a zero, provocado a reinicializao do sistema (reset). Clear Watchdog: Se o sistema estiver funcionado da maneira correta, de tempos em tempos uma instruo denominada clear watchdog timer (CLRWDT) zera o valor deste contador, impedindo que o mesmo chegue ao valor mximo. Desta maneira o Watchdog somente ir "estourar" quando algo de errado ocorrer.</p> <p>Parmetros de ConfiguraoPOWER UP TIMER: um temporizador que faz com que o PIC, durante a energizao (power up), aguarde alguns ciclos de mquina (72 ms) para garantir que todo o sistema perifrico (display, teclado, memrias, etc) estejam operantes quando o processamento estiver sendo executado. BROWN OUT DETECT: O Brown Out monitora a diferena de tenso entre VDD e VSS, provocando a reinicializao do PIC (reset) quando esta cai para um valor inferior ao mnimo definido em manual (4V tipco por mais de 100s). LOW VOLTAGE PROGRAM: Trata-se do sistema de programao do PIC (gravao da memria de programa) em baixa tenso: 5V. Normalmente essa programao habilitada por uma alta (13 V) no pino MCLR. CDIGO DE PROTEO: Para gravao em srie muito importante que esta opo esteja ativada, pois impedir que qualquer pessoa consiga ler o programa gravado dentro do PIC.</p> <p>Linguagens de ProgramaoAssembly (Baixo Nvel): - Maior Eficincia; - Maior Velocidade de Execuo; - Alta Complexidade; - Baixa Portabilidade. Linguagem C (Alto Nvel): - Programao Estruturada (funes); - Maior velocidade na criao de novos projetos; - Maior Portabilidade; - Eficincia Considervel.</p> <p>CompiladoresLinguagem de Programao Assembly: MPASM (Integrado ao MPLAB da Microchip) Linguagem de Programao C: CCS MicroC</p> <p>Ambiente de Desenvolvimento MPLAB</p> <p>Software Gratuito www.microchip.com; Linguagem de programao padro: Assembly; Gerenciamento de projetos; Compilao; Simulao; Emulao; Gravao do chip;</p> <p>Desenvolvimento de SistemasEntende-se por sistema, mais especificamente sistemas eletrnicos microprocessados (embedded systems), ao conjunto formado pelo hardware com microprocessador ou microcontrolador mais perifricos, integrado ao software bsico que implementa as funes determinadas para a aplicao. O desenvolvimento de hardware executado por um engenheiro ou tcnico eletrnico que normalmente pesquisa, estuda e projeta os circuitos eletrnicos, de preferncia com componentes disponveis no mercado. Esta atividade depende basicamente de estudo, experincia acumulada e de componentes disponveis e, uma vez projetado e testado dificilmente sofrer alteraes. O desenvolvimento de software, ao contrrio do hardware, depende muito da criatividade do programador e, pode ser alterado com maior freqncia para, por exemplo, estar inserindo novas funes na aplicao.</p> <p>Desenvolvimento de SistemasPara desenvolver sistemas com microcontroladores, o projetista deve seguir os seguintes passos: Especificar e documentar o sistema (problema ou idia); Projetar e documentar o hardware; Descrever a implementao do software do sistema atravs de fluxogramas ou outra forma de representao grfica ou textual; Editar um arquivo com instrues mnemnicas (arquivo fonte) cada bloco apresentado no fluxograma, utilizando um editor; Utilizar um assembler (software) para transcrever as instrues mnemnicas em cdigos de mquina necessrios a execuo do programa pelo microcontrolador; Simular, emular, testar as funcionalidades do programa desenvolvido.</p> <p>Especificao do SistemaDesenvolver um sistema eletrnico capaz de piscar um LED com durao de 1 segundo entre os estados ativo e inativo. Embora este sistema seja simples, ele demostra os elementos mais comuns de qualquer aplicao de microcontroladores: - Como configurar os sinais de I/O (entradas e sadas); - Como um programa pode acionar (escrever) sinais digitais de sada (LED); - Implementa uma rotina rudimentar de temporizao de eventos (LED piscar); O objetivo de psicar um LED pode parecer um tanto quanto tolo, porm se ao invs do LED for inserido um circuito a rel no pino de sada do microcontrolador, a aplicao ser de um rel temporizado, bastante utilizado para aplicaes em automao industrial.</p> <p>Projeto de Hardware</p> <p>Descrio do Software - Fluxograma</p> <p>Programao C#include - Diretiva do Compilador Ex: Incluindo um arquivo coma as definies relativas ao processadoralvo, para qual o programa ser compilado: #include 16F877A #use Diretiva Interna do Compilador Ex: Definindo o valor da freqncia de clock da MCU para utilizao em rotinas que dependam de tempo: #use delay(clock=4000000) #fuses Diretiva que especifica o estado dos fusveis Ex: Configurando o PIC com oscilador interno de 4MHz com os pinos RA6 e RA7 disponveis para E/S, watchdog desligado, timer power-up ligado, reset por brown-out ligado, programao por baixa tenso desligada e MCLR interno (pino RA5 disponvel como entrada): #fuses INTRC_IO,NOWDT,PUT,BROWNOUT,NOLVP,NOMCLR</p> <p>Simulao Software PROTEUS</p> <p>Programa Exemplo 1#include #use delay(clock=4000000) #fuses HS,NOWDT,PUT</p> <p>void main() { while (true) { output_high(PIN_B0); delay_ms (1000); output_low(PIN_B0); delay_ms (1000); } }</p> <p>// // // //</p> <p>Seta o pino RB0 Aguarda 1000 ms = 1s Resseta o pino RB0 Aguarda 1000 ms = 1s</p> <p>Programao do PICPara um microcontrolador executar um programa, o contedo do arquivo do cdigo fonte deve ser convertido em uma sequncia de instrues binrias (opcodes), e ento carregadas na memria do microcontrolador. Esta converso do cdigo fonte em opcodes realizada por um compilador (Assembler ou C), e os cdigos de mquina (opcodes) resultantes so armazenados em um arquivo no formato .HEX ou .COD, que pode ser carregado/gravado na memria de programa do microcontrolador.</p> <p>Sistema de GravaoO gravador McFlash opera diretamente dentro do MPLAB (Microchip): simula o PIC START PLUS. Aceita toda famlia Flash "16FXXX". Comunicao serial com PC (DB9-RS232). Soquete de gravao para PICs de 18, 28 e 40 pinos.</p> <p>Importando um arquivo .HEX no MPLABAps compilar um projeto com cdigo fonte escrito em linguagem C necessrio import-lo para a memria antes de grav-lo no PIC!</p> <p>Selecionando o Dispositivo no MPLAB</p> <p>Selecionando e Habilitando o Gravador no MPLAB</p> <p>Apagando e Gravando o PIC no MPLABAps criar um projeto e compil-lo como demonstrado no mdulo 1, a gravao realizada da seguinte forma:</p> <p>Mdulo LCDMdulos de caractere baseados no chip controlador HD 44780, um chip que praticamente um padro de fato, no segmento de mdulos de display LCD; Permitem uma interface simples com sistemas microcontrolados, com largura de barramento de dados selecionvel para 4 ou 8 bits, requerendo ainda mais trs linhas de sinalizao adicionais: ENABLE, RS e R/W; A comunicao no modo 4 bits realizada utilizando apenas as quatro linhas mais significativas de dados (D7 a D4), dividindo o byte em dois nibbles que so transferidos sempre iniciando pelo mais significativo seguido pelo menos significativo; #include - Biblioteca de manipulao de mdulo LCD: Default: - ENABLE: Pino E1 - RS: Pino E0 - RW: Pino E2 - D4 D7: Pino D4, D5, D6 e D7 respectivamente.</p> <p>Pinagem do LCD 16x2</p> <p>Hardware com LCD</p> <p>Comandos LCDBiblioteca MOD_LCD.C: OBS: necessrio que este arquivo esteja no mesmo diretrio do arquivo fonte lcd_ini() - Inicializa LCD lcd_escreve('\f') Apaga LCD lcd_pos_xy(1,2) Posiciona cursor no LCD Lcd_ecreve Escreve Texto no LCD Ex: printf(lcd_escreve,Alo Mundo") lcd_le(1,2) - L caractere do display</p> <p>Programa Exemplo 2#include #use delay(clock=4000000) #fuses HS,NOWDT,PUT,NOBROWNOUT,NOLVP #include // Biblioteca de Funes do LCD void main() { lcd_ini(); // Inicializa LCD lcd_escreve('\f'); // Apaga LCD lcd_pos_xy(1,2); // Posiciona cursor na linha 2 coluna 1 printf (lcd_escreve,"Pro...</p>