sistemas de micro control adores parte 1

Upload: mbs1971

Post on 12-Jul-2015

1.319 views

Category:

Documents


1 download

TRANSCRIPT

Sistemas de MicroControladoresCET em Automao, Robtica e Controlo Industrial, 4 Edio.

Bernardino Neves Coimbra 201

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

ndiceIntroduo................................................................................................................................1 Arquitectura PIC18. ..................................................................................................................3 O PIC18F4620........................................................................................................................ 3 Identificao e nomenclatura dos pinos. ............................................................................... 5 Estrutura interna. .................................................................................................................. 7 Configurao do oscilador. .................................................................................................... 9 Configurao do hardware. ................................................................................................. 13 Sistema de reset.................................................................................................................. 14 Ambiente de programao MPLAB IDE. ................................................................................. 17 Introduo ao sistema integrado MPLAB. ............................................................................ 17 Instalao do MPLAB. .......................................................................................................... 17 Compilador C18. ..................................................................................................................... 21 Instalao do compilador C18. ............................................................................................ 21 Especificaes do compilador C18. ...................................................................................... 23Tipo e tamanho de variveis. ........................................................................................................ 23 Armazenamento por tipo de dados............................................................................................... 23 Armazenamento por classes - Overlay. ......................................................................................... 24 Armazenamento por qualificadores. ............................................................................................. 24 Incluir ficheiros - #INCLUDE .......................................................................................................... 25 Macros predefinidas do compilador C18. ...................................................................................... 25 A directiva #PRAGMA. .................................................................................................................. 26

Directivas do compilador C18. ............................................................................................. 27 Livrarias de funes do compilador C18. ............................................................................. 27 Primeiros passos com o MPLAB IDE. ...................................................................................... 29 Criar e configurar um projecto no MPLAB IDE. .................................................................... 29 Primeiro programa. ............................................................................................................. 32Modificar o contedo de registos e variveis. ............................................................................... 34 Parar o programa num determinado sitio especifico Breakpoint................................................. 35 Tempo de execuo...................................................................................................................... 35

O simulador STIMULUS. ...................................................................................................... 37 O logic analyzer. .................................................................................................................. 39 Depurador/Gravador PICKIT 3. ............................................................................................ 40 Bernardino Neves - 2011 Pgina i

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011 Integrao do PICKIT 3 com o MPLAB IDE. ........................................................................... 41 Programao em C, para microcontroladores. ....................................................................... 43 Princpios de programao. ................................................................................................. 43Fluxogramas. ................................................................................................................................ 43 lgebra de booleana..................................................................................................................... 44 Variveis e dados.......................................................................................................................... 45 Operadores. ................................................................................................................................. 45

Introduo a linguagem C.................................................................................................... 45Palavras reservadas. ..................................................................................................................... 45 Identificadores. ............................................................................................................................ 45

Variveis e tipos de dados. .................................................................................................. 46Declarao de variveis. ............................................................................................................... 46 Declarao de constantes. ............................................................................................................ 46

Operadores. ........................................................................................................................ 47Aritmticos................................................................................................................................... 47 Relacionais. .................................................................................................................................. 47 Lgicos. ........................................................................................................................................ 48 Memoria. ..................................................................................................................................... 50 Associao de operadores. ........................................................................................................... 50

Declaraes de controlo. ..................................................................................................... 51Comando IF. ................................................................................................................................. 51 Comando SWITCH. ....................................................................................................................... 52 Comando FOR. ............................................................................................................................. 53 Comando WHILE........................................................................................................................... 53 Comando DO-WHILE..................................................................................................................... 54 Comando GOTO. .......................................................................................................................... 54

Tipos e dados avanados. .................................................................................................... 55Ponteiros...................................................................................................................................... 55 Matrizes de dados. ....................................................................................................................... 56 Estruturas..................................................................................................................................... 58 Unies.......................................................................................................................................... 60

Funes. ............................................................................................................................. 61 Programao dos microcontroladores PIC18. ......................................................................... 43

Pgina ii

Bernardino Neves 2011

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

ndice de figurasFig 1 - Arquitectura de um sistema constitudo por um P. ....................................................... 1 Fig 2 - Arquitectura de um C, com os mesmos perifricos. ...................................................... 1 Fig 3 - Pinout do microcontrolador PIC18F4620 verso DIP 40 pinos. ........................................ 5 Fig 4 - Diagrama de blocos da estrutura interna do microcontrolador PIC 18LF4620 [3]............. 8 Fig 5 - Implementao do oscilador de cristal. ........................................................................... 9 Fig 6 - Implementao do oscilador por fonte de relgio externo. ........................................... 10 Fig 7 - Implementao do oscilador RC. ................................................................................... 11 Fig 8 - Diagrama de blocos do mdulo de configurao do oscilador [3]. ................................. 12 Fig 9 - Reset por alimentao inicial do C. ............................................................................. 14 Fig 10 - Reset devido a alimentao inicial do C..................................................................... 15 Fig 11 - Reset devido a estabilizao do oscilador. ................................................................... 15 Fig 12 - Reset gerado por queda de tenso. ............................................................................. 16 Fig 13 - Diagrama de blocos do circuito de reset...................................................................... 16 Fig 14 - Origem do evento de reset. ........................................................................................ 16 Fig 15 - Ficheiros descompactados. ......................................................................................... 17 Fig 16 Seleco da instalao completa. ............................................................................... 18 Fig 17 - Localizao do ficheiro de instalao. .......................................................................... 18 Fig 18 - Janela de progresso da instalao. .............................................................................. 19 Fig 19 - Localizao da instalao do compilador C18. ............................................................. 21 Fig 20 - Seleco dos componentes do compilador C18. .......................................................... 21 Fig 21 - Configurao das variveis. ......................................................................................... 22 Fig 22 - Ligao do MPLAB IDE ao compilador C18................................................................... 22 Fig 23 - Criar uma novo projecto. ............................................................................................ 29 Fig 24 - Seleco do compilador C18. ...................................................................................... 29 Fig 25 Concluso da configurao do projecto. ..................................................................... 30 Fig 26 - Pasta Souce Files. ........................................................................................................ 30 Fig 27 - Janela para adicionar ficheiros ao projecto. ................................................................ 31 Fig 28 - Ambiente de trabalho. ................................................................................................ 31 Fig 29 - Localizao do icon Make............................................................................................ 32 Fig 30 - Seleccionar o simulador MPALB SIM. .......................................................................... 33 Fig 31 - Comandos do simulador MPLAB SIM. ......................................................................... 33 Fig 32 Seleco da janela File Registers e Special Function Registers. .................................... 34 Fig 33 - Inserir uma varivel para se ter acesso aos seus parmetros. ...................................... 34 Fig 34 - Janela Watch. ............................................................................................................. 35 Fig 35 - Definio da frequncia de clock, base de tempo do simulador MPLAB SIM. ............... 35 Fig 36 Exemplo, determinao do tempo de execuo. ........................................................ 36 Fig 37 - Resultado do tempo de execuo do exemplo proposto. ............................................ 36 Fig 38 - Janela de configurao do simulador Stimulus. ........................................................... 38 Fig 39 Localizao do Fire Button. ......................................................................................... 38 Fig 40 Resultado da simulao Stimulus. .............................................................................. 38

Bernardino Neves - 2011

Pgina iii

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011 Fig 41 - Seleco do canal a analisar. ....................................................................................... 39 Fig 42 - Resultado obtido pelo analisador lgico. ..................................................................... 39 Fig 43 - Depurador/Programador PICKIT 3. .............................................................................. 40 Fig 44 - Descrio dos pinos do conector ICSP. ........................................................................ 40 Fig 45 Ligao entre PICKIT 3 e o microcontrolador. ............................................................. 41 Fig 46 - Verificao da integrao do programador PICKIT 3 com o MPLAB IDE. ....................... 41 Fig 47 Fluxograma do exemplo proposto. ............................................................................. 44 Fig 48 - Ficheiro de instalao do bootloader AN1310. ............................................................ 43 Fig 49 - Primeira janela de instalao do software PC do bootloader AN1310. ......................... 44 Fig 50 - Segunda janela de instalao do software PC do bootloader AN1310.......................... 44 Fig 51 Localizao da instalao do software PC AN1310. ..................................................... 44 Fig 52 Finalizao da instalao do software PC AN1310. ..................................................... 45 Fig 53 - Fonte de alimentao. ................................................................................................ 45 Fig 54 - Microcontrolador PIC18F4620 e transceiver RS232. .................................................... 45 Fig 55 - Programao em circuito ICSP..................................................................................... 46 Fig 56 Imagem do hardware desenvolvido, o kit DevBoard PIC. ............................................ 46 Fig 57 - Localizao do bootloader PIC18. ................................................................................ 46 Fig 58 - Setup experimental para testar o hardware e o software PC. ...................................... 47 Fig 59 - Localizao do software PC AN1310. ........................................................................... 47 Fig 60 - Software PC para carregar o programa no microcontrolador....................................... 47 Fig 61 - Configurao do Baud Rate. ........................................................................................ 48 Fig 62 Comunicao entre o software PC e o microcontrolador. ........................................... 48

Pgina iv

Bernardino Neves 2011

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

ndice de tabelasTabela 1 - Modos de gesto de energia. .................................................................................... 3 Tabela 2 - Memoria de programa e dados disponvel. ............................................................... 4 Tabela 3 - Perifricos internos. .................................................................................................. 4 Tabela 4 - Nomenclatura do pinout do microcontrolador. ......................................................... 7 Tabela 5 - Valor dos condensadores para os diferentes tipos de cristais. ................................. 10 Tabela 6 - Registos da palavra de configurao do microcontrolador. ..................................... 13 Tabela 7 - Tipo de variveis, o seu tamanho e limites. ............................................................. 23 Tabela 8 - Localizao das variveis em funo dos qualificadores. ......................................... 25 Tabela 9 - Tamanho dos ponteiros. ......................................................................................... 25 Tabela 10 - Directivas do compilador C18. ............................................................................... 27 Tabela 11 Livraria de funes de matemtica. ...................................................................... 28 Tabela 12 - Livrarias de funes gerais. ................................................................................... 28 Tabela 13 - Livrarias de funes de software. .......................................................................... 28 Tabela 14 - Livrarias de funes de hardware. ......................................................................... 28 Tabela 15 - Cdigo do ficheiro do exemplo. ............................................................................. 32 Tabela 16 - Cdigo do segundo exemplo proposto. ................................................................. 37 Tabela 17 Smbolos de fluxograma. ...................................................................................... 43 Tabela 18- Operadores lgicos. ............................................................................................... 44 Tabela 19 Palavras reservadas em programao em C. ......................................................... 45

Bernardino Neves - 2011

Pgina v

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Pgina vi

Bernardino Neves 2011

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Introduo.Pretende-se nesta unidade de formao, dominada de Sistemas de MicroControladores, adquirir competncias para o desenvolvimento de sistemas electrnicos com microcontroladores, o microcontrolador que ser usado como base de estudo, o PIC18F4620, desenvolvido e produzido pela empresa Microchip Techonology, trata-se de um microcontrolador para aplicaes de complexidade intermdia. Os microcontroladores tm ocupado bem o seu lugar no nosso dia-a-dia, podemos facilmente verificar que, em mdia recorremos ao uso de cerca de 10 dispositivos controlados por microcontroladores, tais como um simples relgio, o comando da TV, o circuito electrnico do nosso carro, o telemvel, etc. O nascimento do microcontrolador, surge pela necessidade de integrar no mesmo componente, o hardware necessrio, para que tenha um comportamento e performances de um micro computador, permitindo assim poupar tempo e espao na construo de novas aplicaes. Repare-se que o uso de microprocessadores ou microcontroladores, depende do fim ou aplicao a que se destina, tendo em considerao capacidade de processamento, memria, hardware disponvel e custos. As figuras seguintes mostram dois sistemas, um constitudo por um microprocessador e outro por um microcontrolador equivalente em termos de perifricos.Bus de dados

P8085

EPROM 2532

RAM 62256

Timer 8155

USART 8251

IO 8255

Bus de controlo

Fig 1 - Arquitectura de um sistema constitudo por um P.

IO RAM

USART

PEPROM

Timers

PIC18Fig 2 - Arquitectura de um C, com os mesmos perifricos.

Bernardino Neves - 2011 Introduo

Pgina 1

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011Durante a unidade de formao sero abordados os seguintes temas: Diferenas entre microprocessadores e microcontroladores. Arquitectura dos microcontroladores PIC18. Configurao dos microcontroladores PIC18. Ambiente de desenvolvimento e concepo de programas para microcontroladores PIC18. Compilador C para microcontroladores PIC18. Programao em C, o essencial para microcontroladores. Programao dos microcontroladores PIC18. Configurao e aplicao dos perifricos. Electrnica aplicada a sistemas de microcontroladores. Desenvolvimento de aplicaes com microcontroladores PIC18.

Pgina 2

Bernardino Neves 2011 Introduo

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Arquitectura PIC18.O PIC18F4620.O microcontrolador em estudo o PIC18F4620, a escolha deste microcontrolador, deve-se ao facto, de ter mais experiencia com esta famlia de microcontroladores, trata-se de um microcontrolador avanado de 8 bits com memria de programa flash, caracterizado pelo conversor analgico/digital de 10 bits e por utilizar a tecnologia nano watt. A verso F caracterizada por operar com tenses de alimentao na ordem dos 5V. Este microcontrolador tal como a sua famlia, tem a particularidade de ser possvel gerir os seus recursos de energia, isto , como o microcontrolador est dividido em duas partes, o processador e os controladores (perifricos internos), possvel definir por questes energticas que partes devem estar activas. Para gesto de energia possvel definir 3 estados como demonstra a tabela seguinte. Modo Executar (Run) Espera (Idle) Adormecido (Sleep) Estado do processador Activo Desactivo Desactivo Estado dos controladores Activo Activo Desactivo

Tabela 1 - Modos de gesto de energia.

Em termos de flexibilidade e estrutura do oscilador, o PIC 18F4620 permite a configurao do oscilador em quatro modos distintos de cristal, sendo possvel utilizar cristais at 25 Mhz e com recurso ao Phase Lock Loop (PLL) possvel multiplicar por 4 a frequncia de oscilao do cristal ou do oscilador interno, a frequncia mxima de oscilao esta limitada a 40 MHz incluindo o uso do PLL, possui ainda um oscilador interno que pode operar desde 31Khz ate 32Mhz. O microcontrolador tambm permite o uso de um oscilador secundrio de 32Khz, que poder ser usado para gerar um relgio em tempo real independente do oscilador principal. Sobre os perifricos internos, podemos destacar as seguintes caractersticas: Possui 36 pinos I/O distribudos por 5 portos, o qual cada pino I/O pode suportar uma corrente at os 25 mA, apesar de um pino I/O suportar uma corrente de 25 mA, o microcontrolador apenas suporta uma corrente total de 200 mA. Possui trs modos de interrupo externos com quatro entradas destinadas a gerar interrupo por mudana de estado. Possui um mdulo avanado de captura, comparao e modulao por largura de pulso (PWM), sendo possvel definir at 4 sadas PWM, com seleco de polaridade, programao do tempo no activo e com reinicializao e desligamento automtico. Possui um mdulo de comunicao SPI (suporta os 4 modos) e I2C. Possui um mdulo avanado de comunicao USART, que permite a comunicao segundo os protocolos RS232, RS485 e LIN/J2602, sendo possvel utilizar o protocolo RS232 com

Bernardino Neves - 2011 Arquitectura PIC18

Pgina 3

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011recurso ao oscilador interno, dispensando assim o cristal externo, como tambm possvel detectar a taxa de transmisso automaticamente. Possui 13 canais analgicos/digitais de 10 bits, atravs do mdulo ADC, sendo que este mdulo ADC permite a capacidade de aquisio automtica e a converso durante o modo adormecido. Possui um temporizador/contador de 8 bits e 3 temporizadores/contadores de 16 bits.

Alem das caractersticas acima mencionadas, o microcontrolador possui ainda as seguintes caractersticas: Permite a escrita de cem mil vezes na memoria flash de programa. Permite a escrita de um milho de vezes na memria EEPROM. Permite a reteno dos dados tanto na memria de programa como na memria EEPROM por um perodo de cem anos. Possui um multiplicador por hardware de 8 bits por 8 bits. Possui um temporizador WatchDog (WDT) prolongado, permitindo a configurao de 4ms ate 131s. Permite a programao em circuito (ICSP).

As tabelas seguintes mostram de um modo geral e simplificado as caractersticas do microcontrolador PIC 18F4620.

Memria de programa Flash (bytes) Instrues 64K 32768

Memria de dados RAM (bytes) EEPROM (bytes) 3968 1024

Tabela 2 - Memoria de programa e dados disponvel.

I/O 36

Canais ADC 13

CCP/PWM 1/1

SPI S

I2C S

USART 1

COMP 2

Timers (8/16 bits) 1/3

Tabela 3 - Perifricos internos.

Em termos de encapsulamento, existem no mercado trs tipos distintos, a verso DIP de 40 pinos, a verso TQFP de 44 pinos e a verso QFN tambm de 44 pinos, neste documento apenas se far referncia a verso DIP de 40 pinos visto que ser o encapsulamento usado no hardware proposto, no datasheet do fabricante poder encontrar o pinout das outras verses de encapsulamento.

Pgina 4

Bernardino Neves 2011 Arquitectura PIC18

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Identificao e nomenclatura dos pinos.A figura seguinte mostra o pinout do microcontrolador PIC 18F4620, na verso de encapsulamento DIP 40 pinos.

Fig 3 - Pinout do microcontrolador PIC18F4620 verso DIP 40 pinos.

Na tabela seguinte descrimina-se detalhadamente, a identificao e funo de cada um dos pinos do microcontrolador, de modo a perceber-se melhor o significado de cada nomenclatura utilizada.

Nome do pino

Nmero do pino

Tipo de pinoI PWR I I/O I I/O I I/O I I O I/O I I I/O I O

Tipo de sinalST ST TTL Analgico TTL Analgico TTL Analgico Analgico Analgico TTL Analgico Analgico ST ST

Designao

MCLR VPP RE3 RA0 AN0 RA1 AN1 RA2 AN2 VrefCVref RA3 AN3 VrefRA4 T0CKI C1OUT

1

2 3

4

5

6

Reset externo quando colocado a 0. Entrada para programao (13 V). Entrada digital. Pino 0 do porto A. Entrada analgica 0. Pino 1 do porto A. Entrada analgica 1. Pino 2 do porto A. Entrada analgica 2. Tenso negativa de referncia para o ADC. Tenso de sada de referncia do comparador. Pino 3 do porto A. Entrada analgica 3. Tenso positiva de referncia para o ADC. Pino 4 do porto A. Entrada externa de relgio para o Timer0. Sada do comparador 1.

Bernardino Neves - 2011 Arquitectura PIC18

Pgina 5

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011RA5 AN4 SS HLVDIN C2OUT RE0 RD AN5 RE1 WR AN6 RE2 CS AN7 VDD VSS OSC1 CLKI RA7 OSC2 CLKO RA6 RC0 T1OSO T13CKI RC1 T1OSI CCP2 RC2 CCP1 P1A RC3 SCK SCL RD0 PSP0 RD1 PSP1 RD2 PSP2 RD3 PSP3 RC4 SDI SDA RC5 SDO RC6 TX CK RC7 RX DT RD4 PSP4 RD5 PSP5 P1B I/O I I I O I/0 I I I/0 I I I/0 I I P P I I I/O O O I/O I/O O I I/O I I/O I/O I/O 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 I/O I/O O I/O O I/O I/O I I/O I/O I/O I/O I/O O TTL Analgico TTL Analgico ST TTL Analgico ST TTL Analgico ST TTL Analgico Pino 5 do porto A. Entrada analgica 4. Pino de seleco de dispositivo em comunicao no modo SPI. Pino de deteco de tenso. Sada do comparador 2. Pino 1 do porto E. Pino RD de controlo do porto paralelo de comunicaes. Entrada analgica 5. Pino 2 do porto E. Pino WR de controlo do porto paralelo de comunicaes. Entrada analgica 6. Pino 2 do porto E. Pino CS de controlo do porto paralelo de comunicaes. Entrada analgica 7. Pino de alimentao do microcontrolador. Pino de massa do microcontrolador. Pino 1 do cristal de oscilao. Entrada de uma fonte de relgio externo. Pino 7 do porto A. Pino 2 do cristal de oscilao. Sada de uma fonte de relgio. Pino 6 do porto A. Pino 0 do porto C Pino 1 do cristal de oscilao do Timer1. Entrada externa de relgio para Timer1 e Timer3. Pino 1 do porto C. Pino 2 do cristal de oscilao do Timer1. Entrada/Sada do mdulo CCP2. Pino 2 do porto C. Entrada/Sada do mdulo CCP1. Sada dedicada do mdulo CCP1. Pino 3 do porto C. Relgio de sincronismo para comunicaes SPI. Relgio de sincronismo para comunicaes I2C. Pino 0 do porto D. Bit 0 de dados do porto paralelo. Pino 1 do porto D. Bit 1 de dados do porto paralelo. Pino 2 do porto D. Bit 2 de dados do porto paralelo. Pino 3 do porto D. Bit 3 de dados do porto paralelo. Pino 4 do porto C. Entrada de dados na comunicao SPI. Linha de dados na comunicao I2C. Pino 5 do porto C. Sada de dados na comunicao SPI. Pino 6 do porto C. Linha de transmisso na comunicao USART. Relgio de sincronismo na comunicao USART. Pino 7 do porto C. Linha de recepo na comunicao USART. Linha de sincronismo de dados em comunicao USART. Pino 4 do porto D. Bit 4 de dados do porto paralelo. Pino 5 do porto D. Bit 5 de dados do porto paralelo. Sada dedicada do mdulo CCP1.

7

8

9

10 11 12 13

ST CMOS TTL

14

TTL ST ST ST CMOS ST ST ST ST ST ST ST TTL ST TTL ST TTL ST TTL ST ST ST ST ST ST ST ST ST ST TTL ST TTL

15

16

17

18

19 20 21 22

23

24

25

26

27

28

Pgina 6

Bernardino Neves 2011 Arquitectura PIC18

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

RD6 PSP6 P1C RD7 PSP7 P1D VSS VDD RB0 INT0 FLT0 AN12 RB1 INT1 AN10 RB2 INT2 AN8 RB3 AN9 CCP2 RB4 KBI0 AN11 RB5 KBI1 PGM RB6 KBI2 PGC RB7 KBI3 PGD

29

30 31 32

33

34

35

36

37

38

39

40

I/O I/O O I/O I/O O P P I/O I I I I/O I I I/O I I I/O I I/O I/O I I I/O I I/O I/O I I/O I/O I I/O

ST TTL ST TTL

TTL ST ST Analgico TTL Analgico ST TTL Analgico ST TTL Analgico ST TTL TTL Analgico TTL TTL ST TTL TTL ST TTL TTL ST

Pino 6 do porto D. Bit 6 de dados do porto paralelo. Sada dedicada do mdulo CCP1. Pino 7 do porto D. Bit 7 de dados do porto paralelo. Sada dedicada do mdulo CCP1. Pino de massa do microcontrolador. Pino de alimentao do microcontrolador. Pino 0 do porto B. Pino 0 de interrupo externa. Pino dedicado ao CCP1. Entrada analgica 12. Pino 1 do porto B. Pino 1 de interrupo externa. Entrada analgica 10. Pino 2 do porto B. Pino 2 de interrupo externa. Entrada analgica 8. Pino 3 do porto B. Entrada analgica 9. Entrada/Sada do mdulo CCP2. Pino 4 do porto B. Pino 0 de interrupo por mudana de estado. Entrada analgica 11. Pino 5 do porto B. Pino 1 de interrupo por mudana de estado. Pino de seleco do ICSP. Pino 6 do porto B. Pino 2 de interrupo por mudana de estado. Pino de sincronismo do ICSP. Pino 7 do porto B. Pino 3 de interrupo por mudana de estado. Pino de dados do ICSP.

Tabela 4 - Nomenclatura do pinout do microcontrolador.

Legenda: I O I/O ST TTL PWR Entrada (Input). Saida (Output). Entrada ou sada. Sinal do tipo Schmitt Trigger. Sinal do tipo TTL. Alimentao.

Estrutura interna.Como foi descrito nas linhas acima, neste captulo pretende-se conhecer as caractersticas do microcontrolador, a estrutura interna d-nos uma ideia de como o microcontrolador no seu interior, o microcontrolador PIC 18F4620 foi optimizado para poder executar um conjunto de instrues em velocidade muito alta, de facto possvel obter uma velocidade de 10 MIPS (MIPS Milhes de instrues por segundo) para uma frequncia de oscilao de 40 Mhz, o que se pode caracterizar de um bom desempenho mesmo para aplicaes exigentes.

Bernardino Neves - 2011 Arquitectura PIC18

Pgina 7

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011Algumas das caractersticas importantes da estrutura interna so: Capacidade de pipeline, isto , enquanto executa uma instruo, o processador procura a prxima instruo a ser executada, de forma a acelerar a execuo do programa. Cada instruo apenas ocupa uma posio de memria de programa. Permite a execuo de uma instruo num ciclo de mquina. Capacidade de manter um tempo fixo para a execuo de todas as instrues. Semelhana e compatibilidade entre as diversas famlias de microcontrolador, o que facilita a migrao de uma aplicao de um microcontrolador para outro. A estrutura interna do microcontrolador pode ser visto como um conjunto de blocos funcionais, estes blocos funcionais permitem uma maior facilidade em perceber como constitudo internamente o microcontrolador, no datasheet do fabricante podemos visualizar um diagrama de blocos que define a estrutura interna do microcontrolador, a figura seguinte mostra o diagrama de blocos do microcontrolador PIC 18F4620.

Fig 4 - Diagrama de blocos da estrutura interna do microcontrolador PIC 18LF4620 [3].

Pgina 8

Bernardino Neves 2011 Arquitectura PIC18

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

A partir do diagrama de blocos da estrutura interna do microcontrolador, podemos obter todas as informaes relevantes sobre o microcontrolador, no canto superior esquerdo podemos verificar qual a estrutura e registos associados a memoria de programa FLASH, do lado direito temos definidos os PORTOS, no centro superior temos a estrutura e registos associados a memoria RAM, no centro temos a unidade lgica e aritmtica (ULA), no lado centro esquerdo temos os registos associados a configurao de hardware do microcontrolador e por fim no canto inferior esquerdo temos os perifricos disponveis no microcontrolador. Por exemplo em relao aos PORTOS, podemos verificar que existem 5 PORTOS designados de A a E e quais so os pinos e funes associados a cada PORTO, tambm podemos verificar que o bus de dados para os PORTOS um bus de 8 bits.

Configurao do oscilador.O microcontrolador PIC 18F4620 pode utilizar 10 tipos diferentes de osciladores, conforme a lista seguinte: LP Oscilador de cristal de baixa potncia. XT Oscilador de cristal de quartz. HS Oscilador de cristal de quartz de alta velocidade. HSPLL - Oscilador de cristal de quartz de alta velocidade com multiplicador de frequncia. RC Oscilador de formado pelo conjunto resistncia e condensador, com sada de relgio no pino RA6. RCIO - Oscilador de formado pelo conjunto resistncia e condensador. INTIO1 Oscilador interno com sada de relgio no pino RA6. INTIO2 Oscilador interno. EC Fonte de relgio externo com sada de relgio no pino RA6. ECIO Fonte de relgio externo.

O tipo de oscilador usado deve ser de acordo com a aplicao que se pretende, por exemplo uma aplicao simples, o controlo automtico de um porto, o oscilador interno responde bem as necessidades pretendidas, mas se for necessrio uma base de tempo mais preciso a uma grande velocidade o mais certo escolher um cristal de quartz de alta velocidade, para aplicaes cujo a base de tempo indispensvel, podemos escolher a fonte de relgio externo donde a fonte provem de um relgio em tempo real (RTC). Para implementar um oscilador de cristal, basta ligar os terminais do cristal aos pinos OSC1 e OSC2 juntamente com um par de condensadores conforme a figura seguinte.

C OSC1 Cristal C OSC2

Fig 5 - Implementao do oscilador de cristal.

Bernardino Neves - 2011 Arquitectura PIC18

Pgina 9

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

O valor dos condensadores depende do valor e tipo de cristal escolhido, a tabela seguinte mostra os valores recomendados pelo fabricante do microcontrolador.

Tipo de oscilador LP XT

HS

Frequncia 32 Khz 1 Mhz 4 Mhz 4 10 20 25

Valor de C em pF 30 15 15 15 15 15 15

Tabela 5 - Valor dos condensadores para os diferentes tipos de cristais.

Os osciladores EC e ECIO requerem uma fonte de relgio esterno ligado no pino OSC1, repare que no modo EC obtemos uma fonte de relgio no pino OSC2, cuja frequncia um quarto do da fonte, este pino OSC2 pode ser usado para sincronizar perifricos externos, a figura seguinte mostra a ligao tpica da fonte de relgio ao microcontrolador.

Clock

OSC1 / CLKI

Clock / 4

OSC2 / CLKO

Fig 6 - Implementao do oscilador por fonte de relgio externo.

O oscilador RC usado para aplicaes em que a base de tempo no relevante, a sua implementao feita a partir de um circuito simples constitudo por uma resistncia e um condensador, neste oscilador a frequncia de oscilao depende da tenso de alimentao, dos valores da resistncia e do condensador, e da temperatura de funcionamento, pode acontecer tambm que para os mesmo componentes, dois dispositivos diferentes tenham frequncias de oscilao diferentes, isto acontece devido as variaes de fabrico dos componentes, quer do microcontrolador ou da resistncia e do condensador.

Pgina 10

Bernardino Neves 2011 Arquitectura PIC18

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Tambm neste tipo de oscilador possvel obter uma sada de relgio, cuja frequncia um quarto da frequncia gerada pelo oscilador RC, a figura seguinte mostra o circuito tpico para a implementao do oscilador RC.VCC

R OSC1 C

Clock / 4

OSC2

Fig 7 - Implementao do oscilador RC.

Os valores recomendados para a resistncia e o condensador so e a frequncia de oscilao pode ser calculada pela expresso f = 1 / RC.

,

O uso do multiplicador de frequncia apenas pode ser usado quando o tipo de oscilador o de cristal de alta velocidade ou ento com o oscilador interno, com esta opo possvel utilizar um cristal de frequncia mais baixo e colocar o microcontrolador a funcionar a uma frequncia muito mais alta, repare que a frequncia mxima permitida pelo microcontrolador de 40 Mhz, por essa razo quando pensar em utilizar esta opo o cristal de alta velocidade no deve ultrapassar os 10 Mhz. Uma aplicao tpica pode ser a necessidade de utilizar uma fonte de relgio proveniente do microcontrolador, para sincronismo de perifricos externos, nesse caso para no limitar a frequncia de oscilao do microcontrolador podemos usar o multiplicador de frequncia para obter uma maior frequncia de oscilao no microcontrolador e uma frequncia mais baixa para o sincronismo. Uma das vantagens que o microcontrolador escolhido nos apresenta, o facto de incorporar um oscilador interno, com capacidade de gerar uma frequncia de oscilao at os 32 Mhz. O gerador de relgio interno, pode ser uma ideia interessante quando se pretende reduzir custos com cristais ou outras fontes relgio externas, existem duas fontes de relgio do oscilador interno, a primeira uma fonte relgio de 8 Mhz com capacidade de gerar frequncias de 31 Khz at 4 Mhz, a segunda uma fonte de relgio proveniente de um oscilador RC interno configurado para gerar uma frequncia de 31Khz. Apesar do oscilador interno ser um pormenor a considerar, no nos podemos esquecer da influncia da temperatura na frequncia gerada, o prprio microcontrolador incorpora um registo o OSCTUNE cuja uma possvel funo calibrar a frequncia de oscilao em funo da temperatura, repare que esta calibrao no automtica, necessrio criar um programa e inserir um sensor de temperatura no nosso hardware para ser possvel calibrar a frequncia de oscilao em funo da temperatura.

Bernardino Neves - 2011 Arquitectura PIC18

Pgina 11

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

A figura seguinte mostra o diagrama de blocos do mdulo de configurao do oscilador, em que facilmente podemos verificar os componentes que integram o mdulo de configurao do oscilador.

Fig 8 - Diagrama de blocos do mdulo de configurao do oscilador [3].

Pelo diagrama de blocos, podemos verificar no canto superior esquerdo os pinos das fontes externas de relgio, tanto do oscilador principal como do oscilador secundrio, no centro superior podemos verificar o multiplicador de frequncia e o seu registo associado, repare que no diagrama de blocos possvel verificar que tipos de oscilador permitido usar com o multiplicador de frequncia, na parte inferior podemos visualizar os componentes do oscilador interno e o seu registo de configurao, outra informao que podemos obter pela analise do diagrama de blocos os registos associados ao controlo da configurao do oscilador. Repare que possvel internamente, pela manipulao de registos de configurao do sistema do oscilador, alterar a frequncia de clock a meio de um programa de acordo com as especificaes da aplicao, apenas no uso do oscilador interno.

Os registos associados ao controlo da configurao oscilador so: OSCCON Registo de controlo do oscilador. OSCTUNE Registo de calibrao do oscilador.

Pgina 12

Bernardino Neves 2011 Arquitectura PIC18

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Configurao do hardware.Os microcontroladores PIC, possuem uma posio de memria, situada aps o final da memria de programa, que serve para armazenar as configuraes de hardware interno do microcontrolador. Trata-se de registos, cuja funo configurar o hardware de acordo com a aplicao pretendida, a tabela seguinte, mostra os registos e a sua funo, as diferentes famlias de microcontroladores PIC, possuem distintas palavras de configurao, isto , para cada microcontrolador, convm consultar o seu respectivo datasheet para confirmar os registos e funes, para posteriormente serem configurados.

Endereo 0x300001 0x300002 0x300003 0x300005 0x300006 0x300008 0x300009 0x30000A 0x30000B 0x30000C 0x30000D 0x3FFFFE 0x3FFFFF

Nome CONFIG1H CONFIG2L CONFIG2H CONFIG3H CONFIG4L CONFIG5L CONFIG5H CONFIG6L CONFIG6H CONFIG7L CONFIG7H DEVID1 DEVID3

Funo Configurao do oscilador. Configuraes de reset e alimentao. Configurao do Watchdog (WDT) Configurao da funo de pinos IO. Configurao da programao por ICSP. Proteco de dados na memria FLASH. Proteco de dados na memria EEPROM. Proteco de escrita na memria FLASH. Proteco de escrita na memria EEPROM. Proteco de dados. Proteco de dados. Identificao do dispositivo. Identificao do dispositivo.

Tabela 6 - Registos da palavra de configurao do microcontrolador.

CONFIG1H

7

6

5

4

3

2

1

0 Seleco do oscilador Activa a monitorizao do relogio Activa a transio do oscilador interno para externo

CONFIG2L

7

6

5

4

3

2

1

0 Habilita o reset por PWRT Habilita o reset por BOR Seleco da tenso de referencia para BOR

CONFIG2H

7

6

5

4

3

2

1

0 Habilita o WDT Postscale WDT

CONFIG3H

7

6

5

4

3

2

1

0 Selecciona o CCP2 no pino RC1 ou RB3 Selecciona o PortoB como IO ou ADC Configurao do oscilador do Timer1 Habilita o pino 1 como MCLR

Bernardino Neves - 2011 Arquitectura PIC18

Pgina 13

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

CONFIG4L

7

6

5

4

3

2

1

0 Reset causado pela Stack Habilita a alimentao por ICSP Habilita a instruo extensa Habilita a programao por ICSP, pinos RB6 e RB7 dedicados ao ICSP

CONFIG5L

7

6

5

4

3

2

1

0 Habilita a proteco de leitura do cdigo de programa

CONFIG5H

7

6

5

4

3

2

1

0 Habilita a proteco de leitura da EEPROM Habilita a proteco de leitura do cdigo BOOT

CONFIG6L

7

6

5

4

3

2

1

0 Habilita a proteco de escrita no cdigo de programa

CONFIG6H

7

6

5

4

3

2

1

0 Habilita a proteco de escrita na palavra de configurao Habilita a proteco de escrita na EEPROM Habilita a proteco de escrita no cdigo BOOT

CONFIG7L

7

6

5

4

3

2

1

0 Habilita a proteco de leitura feita a partir de outros blocos

CONFIG7H

7

6

5

4

3

2

1

0 Habilita a proteco de leitura do BOOT, a partir de outros blocos

Sistema de reset.O sistema de reset do microcontrolador PIC, responsvel por iniciar a CPU e perifricos, aps um dos seguintes eventos: Alimentao inicial do C (POR), um circuito detecta a subida de tenso de alimentao e mantm o reset at esse valor atingir o valor nominal.

VCCn

VCC

RESET

Fig 9 - Reset por alimentao inicial do C.

Pgina 14

Bernardino Neves 2011 Arquitectura PIC18

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Temporizador de inicializao (PWRT), um circuito mantm o reset durante um perodo de tempo, cerca de 66ms aps a alimentao inicial do C, para activar o PWRT necessrio activar o bit PWRT da palavra de configurao, registo CONFIG2L.

VCCn

VCC

RESET

TPWRT

Fig 10 - Reset devido a alimentao inicial do C.

Arranque do oscilador (OST), um determinado tempo anexo ao tempo total de reset do C, para a estabilizao do oscilador externo.

VCCn

VCC

RESET

TPWRT

TOST

Fig 11 - Reset devido a estabilizao do oscilador.

Queda de alimentao (BOR), quando o circuito detecta um valor abaixo de um determinado valor de referncia, especificado pelos bits BORV0 e BORV1, no registo CONFIG2L, gera um reset ao C.

VCC

Vref

RESET

Bernardino Neves - 2011 Arquitectura PIC18

Pgina 15

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011Fig 12 - Reset gerado por queda de tenso.

Reset provocado pelo watchdog (WDT), o watchdog um temporizador, cuja funo gerar um reset, para que o programa no entre num ciclo infinito e bloqueie o sistema. A figura seguinte mostra, o diagrama de blocos do circuito de reset.

Fig 13 - Diagrama de blocos do circuito de reset.

Pelo diagrama de blocos, podemos verificar que, alem dos eventos acima referidos, possvel tambm gerar reset ao C, por software atravs da instruo RESET. Repare ainda que, ocorre um reset, quando ocorre um estouro da pilha de desvio de programa (Stack Pointer). A verificao da origem do reset, pode ser verificada atravs do registo RCON, pois a origem do evento apaga a sua respectiva flag no registo, devendo o utilizador voltar a colocar a 1 por software.

RCON

7

6

5

4

3

2

1

0 Reset por queda de tenso Reset causado pela inicializao Reset por WDT Reset causado pela instruo RESET

Fig 14 - Origem do evento de reset.

Pgina 16

Bernardino Neves 2011 Arquitectura PIC18

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Ambiente de programao MPLAB IDE.

Introduo ao sistema integrado MPLAB.A Microchip possibilita a utilizao de diferentes sistemas de desenvolvimento, desde compiladores, programadores, etc., todos eles controlados por uma nica ferramenta de desenvolvimento, o sistema integrado MPLAB. Este sistema inclui todos os utilitrios necessrios para desenvolver qualquer projecto, assim sem sair da janela principal, tem-se acesso a qualquer utilitrio quer de hardware ou software de um modo simples e rpido. Depois de se criar um programa possvel executa-lo atravs do simulador, a simulao feita passo a passo de um modo animado ou de forma contnua, sendo possvel parar o seu funcionamento em qualquer momento, tanto para verificar o estado de registos ou mesmo para os alterar para de seguida voltar a executar a simulao com as modificaes feitas.

Instalao do MPLAB.Para instalar o MPLAB IDE, necessrio descarregar atravs da internet, na pgina da Microchip (www.microchip.com) o software de desenvolvimento MPLAB IDE. Ao entrar na pagina Web da Microchip, na sua pagina principal encontra-se um link com o nome de MPLAB IDE, nessa pgina a Microchip faz uma apresentao do MPLAB IDE e no final possvel descarregar o software. Aps descarregar o software MPLAB IDE, passamos a etapa seguinte que a instalao. Numa primeira fase necessrio descompactar o ficheiro recebido, ao descompactar encontramos os ficheiros que se mostra na figura seguinte.

Fig 15 - Ficheiros descompactados.

O passo seguinte a execuo do ficheiro de instalao, para o efeito necessrio executar o ficheiro SETUP.exe, nas trs janelas seguintes dever seleccionar o boto NEXT. A primeira janela uma janela de boas vindas, a segunda a aceitao dos termos da licena de instalao e a terceira a seleco por defeito de instalao completa, como mostra a figura seguinte.

Bernardino Neves - 2011 Ambiente de programao MPLAB IDE

Pgina 17

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Fig 16 Seleco da instalao completa.

Aps a seleco de instalao completa, chega o momento de indicar o local onde se deve instalar o software MPLAB IDE, pode aceitar a sugesto por defeito ou ento seleccionar outra directoria para a instalao, no final deve pressionar o boto NEXT, para executar a instalao.

Fig 17 - Localizao do ficheiro de instalao.

Volte a pressionar o boto NEXT at aparecer a janela de progresso da instalao.

Pgina 18

Bernardino Neves 2011 Ambiente de programao MPLAB IDE

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Fig 18 - Janela de progresso da instalao.

No final da instalao ir aparecer uma janela a perguntar se pretende instalar o software HITECH Software, fica ao vosso critrio a sua instalao. No final da instalao necessrio reiniciar o computador para finalizar a instalao.

Bernardino Neves - 2011 Ambiente de programao MPLAB IDE

Pgina 19

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Pgina 20

Bernardino Neves 2011 Ambiente de programao MPLAB IDE

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Compilador C18.Instalao do compilador C18.Neste momento, j tem instalado o MPLAB IDE, o prximo passo instalar o compilador C18 da Microchip, este compilador ir permitir compilar os programas desenvolvidos em linguagem C. Existe uma verso para estudantes do compilador C18, o qual deve descarregar da pagina Web da Microchip, esta verso estudante s permite a optimizao de cdigo at um limite de 30 dias, para os programas propostos a optimizao do cdigo no ser um factor relevante. A instalao do compilador C18 requer alguma ateno, para o efeito irei detalhar todos os passos requeridos na instalao. Numa primeira fase devesse seleccionar o directrio onde deve ficar o compilador, sugiro que se aceite a sugesto que aparece na janela, porque mais tarde ser necessrio buscar alguns ficheiros a esse directrio e assim torna-se mais simples.

Fig 19 - Localizao da instalao do compilador C18.

Na prxima janela aparece os componentes que se pretende instalar, sugiro que se instalem todos os componentes, como mostra a figura seguinte.

Fig 20 - Seleco dos componentes do compilador C18.

Bernardino Neves - 2011 Compilador C18

Pgina 21

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Na prxima janela, deve seleccionar os trs primeiros itens da configurao das variveis de ambiente.

Fig 21 - Configurao das variveis.

A janela seguinte diz respeito a ligao do MPLAB IDE ao compilador C18, devendo seleccionar todos os itens.

Fig 22 - Ligao do MPLAB IDE ao compilador C18.

Nas prximas janelas pressione o boto NEXT at concluir a instalao. Aps a instalao do compilador C18, j se encontra com as ferramentas necessrias para o desenvolvimento de programas para os microcontroladores da Microchip. Mas ainda necessria a integrao do compilador com o MPLAB IDE.

Pgina 22

Bernardino Neves 2011 Compilador C18

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Especificaes do compilador C18.Tal como qualquer compilador, o compilador C18 tem as suas especificaes.

Tipo e tamanho de variveis.O compilador C18 suporta o standard ANSI na definio de tipos de inteiros, a tabela seguinte mostra o tipo de variaveis, o seu tamanho e limites. Tipo char unsigned char int unsigned int short unsigned short short long unsigned short long long unsigned long Tamanho 8 8 16 16 16 16 24 24 32 32 Mnimo -128 0 -32.768 0 -32.768 0 -8.388.608 0 -2.147.483.648 0 Mximo 127 255 32.768 65.535 32.768 65.535 8.388.607 16.777.215 2.147.483.648 4.294.967.295

Tabela 7 - Tipo de variveis, o seu tamanho e limites.

Quanto ao tipo de armazenamento de dados, o compilador C18 permite trs tipos diferentes de armazenamento de dados:

Armazenamento por tipo de dados.Numa varivel com vrios bytes o byte menos significativo esta alocado no endereo menos significativo, por exemplo, se definirmos uma posio de memria do microcontrolador e queremos escrever o contedo de uma varivel do tipo long, o compilador aloca o byte menos significativo no primeiro endereo e os restantes nas posies seguintes at atingir o byte mais significativo. Exemplo:

#pragma idata teste=0x0200 long i=0xAABBCCDD;

Endereo Contedo

0x0200 0xDD

0x0201 0xCC

0x0202 0xBB

0x0203 0xAA

Bernardino Neves - 2011 Compilador C18

Pgina 23

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Armazenamento por classes - Overlay.A classe de armazenamento por sobreposio overlay apenas permitido quando o compilador est a operar no modo Non-Extended, pode ser aplicado a variveis locais, mas no a parmetros, a definies de funes e a variveis globais. A classe de armazenamento por sobreposio associa smbolos dentro de funes especficas, isto , uma varivel definida dentro de uma funo apenas valida dentro dessa funo. Exemplo:

void e (void) { overlay int X = 5; X++; }

void f (void) { overlay int Y = 2; Y++; }

Neste exemplo, se o compilador a compilar o programa detectar que no executa estas duas funes em simultneo, a classe de armazenamento por sobreposio aloca a mesma posio de memria para as duas variveis definidas.

Outros tipos de armazenamento por classes so: Auto Define a varivel como local, por defeito todas as variveis so locais. Extern Define variveis externas ao programa. Register Indica ao compilador que a varivel um registo do CPU. Static Define uma varivel que ocupa uma posio permanente na memoria.

Armazenamento por qualificadores.O compilador C18 tem como qualificadores de armazenamento de dados o far, near, rom e ram, estes qualificadores tem a mesma funo que const e volatile em ANSI C, isto , possvel definir o tipo de varivel e o seu acesso.

Pgina 24

Bernardino Neves 2011 Compilador C18

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

A tabela seguinte mostra a localizao das variveis em funo dos qualificadores. Qualificador far near rom Em qualquer lugar na memria de programa. Em memria de programas inferiores a 64KBytes. ram Em qualquer lugar na memria de dados. No acesso a memria.

Tabela 8 - Localizao das variveis em funo dos qualificadores.

Em variveis tipo ponteiros, os mesmos podem apontar tanto para posies de memoria ram ou rom , o tamanho do ponteiro depende do tipo de varivel para qual aponta, isto se apontar para memoria de dados tem o tamanho de 16 bits, se apontar para memoria de programa ter 24 bits, por defeito quando se define uma varivel tipo ponteiro esta aponta para memoria de dados, se quisermos apontar para memoria de programa temo de colocar o qualificador rom.

Tipo de ponteiro Memoria de dados near Memoria de programa far Memoria de programa

Exemplo char *a; rom near char *a; rom near char *a;

Tamanho 16 bits 16 bits 24 bits

Tabela 9 - Tamanho dos ponteiros.

Incluir ficheiros - #INCLUDEA incluso de ficheiros no nosso cdigo fonte feita a partir do uso da directiva do compilador #Include, quando queremos incluir um ficheiro de sistema (System Header File) devemos usar a directiva do seguinte modo #Include , porque como se trata de um ficheiro de sistema o compilador vai procurar na pasta INCLUDES do compilador, entretanto se for um ficheiro de cabealho criado pelo usurio devemos usar a directiva do seguinte modo #Include Nome _do_ficheiro, porque neste caso o compilador vai procurar o ficheiro dentro da pasta do projecto.

Macros predefinidas do compilador C18.O compilador C18 tem predefinido as seguintes macros. _18CXX Indica que o compilador o MPLAB C18. _18F4620 Indica ao compilador qual o microcontrolador a ser utilizado. _TRADITIONAL18_ Modo Non-extended. _EXTENDED18_ Modo Extended.

Bernardino Neves - 2011 Compilador C18

Pgina 25

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

A directiva #PRAGMA.Esta directiva serve para indicar ao compilador C18 que um determinado cdigo se encontra alocado numa especifica posio de memoria, essas seces de memoria tanto podem ser de dados como de programa. Existem dois tipos de seces dependendo do tipo de memria.

Memria de programa: code contem instrues de execuo. romdata contem variaveis e cosntantes.

Memria de dados: udata contem variaveis estticas no inicializadas. idata contem variaveis estticas inicializadas.

Exemplo:

#pragma code hight_vector = 0x08 #pragma code

A primeira linha de cdigo faz o compilador desviar o programa para o endereo 0x08, a segunda linha de cdigo faz o compilador voltar a posio de endereo de memria de programa onde estava antes do desvio.

Pgina 26

Bernardino Neves 2011 Compilador C18

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Directivas do compilador C18.As directivas do instrues de como deve ser compilado o cdigo fonte, o compilador C18 tem as seguintes directivas disponveis: Directiva Descrio Define uma constante que ser substituda dentro do cdigo fonte pelo seu valor, quando for compilado. Directiva associada a directiva #if Directiva associada a directiva #if e #else Directiva associada a directiva #if Directiva que gera uma mensagem de erro definida pelo usurio, a mensagem aparece no output do compilador Executa uma condio se for verdadeira. Executa se uma expresso estiver definida. Executa se uma expresso no estiver definida. Directiva para incluir ficheiros no cdigo fonte Esta directiva desvia o programa para um endereo especificado Configura a palavra de configurao. Esta directiva serve que uma constante deixe de estar definida Exemplo #define Maximo 100 #define Nome Jose #define Area(x,y) x*y #define Max 10 #define T 3 #if defined(Max) && defined(T) #if (Max * T) > 50 #error error #else #define Novo Max*T #endif #endif #ifdef MAX Contador = MAX; #ifndef MAX #define MAX 100 #include main.h #pragma code #pragma config OCS = HS #define Maximo 10 . #undef Maximo #define Maximo 20

#define

#else #elif #endif

#error

#if #ifdef #ifndef #include #pragma #pragma config

#undef

Tabela 10 - Directivas do compilador C18.

Livrarias de funes do compilador C18.O compilador C18 disponibiliza quatro tipos de livrarias de funes. Nas tabelas seguintes mostra-se a descrio dos quatro tipos de livrarias e assim como tambm a sua respectiva descrio, num dos captulos mais adiante sero detalhados as livrarias das funes de software e hardware de um modo mais aplicado, pretendendo-se que neste momento o leitor tenha apenas uma ideia abrangente sobre as funes disponibilizadas pelo compilador C18.

Bernardino Neves - 2011 Compilador C18

Pgina 27

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Nome math.h

Descrio Funes matemticas.Tabela 11 Livraria de funes de matemtica.

Nome ctype.h stdlib.h string.h delays.h reset.h stdio.h

Descrio Classificao do tipo de caracteres. Converso de dados. Manipulao de memria e strings. Funes para gerar atrasos. Funes de reset. Funes de output de caracteres.Tabela 12 - Livrarias de funes gerais.

Nome xlcd.h can2510.h sw_i2c.h sw_uart.h sw-spi.h

Descrio Funes de controlo de LCD Funes de controlo do controlador CAN2510. Funes de controlo e comunicaes por I2C. Funes de controlo e comunicaes por UART. Funes de controlo e comunicaes por SPI.Tabela 13 - Livrarias de funes de software.

Nome adc.h capture.h i2c.h portb.h mwire.h pwm.h spi timers.h usart.h

Descrio Funes de suporte ao perifrico ADC. Funes de suporte ao perifrico captura. Funes de suporte ao perifrico I2C. Funes de suporte ao perifrico PORTB. Funes de suporte ao perifrico Microwire. Funes de suporte ao perifrico PWM. Funes de suporte ao perifrico SPI Funes de suporte ao perifrico TIMERS Funes de suporte ao perifrico UART

Tabela 14 - Livrarias de funes de hardware.

Pgina 28

Bernardino Neves 2011 Compilador C18

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Primeiros passos com o MPLAB IDE.Criar e configurar um projecto no MPLAB IDE.Agora que j tem instalado o MPLAB IDE e o compilador C18, chega o momento de dar os primeiros passos, para comear execute a aplicao MPLAB IDE. Crie um novo projecto seleccionando Project -> Project Wizard, como mostra a figura seguinte.

Fig 23 - Criar uma novo projecto.

O Project Wizard ajuda-nos a criar e a configurar um novo projecto, seleccione seguinte aps a janela de boas vindas e seleccione o microcontrolador PIC18F4620 que ser o microcontrolador, que iremos usar em todos os exemplos, repare que em futuros projectos o pode escolher o microcontrolador que desejar. Aps seleccionar o microcontrolador chega o momento de seleccionar o compilador C18, para a nossa linguagem de programao, neste caso seleccionamos o Microchip C18 ToolSuite, como mostra a figura seguinte.

Fig 24 - Seleco do compilador C18.

Bernardino Neves - 2011 Primeiros passos com o MPLAB IDE

Pgina 29

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Se por acaso, quando chega a esta janela e no aparece o compilador C18, ou porque no foi instalado correctamente ou o MPLAB IDE no o encontra, nesse caso deve de indicar a localizao atravs do boto Browse , note que necessrio indicar a localizao dos quatro executveis MPASM, MPLINK, MPLAB C18 e o MPLIB. O passo seguinte criar e escolher uma localizao para o ficheiro do novo projecto, vamos escolher o nome de Exemplo1 para o nosso projecto, no final seleccione o boto seguinte, a prxima janela pergunta se temos ficheiros para adicionar ao nosso projecto, como no temos passamos para a janela seguinte que nos indica a concluso da configurao do nosso projecto, indicando os parmetros do projecto, como podemos verificar na figura seguinte.

Fig 25 Concluso da configurao do projecto.

Por fim seleccionamos o boto Concluir e teremos o nosso primeiro projecto criado, l porque temos um projecto criado no quer dizer que j tenhamos terminado, ainda falta inserir o ficheiro para editarmos o cdigo em linguagem C, para o efeito crie um novo ficheiro em New File, no quanto superior esquerdo, aparece de seguida uma pagina em branco, deve ser gravada com a terminao *.C na mesma pasta onde se encontra o projecto, para gravar o ficheiro seleccione a pagina fazendo um click sobre a mesma e de seguida no menu File seleccione a opo Save As , escolha a localizao do projecto e um nome para o ficheiro e no se esquea de o terminar com o .C. Agora que tem o ficheiro gravado necessrio inseri-lo no projecto, deve seleccionar a pasta Source Files com o boto direito do rato e seleccionar o item Add Files, procure a pasta que contem o projecto e seleccione o ficheiro *.C, as figuras seguintes mostram os passos a seguir.

Fig 26 - Pasta Souce Files.

Pgina 30

Bernardino Neves 2011 Primeiros passos com o MPLAB IDE

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Fig 27 - Janela para adicionar ficheiros ao projecto.

O MPLAB IDE permite guardar o ltimo ambiente de trabalho, para o efeito quando fecha o aplicativo MPLAB IDE recebe uma mensagem a perguntar se pretende guardar o ambiente de trabalho, o qual deve responder que sim, a figura seguinte mostra o ambiente de trabalho pretendido, repare que conforme o desenrolar do desenvolvimento do projecto, mais janelas tero de ser adicionadas ao nosso ambiente de trabalho.

Fig 28 - Ambiente de trabalho.

Bernardino Neves - 2011 Primeiros passos com o MPLAB IDE

Pgina 31

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Primeiro programa.J criamos um projecto, agora vamos criar um pequeno programa com o objectivo de mostrar como deve ser o corpo do cdigo no editor de texto antes de ser compilado. Pretende-se tambm dar a conhecer as ferramentas de simulao que o MPLAB disponibiliza, como tambm a manipulao de registos e a simulao de sinais nos pinos do microcontrolador. Abra o projecto do exemplo anterior e copie o cdigo que se encontra na tabela seguinte, para o editor de texto.

#include //Declarao de definies #define SaidaTRIS #define SaidaIO //Declarao de variaveis int i=0; void main (void) { SaidaTRIS = 0; SaidaIO = 0; while(1) { SaidaIO ^= 1; i++; } }

(TRISBbits.TRISB7) (LATBbits.LATB7)

Tabela 15 - Cdigo do ficheiro do exemplo.

Depois de escrito o programa necessrio compilar, para o fazer basta pressionar a tecla de acesso rpido F10 ou no icon MAKE, como mostra a figura seguinte.

Fig 29 - Localizao do icon Make.

Ao compilar verificamos que no existem erros, caso existissem os mesmos apareciam na janela OUTPUT, chega o momento de testar o nosso primeiro programa, para isso devemos activar o simulador, o simulador encontra-se no menu Debugger -> Select tool -> 5 MPLAB SIM , como mostra a figura seguinte.

Pgina 32

Bernardino Neves 2011 Primeiros passos com o MPLAB IDE

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Fig 30 - Seleccionar o simulador MPALB SIM.

Com o simulador activado, j podemos testar o nosso primeiro programa, mas antes disso convm explicar como funciona o simulador MPLAB SIM, j deve ter verificado que quando activou o simulador, que apareceram no ambiente de trabalho uns novos icons, so os botes de controlo do simulador, a figura seguinte mostra o significado de cada um deles.

Coloca breakpoints no programa. Faz reset ao programa. Executa ate ao fim da funo. Executa o contedo da funo. Executa passo a passo o programa. Inicia a simulao no modo animado do programa. Pausa da simulao do programa. Inicia a simulao do programa.

Fig 31 - Comandos do simulador MPLAB SIM.

O que o programa exemplo faz mudar o estado do pino 7 do porto B e incrementar o contedo da varivel i em cada ciclo do while, o mesmo pode ser verificado quando se pressiona o icon de simulao no modo animado, abra a janela File Registers e Special Function Registers, no menu View e seleccione o endereo 0xF8A da janela Special Function Registers e o endereo 0x084 da janela File Registers , no modo de simulao animado possvel verificar o estado do bit 7 do porto B a comutar de estado e o incremento da varivel i em cada ciclo do while.

Bernardino Neves - 2011 Primeiros passos com o MPLAB IDE

Pgina 33

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Fig 32 Seleco da janela File Registers e Special Function Registers.

Modificar o contedo de registos e variveis.Agora vamos alterar o valor da varivel i, para o efeito coloque o simulador em pausa, click em cima do contedo da varivel, neste caso na coluna decimal e altere o valor para um a sua escolha, de seguida volta a colocar o simulador no modo animado, pode reparar que a varivel i incrementou uma unidade. Uma outra janela que nos permite ter acesso e alterar o contedo de variveis e registos a janela Watch. Nesta janela possvel mais dados sobre as variveis, tal como o endereo em que esta alocado, para podermos visualizar uma varivel necessrio inseri-la como mostra a figura seguinte.

Fig 33 - Inserir uma varivel para se ter acesso aos seus parmetros.

Repare que a janela Watch tem dois botes de adio de registo, o Add SFR para adicionar registos especiais e o boto Add Symbol para adicionar variveis, a janela seguinte mostra os dados que pretendemos observar.

Pgina 34

Bernardino Neves 2011 Primeiros passos com o MPLAB IDE

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Fig 34 - Janela Watch.

Parar o programa num determinado sitio especifico Breakpoint.O simulador MPLAB SIM permite a insero de breakpoints, j deve ter reparado que quando inicia o programa no modo animado, ele primeiro executa um cdigo e s passado algumas linhas de cdigo que executa o nosso cdigo do programa exemplo, podemos passar essas linhas de cdigo rapidamente inserindo um breakpoint no inicio do nosso programa e iniciando a simulao no modo continuo, quando o simulador encontrar o breakpoint pra a simulao, e nesse caso, retiramos o breakpoint e passamos para a simulao no modo animado. Repare que se pode colocar um breakpoint em qualquer lugar do nosso programa, onde pretendemos que o simular pare para podermos analisar registos e variveis.

Tempo de execuo.As vezes necessrio saber o tempo exacto que demora umas linhas de cdigo a correr, o simulador permite atravs da janela StopWatch determinar esse tempo de modo exacto, antes de utilizarmos a janela StopWatch necessrio definir a frequncia de clock do microcontrolador que servir de base de tempo para o simulador, o mesmo pode ser definido na janela Settings cujo o caminho Debugger -> Settings no item Osc/Trace.

Fig 35 - Definio da frequncia de clock, base de tempo do simulador MPLAB SIM.

Agora que j temos definido a base de tempo para o simulador, podemos verificar o tempo que demora a executar um determinado conjunto de linhas de cdigo. Como exemplo vamos verificar o tempo que demora a executar 25 ciclos de while no nosso programa. Abra a janela StopWatch, cujo o caminho Debugger -> StopWatch e reinicie o contador pressionando o boto Zero.

Bernardino Neves - 2011 Primeiros passos com o MPLAB IDE

Pgina 35

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Fig 36 Exemplo, determinao do tempo de execuo.

Este exemplo no permite determinar o tempo exacto, pois seria necessrio colocar dentro do while cdigo que verificasse o contedo da varivel i em cada ciclo, mas no entanto podemos obter uma boa aproximao do tempo de execuo. Para executar o nosso exemplo coloque um breakpoint como mostra a figura e simule no modo contnuo, quando o simulador parar no breakpoint, reinicie o simulador no modo animado e espere at que o contedo da varivel i seja igual a 25 decimal, nesse momento faa pausa no simulador e verifique o tempo que demorou a executar os 25 ciclos de while na janela StopWatch. A figura seguinte mostra o resultado do tempo obtido.

Fig 37 - Resultado do tempo de execuo do exemplo proposto.

Pgina 36

Bernardino Neves 2011 Primeiros passos com o MPLAB IDE

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

O simulador STIMULUS.Outra ferramenta que o MPLAB IDE nos disponibiliza para simulao o simulador STIMULUS, trata-se de um simulador que permite gerar estmulos em pinos do microcontrolador, isto , geramos um estmulo num pino do microcontrolador e verificamos o efeito no nosso programa, para testar esta funcionalidade precisamos de um novo exemplo, como exemplo vamos desenvolver um programa que leia o estado do pino 7 do porto B, se for zero incrementa uma varivel se for um incrementa outra varivel, a tabela seguinte mostra o cdigo do nosso segundo exemplo.#include

//Declarao de definies #define SaidaTRIS #define SaidaIO (TRISBbits.TRISB7) (PORTBbits.RB7)

//Declarao de variaveis int a=0; int b=0;

void main (void) { SaidaTRIS = 1;

while(1) { if ( SaidaIO == 0) { a++; } else { b++; } } }

Tabela 16 - Cdigo do segundo exemplo proposto.

Criamos um novo projecto com o nome de Exemplo2 seguindo os passos em cima descritos para o exemplo 1, colocamos o cdigo da tabela acima no editor de texto e compilamos o nosso segundo exemplo. Neste momento s falta configurar o simulador Stimulus, para o efeito aceda ao simulador pelo caminho Debugger -> Stimulus -> New Workbook, na janela Stimulus no separador Asynch seleccione na coluna Pin/SFR o pino RB7, como mostra a figura seguinte e seleccionamos o pino como um lgico Set High.

Bernardino Neves - 2011 Primeiros passos com o MPLAB IDE

Pgina 37

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Fig 38 - Janela de configurao do simulador Stimulus.

Salvamos o nosso ficheiro de simulao na pasta do projecto, e j podemos testar esta nova funcionalidade. Coloque um breakpoint na linha de cdigo SaidaTRIS = 1;, execute a simulao no modo contnuo, quando o simulador parar no breakpoint, nesta altura j possvel verificar que o pino 7 do porto B se encontra no estado lgico um, reinicie o simulador no modo animado e pode verificar que o programa executa as instrues indicadas para quando o estado lgico um, isto , incrementa o contedo da varivel b, abra a janela Watch e insira as variveis a e b para as poder monitorizar, para mudar o estado do pino RB7 coloque em pausa o simulador e seleccione o pino como zero lgico Set low, click no fire button que se localiza no lado esquerdo da caixa de texto que indica RB7 e grave o ficheiro, neste momento o pino RB7 esta ser estimulado com o zero lgico, volte a reiniciar a simulao animada e verifique que agora o programa executa as instrues indicadas para quando o estado lgico zero, as figuras seguintes mostram a localizao do fire button e o resultado da simulao.

Fig 39 Localizao do Fire Button.

Fig 40 Resultado da simulao Stimulus.

Esta simulao podia ser feita de um modo contnuo se a seleco do estado do pino na coluna action fosse Toggle, nesse caso basta pressionar o fire button que o estado do pino comutava de estado.

Pgina 38

Bernardino Neves 2011 Primeiros passos com o MPLAB IDE

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

O logic analyzer.Esta ferramenta de simulao permite analisar o estado dos pinos do microcontrolador em funo do tempo, para testar esta funcionalidade vamos voltar ao nosso primeiro programa, guarde o projecto do exemplo 2 e volte a abrir o projecto do exemplo 1. Volte a colocar um breakpoint na linha de cdigo SaidaTRIS = 0; e simule no modo contnuo, quando o simulador parar no breakpoint, seleccione o logic analyser atravs do caminho View -> Simulator Logic Analyser, aps pressionar o boto channel seleccione o canal RB7 como mostra a figura seguinte.

Fig 41 - Seleco do canal a analisar.

Pressione o boto OK, e neste momento j tem o analisador lgico configurado, reinicie o simulador no modo animado e verifique o estado do pino 7 do porto B em funo do tempo, a figura seguinte mostra o resultado.

Fig 42 - Resultado obtido pelo analisador lgico.

Bernardino Neves - 2011 Primeiros passos com o MPLAB IDE

Pgina 39

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Depurador/Gravador PICKIT 3.O PICKIT 3 um simples depurador e programador de microcontroladores da Microchip, tratase de uma ferramenta de baixo custo, baseado na programao serie em circuito (ICSP), isto , permite a gravao do microcontrolador inserido no seu prprio circuito. O depurador (Debugger) permite executar o cdigo como um dispositivo real, porque usa um dispositivo de emulao de circuito, todos os recursos disponveis de um determinado microcontrolador esto acessveis de forma interactiva e pode ser definida e modificada pela interface MPLAB IDE. O Depurador/Programador PICKIT 3 tem como caractersticas principais, a execuo de instrues em tempo real, permitir que o microcontrolador trabalhe frequncia mxima e fornecer alimentao ao circuito que se pretende programar ou testar. A figura seguinte mostra o Depurador/Programador PICKIT 3.

1 Boto de presso (para uso futuro). 2 Conector USB.1

3 Pino 1 do conector ICSP. 4 Conector ICSP. 5 Leds indicadores de estado.

Fig 43 - Depurador/Programador PICKIT 3.

Fig 44 - Descrio dos pinos do conector ICSP.

Pgina 40

Bernardino Neves 2011 Primeiros passos com o MPLAB IDE

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Microcontrolador VPP/MCLR VCC GND PGD PCG

Fig 45 Ligao entre PICKIT 3 e o microcontrolador.

Integrao do PICKIT 3 com o MPLAB IDE.A integrao do Depurador/Programador PICKIT 3 com o MPLAB IDE muito simples, ao conectar o PICKIT 3 ao PC por uma porta USB, o sistema operativo Windows reconhece logo o dispositivo porque utiliza drivers standard do Windows. No entanto no MPLAB IDE necessrio activar o PICKIT 3, dependendo da sua utilizao de programador ou depurador. Para activar o modo programador aceda ao caminho Programmer -> Select Programmer -> 4 PICkit 3 e active o programador, o modo depurador activado pelo caminho Debugger -> Select Tool -> 3 PICkit 3, para verificar a integrao do PICKIT 3 com o MPLAB IDE vamos abrir o projecto do exemplo 1, no menu File no item Open WorkSpace abra o ficheiro Exemplo1.mcw, antes de iniciar qualquer passo necessrio desactivar o simulador MPLAB SIM, o mesmo pode ser feito acedendo pelo caminho Debugger -> Select Tool -> None, agora j possvel activar o programador PICKIT 3, active o programador e verifique na janela OUTPUT que o MPLAB reconheceu o programador PICKIT 3, aparece uma mensagem de erro porque o PICKIT 3 no se encontra conectado a nenhum microcontrolador, a figura seguinte mostra a janela OUTPUT.

Fig 46 - Verificao da integrao do programador PICKIT 3 com o MPLAB IDE.

O mesmo procedimento deve ser feito para activar o modo depurador, repare que para activar o modo depurador necessrio desactivar o programador.

Bernardino Neves - 2011 Primeiros passos com o MPLAB IDE

Pgina 41

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Pgina 42

Bernardino Neves 2011 Primeiros passos com o MPLAB IDE

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Programao em C, para microcontroladores.Princpios de programao.Antes de iniciar o estudo da linguagem C, necessrio relembrar conceitos bsicos de programao de sistemas, tais como a lgebra booleana, algoritmos e princpios de programao de sistemas. A programao consiste na traduo do pensamento lgico necessrio para o cumprimento de uma determinada tarefa, isto , numa sequncia de comandos que podem ser interpretados e executados por uma mquina, neste caso um microcontrolador. A programao constitui-se num processo de identificao e soluo de problemas, para o efeito, o programador recorre a um conjunto de procedimentos genricos: Exposio do problema. Anlise da soluo. Codificao da soluo. Traduo do cdigo. Verificao e teste.

Fluxogramas.Os fluxogramas so ferramentas que nos ajudam a codificar um programa, so elementos grficos utilizados para estabelecer a sequncia de operaes necessrias para a execuo de uma tarefa. A tabela seguinte mostra os smbolos mais utilizados na construo de fluxogramas.

Inicio ou terminao

Processo

Dados

Tomada de deciso

Tabela 17 Smbolos de fluxograma.

Bernardino Neves - 2011 Programao em C para microcontroladores

Pgina 43

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Agora que j se conhecem os smbolos para construir um fluxograma, o passo seguinte construir um simples exemplo de aplicao com fluxogramas, o exemplo consiste em somar dois nmeros e verificar se o resultado positivo, se sim activa uma sada, caso contrario activa outra sada.

Inicio

Carrega A

Carrega B

Soma A + B

Resultado positivo ?

Activa sada 1

Activa sada 2

Fim

Fig 47 Fluxograma do exemplo proposto.

lgebra de booleana.A lgebra booleana um ramo da matemtica, que tem como funo a resoluo de problemas lgicos, baseado em regras e conceitos lgicos simples, proposies e operadores lgicos relacionais. Uma proposio uma afirmao que pode ser classificada como sendo verdadeira ou falsa, duas ou mais proposies podem ser relacionadas com o uso de operadores lgicos E, OU e NO. A tabela seguinte mostra a tabela de verdade para os diferentes operadores lgicos: A 0 0 1 1 B 0 1 0 1 E 0 0 0 1 A 0 0 1 1 B 0 1 0 1 OU 0 1 1 1

A 0 1

NO 1 0

Tabela 18- Operadores lgicos.

Pgina 44

Bernardino Neves 2011 Programao em C para microcontroladores

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Variveis e dados.Uma varivel uma representao simblica para elementos pertencentes a um conjunto, as variveis so armazenadas na memria do microcontrolador e pode assumir qualquer valor dentro dos valores possveis, repare que os valores possveis esto definidos nas especificaes do compilador. As variveis so classificadas segundo o tipo de contedo que armazena, podendo ser numricas, caracteres, alfanumricas e lgicas.

Operadores.Os operadores so elementos, para relacionar ou modificar dados ou variveis, podemos classificar os operadores em cinco categorias: Matemticos. Relacionais. Lgicos. Lgicos bit a bit. Memoria.

Introduo a linguagem C.Palavras reservadas.A linguagem C possui um conjunto de palavras reservadas ou comandos para os quais j existe interpretao prvia pelo compilador, estas palavras no podem ser usadas, a tabela seguinte mostra as palavras reservadas. Auto Continue Enum If Short Switch Volatile Break Default Extern Int Signed Typedef While Case Do Float Long Sizeof Union Char Double For Register Static Unsigned Const Else Goto Return Struck Void

Tabela 19 Palavras reservadas em programao em C.

Identificadores.Um identificador o nome dado s variveis, funes e outros elementos da linguagem C, pode ser composto por caracteres e letras, o nico carcter permitido na construo de identificadores o sublinhado _, alem disso um identificador s pode ser iniciado por uma letra ou sublinhado, iniciar com um nmero torna invalido o identificador.

Bernardino Neves - 2011 Programao em C para microcontroladores

Pgina 45

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Variveis e tipos de dados.Declarao de variveis.Na linguagem C, necessrio declarar as variveis antes de as utilizar, declarar uma varivel informar o compilador, que a varivel chamada X do tipo Y, na declarao de variveis importante saber o local onde estamos a declarar a varivel, pois a varivel relaciona-se directamente acessibilidade ou no de outras partes do programa a essa varivel. As variveis podem ser declaradas, em trs pontos distintos do programa: No corpo principal do programa, as variveis so declaradas como globais, isto , tem se acesso ao seu contedo em qualquer parte do programa. No corpo de uma funo, as variveis declaradas no corpo de uma funo apenas so validas dentro da mesma, tem o nome de varivel local. As variveis podem ainda ser declaradas como um parmetro formal de uma funo, trata-se de uma varivel local especial. Ainda existe outra forma de declarar variveis, as variveis externas, so utilizadas para declarar variveis que possam ser acedidas em todo o projecto, quando o mesmo constitudo por vrios ficheiros.

Exemplo:unsigned char aux = 0x41; unsigned int aux1 = 0x1234; unsigned int aux2; aux2 = 0x4321; O cdigo acima descrito, declara trs variveis, uma do tipo char e duas do tipo inteiro, reparese que as variveis podem ou no ser inicializadas.

Declarao de constantes.As constantes so valores fixos e que no podem ser alterados pelo programa, normalmente usado para definir valores fixos. Exemplo: #define FREQ_CRISTAL unsigned long Clock; Clock = FREQ_CRISTAL / 4; O cdigo acima descrito, define uma constante cujo valor 20000000, que corresponde a frequncia do oscilador, esta constante pode ser utilizado para calcular a frequncia de instrues do C. (20000000) //20Mhz

Pgina 46

Bernardino Neves 2011 Programao em C para microcontroladores

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Operadores.Aritmticos.Os operadores aritmticos so utilizados para efectuarem determinadas operaes matemticas em relao a um ou mais dados, as linhas seguintes mostram alguns dos operadores disponveis na linguagem C para operaes aritmticas. a = 7; b = 2; Operador de adio. c = a + b; Operador de subtraco. c = a b; Operador de multiplicao. c = a * b; Operador de diviso. c = a / b; Na diviso existe o operador resto %, que utilizado para retornar o resto de uma operao de diviso inteira. c = a / b; c = a % b; c = 7 / 2 = 3 (Resultado para uma diviso inteira). c = 7 % 2 = 1 (Resto da diviso inteira).

Operador incremento e decremento. a++; (Incrementa o contedo da varivel a uma unidade). a -- ; (Decrementa o contedo da varivel a uma unidade). b = a++; b = ++ a; (O valor de a armazenado em b, e de seguida o valor de a incrementado). (O valor de a incrementado, e de seguida o valor de a armazenado em b).

Relacionais.Os operadores relacionais so usados para testes condicionais, para determinar a relao existente entre dados, as linhas seguintes mostram os operadores relacionais e a sua aco. Operador > >= < Aco Maior que Maior ou igual Menor que Operador 5 && x < 20) { y= x; } Dentro dos operadores lgicos, ainda existem os operadores lgicos bit a bit, que so utilizados para realizar operaes entre elementos ou variveis, o resultado de uma operao lgico bit a bit, pode resultar em um valor do mesmo tamanho dos elementos operados. Operador & | ^ ~ >> x1 = 100; x2 = x1 > 4; Varivel x2 x3 Decimal 100 100 Binrio 01100100 01100100 Deslocamento > 4 Resultado 01000000 00000110

Bernardino Neves - 2011 Programao em C para microcontroladores

Pgina 49

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Memoria.Os operadores de memria, chamados de operadores de ponteiros, permitem o acesso directo a qualquer endereo de memria do sistema, existem dois tipos de operadores, que so tambm complementares. O operador &, que retorna o endereo de memoria do seu operando. O operador *, que retorna o contedo da posio de memoria endereada, pelo operando que o segue. Exemplo: unsigned int *endereo, x, y; x = 5; endereco = &x; y = *endereco; Neste exemplo podemos verificar, que o endereo da varivel x foi copiado para a varivel endereo, que por sua vez na linha de cdigo seguinte, copiou o seu contedo para a varivel y, o resultado y = 5.

Associao de operadores.A linguagem C, permite a associao de operadores, permitindo assim reduzir cdigo, as linhas seguintes mostram a forma expandida e a reduzida. Em termos de operaes de atribuio temos, no caso da forma expandida: varivel = varivel (operando) valor (ou varivel) A forma reduzida reduz o comando a seguinte forma: varivel (operando) = valor (ou varivel) Forma expandida x=x+y x=x-y x=x*y x=x/y x=x%y x=x&y x=x|y x = x ^y x = x > y Forma reduzida x += y x -= y x *= y x /= y x %= y x &= y x |= y x ^= y x = y

Pgina 50

Bernardino Neves 2011 Programao em C para microcontroladores

CET Automao, Robtica e Controlo Industrial Sistemas de MicroControladores - 2011

Declaraes de controlo.As declaraes de controlo, so ferramentas importantes nas linguagens de programao, pois permitem testar condies e executar um cdigo em funo do resultado do teste da condio, tambm permite a repetio de comandos enquanto uma condio se verificar verdadeira.

Comando IF.O comando IF, utilizado para executar um comando ou um bloco de comandos se uma determinada condio for verdadeira. Normalmente acompanhada pelo comando ELSE, que tem a funo de executar outro comando ou bloco de comandos caso a condio no seja verdadeira. A forma geral : IF (condio) { Comando1; Comando2; Comando3; } ELSE { Comando3; Comando4; Comando5; } Exemplo: int x = 5; if ( x == 5) { Led0 = 1; } else { Led0 = 0; } O comando IF, no necessita de operador relacional ou lgico, porque apenas testa se a condio verdadeira ou falsa, em ter