Post on 01-Feb-2021
Aplicações Práticas de Eletrônica e Microcontroladores em Sistemas
Computacionais
Aprenda de forma simples a gravação wireless e via USB de microcontroladores
[ 3 ]
Sumário INTRODUÇÃO ................................................................................................................................................................. 7
ASSEMBLY X LINGUAGEM C ............................................................................................................................................................. 7 VANTAGENS X DESVANTAGENS DA LINGUAGEM C PARA MICROCONTROLADORES.......................................... 9 ARQUITETURAS DOS MICROCONTROLADORES ..................................................................................................................... 9 O CONTADOR DE PROGRAMA (PC) ............................................................................................................................................ 10 BARRAMENTOS ................................................................................................................................................................................... 10 A PILHA (STACK) ................................................................................................................................................................................ 11 CICLO DE MÁQUINA .......................................................................................................................................................................... 11 MATRIZ DE CONTATOS OU PROTOBOARD ............................................................................................................................ 12 RESISTORES .......................................................................................................................................................................................... 13 CAPACITORES....................................................................................................................................................................................... 14 FONTES DE ALIMENTAÇÃO .......................................................................................................................................................... 16 RUÍDO (BOUNCING) E FILTRO (DEBOUNCING) .................................................................................................................. 16 PROTOCOLO DECOMUNICAÇÃO USB ........................................................................................................................................ 17 MÉTODOS DE COMUNICAÇÃO USB ............................................................................................................................................ 17
UTILIZANDO O COMPILADOR C18 E A IDE MPLABX MULTIPLATAFORMA COM FUNÇÕES EM PORTUGUÊS .................................................................................................................................................................. 19
FUNÇÕES EM PORTUGUÊS ............................................................................................................................................................ 22 FUNÇÕES BÁSICAS DA APLICAÇÃO DO USUÁRIO ............................................................................................................... 22 FUNÇÕES DO CONVERSOR ANALÓGICO DIGITAL (A/D) ................................................................................................. 29 FUNÇÕES DA COMUNICAÇÃO SERIAL RS-232 ...................................................................................................................... 30
FERRAMENTA DE GRAVAÇÃO VIA USB................................................................................................................ 33 GRAVAÇÃO DE MICROCONTROLADORES ............................................................................................................................... 34
PRÁTICA 1 – PISCA LED ................................................................................................................................................... 39 PRÁTICA 2 – PISCA 3 LEDS ............................................................................................................................................. 41
GRAVANDO O MICROCONTROLADOR VIA USB NO WINDOWS .................................................................................... 47 GRAVAÇÃO WIRELESS DE MICROCONTROLADORES ....................................................................................................... 49 SISTEMA DUAL CLOCK ..................................................................................................................................................................... 61 COMUNICAÇÃO SERIAL VIA BLUETOOTH OU ZIGBEE ..................................................................................................... 62 GRAVANDO O MICROCONTROLADOR VIA USB NO LINUX .............................................................................................. 64 GRAVANDO O PIC VIA USB PELO TERMINAL DO LINUX OU MAC OSX ..................................................................... 66 SISTEMA DUAL CLOCK ..................................................................................................................................................................... 67 EMULAÇÃO DE COMUNICAÇÃO SERIAL NO LINUX ............................................................................................................ 68 CIRCUITO PARA GRAVAÇÃO DO gerenciador.hex ............................................................................................................... 69 RGB – CONTROLE DE CORES VIA BLUETOOTH ................................................................................................................... 72 Ligando RGB na Placa SanUSB .................................................................................................................................................... 73 LED RGB Catodo Comum ................................................................................................................................................................ 74
MODEM WIFLY E O PROTOCOLO DE COMUNICAÇÃO WIFI........................................................................... 77
PERIFÉRICOS INTERNOS DO MICROCONTROLADOR ..................................................................................... 81 CONVERSOR A/D ................................................................................................................................................................................ 83 AJUSTE DE RESOLUÇÃO DO SENSOR E DO CONVERSOR AD DE 8 BITS ................................................................... 84 AJUSTE DA TENSÃO DE FUNDO DE ESCALA COM AMPOP ............................................................................................. 85 AJUSTE DA TENSÃO DE REFERÊNCIA COM POTENCIÔMETRO ................................................................................... 85 CONVERSOR AD DE 10 BITS .......................................................................................................................................................... 85 OBTENÇÃO DE UM VOLTÍMETRO ATRAVÉS DO CONVERSOR AD COM A VARIAÇÃO DE UM POTENCIÔMETRO .............................................................................................................................................................................. 86 LEITURA DE TEMPERATURA COM O LM35 ATRAVÉS DO CONVERSOR AD ........................................................... 87
[ 4 ]
TERMISTOR ........................................................................................................................................................................................... 89 MEMÓRIAS DO MICROCONTROLADOR .................................................................................................................................... 90 MEMÓRIA DE PROGRAMA .............................................................................................................................................................. 90 MEMÓRIA DE INSTRUÇÕES ........................................................................................................................................................... 90 MEMÓRIA EEPROM INTERNA ...................................................................................................................................................... 90 MEMÓRIA DE DADOS (RAM) e REGISTROS DE FUNÇÔES ESPECIAIS ....................................................................... 91 EXEMPLO DE APLICAÇÃO .............................................................................................................................................................. 92 CONTROLE DE ACESSO COM TECLADO MATRICIAL ......................................................................................................... 92 MODULAÇÃO POR LARGURA DE PULSO PELO CCP ............................................................................................................ 95 CONTROLE PWM POR SOFTWARE DE VELOCIDADE DE UM MOTOR CC ................................................................ 96
INTERRUPÇÕES E TEMPORIZADORES ................................................................................................................. 98 INTERRUPÇÕES ................................................................................................................................................................................... 98 INTERRUPÇÕES EXTERNAS .......................................................................................................................................................... 99 INTERRUPÇÃO DOS TEMPORIZADORES ............................................................................................................................... 104 MULTIPLEXAÇÃO DE DISPLAYS POR INTERRUPÇÃO DE TEMPORIZADORES ................................................... 106
EMULAÇÃO DE PORTAS LÓGICAS ....................................................................................................................... 108 INSTRUÇÕES LÓGICAS PARA TESTES CONDICIONAIS DE NÚMEROS ..................................................................... 108 INSTRUÇÕES LÓGICAS BOOLANAS BIT A BIT ..................................................................................................................... 108 EMULAÇÃO DE DECODIFICADOR PARA DISPLAY DE 7 SEGMENTOS ..................................................................... 113 MULTIPLEXAÇÃO COM DISPLAYS DE 7 SEGMENTOS ..................................................................................................... 118
COMUNICAÇÃO SERIAL EIA/RS-232 .................................................................................................................. 122 CÓDIGO ASCII ..................................................................................................................................................................................... 123 INTERFACE USART DO MICROCONTROLADOR ................................................................................................................. 124 CÁLCULO DE TAXA DE TRANSMISSÃO SERIAL .................................................................................................................. 126 COMUNICAÇÃO SERIAL EIA/RS-485 ....................................................................................................................................... 128 APLICAÇÕES DE COMUNICAÇÃO SERIAL VIA BLUETOOTH OU ZIGBEE ................................................................ 128 COMUNICAÇÃO SERIAL SEM INTERRUPÇÃO ...................................................................................................................... 128
ACIONAMENTO DE MOTORES MICROCONTROLADOS ................................................................................ 129 ACIONAMENTO DE MOTORES CC DE BAIXA TENSÃO .................................................................................................... 129 MOTORES ELÉTRICOS UTILIZADOS EM AUTOMÓVEIS ................................................................................................. 130 COROA E O PARAFUSO COM ROSCA SEM-FIM .................................................................................................................... 131 CHAVEAMENTO DE MOTORES CC COM TRANSISTORES MOSFET ........................................................................... 132 EXEMPLO: SEGUIDOR ÓTICO DE LABIRINTO ..................................................................................................................... 134 ESTABILIDADE DO CONTROLE DE MOVIMENTO ............................................................................................................. 134 PONTE H ............................................................................................................................................................................................... 136 DRIVER PONTE H L293D .............................................................................................................................................................. 137 SOLENÓIDES E RELÉS .................................................................................................................................................................... 138 DRIVER DE POTÊNCIA ULN2803 .............................................................................................................................................. 140 PONTE H COM MICRORELÉS ...................................................................................................................................................... 142 ACIONAMENTO DE MOTORES DE PASSO ............................................................................................................................. 143 MOTORES DE PASSO UNIPOLARES .......................................................................................................................................... 143 MODOS DE OPERAÇÃO DE UM MOTOR DE PASSO UNIPOLAR ................................................................................... 145 ACIONAMENTO BIDIRECIONAL DE DOIS MOTORES DE PASSO ................................................................................ 146 SERVO-MOTORES ............................................................................................................................................................................. 149
FOTOACOPLADORES E SENSORES INFRAVERMELHOS ............................................................................... 154 TRANSMISSOR E RECEPTOR IR ................................................................................................................................................ 155 AUTOMAÇÃO E DOMÓTICA COM CONTROLE REMOTO UNIVERSAL ....................................................................... 158 CODIFICAÇÃO DE RECEPTOR INFRAVERMELHO UTILIZANDO A NORMA RC5 ................................................. 160
LCD (DISPLAY DE CRISTAL LÍQUIDO) ............................................................................................................... 163 EXEMPLO: CONTROLE DE TENSÃO DE UMA SOLDA CAPACITIVA COM LCD ...................................................... 168
[ 5 ]
LDR ................................................................................................................................................................................ 170 EXEMPLO: MODELAGEM DE UM LUXÍMETRO MICROCONTROLADO COM LDR ................................................ 171 SUPERVISÓRIO................................................................................................................................................................................... 174
INTERFACE I2C .......................................................................................................................................................... 178 REGRAS PARA TRANSFERÊNCIA DE DADOS ....................................................................................................................... 179 MEMÓRIA EEPROM EXTERNA I2C ............................................................................................................................................ 182
RTC (RELÓGIO EM TEMPO REAL) ....................................................................................................................... 185 PROTÓTIPO DE SISTEMA BÁSICO DE AQUISIÇÃO DE DADOS .................................................................................... 189
TRANSMISSÃO DE DADOS VIA GSM ................................................................................................................... 193 COMANDOS AT PARA ENVIAR MENSAGENS SMS DE UM COMPUTADOR PARA UM CELULAR OU MODEM GSM ......................................................................................................................................................................................................... 194 COMANDOS AT PARA RECEBER MENSAGENS SMS EM UM COMPUTADOR ENVIADAS POR UM CELULAR OU MODEM GSM ............................................................................................................................................................................... 195
O PROTOCOLO MODBUS EMBARCADO ............................................................................................................. 198 MODELO DE COMUNICAÇÃO ...................................................................................................................................................... 198 DETECÇÃO DE ERROS .................................................................................................................................................................... 199 MODOS DE TRANSMISSÃO ........................................................................................................................................................... 199
MULTITASKING E SISTEMAS OPERACIONAIS EM TEMPO REAL (RTOS) ................................................ 204 MÁQUINAS DE ESTADO ................................................................................................................................................................. 205
APÊNDICE I: CABEÇALHOS DA FERRAMENTA PARA DIVERSOS COMPILADORES ............................. 207 CCS C Compiler ................................................................................................................................................................................... 207 C18 compiler ....................................................................................................................................................................................... 208 SDCC ........................................................................................................................................................................................................ 209 MikroC .................................................................................................................................................................................................... 210 Hi-Tech C Compiler .......................................................................................................................................................................... 210 Microchip ASM compiler ............................................................................................................................................................... 211
........................................................................................................................................................................................ 212
........................................................................................................................................................................................ 213 Analogia de um Amplificador Operacional .......................................................................................................................... 214
........................................................................................................................................................................................ 214 Amplificador operacional real ................................................................................................................................................... 214 Modos de Operação do Amplificador Operacional ........................................................................................................... 215
........................................................................................................................................................................................ 216
........................................................................................................................................................................................ 216 Amplificador Somador Inversor ................................................................................................................................................ 218 Amplificador de Diferença (Subtrador) ................................................................................................................................. 218 Amplificador de Instrumentação .............................................................................................................................................. 219
7
7 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
INTRODUÇÃO
Um microcontrolador é um sistema computacional completo, no qual estão incluídos
internamente uma CPU (Central Processor Unit), memórias RAM (dados), flash
(programa) e E2PROM, pinos de I/O (Input/Output), além de outros periféricos
internos, tais como, osciladores, canal USB, interface serial assíncrona USART,
módulos de temporização e conversores A/D, entre outros, integrados em um
mesmo componente (chip).
O microcontrolador PIC® (Periferal Interface Controler), da Microchip Technology Inc.
(empresa de grande porte, em Arizona, nos Estados Unidos da América), possui uma boa
diversidade de recursos, capacidades de processamento, custo e flexibilidade de
aplicações.
ASSEMBLY X LINGUAGEM C
A principal diferença entre uma linguagem montada (como assembly) e a linguagem de
programação C está na forma como o programa objeto (HEX) é gerado. Em assembly, o
processo usado é a montagem, portanto devemos utilizar um MONTADOR (assembler),
enquanto que em linguagem C o programa é compilado. A compilação é um processo mais
complexo do que a montagem. Na montagem, uma linha de instrução é traduzida para
uma instrução em código de máquina. Já em uma linguagem de programação, não existem
linhas de instrução, e sim estruturas de linguagem e expressões. Uma estrutura pode ser
condicional, incondicional, de repetição, etc...
As expressões podem envolver operandos e operadores mais complexos. Neste caso,
geralmente, a locação dos registros de dados da RAM é feita pelo próprio compilador. Por
isso, existe a preocupação, por paret do compilador, de demonstrar, após a compilação, o
percentual de memória RAM ocupado, pois neste caso é relevante, tendo em vista que
cada variável pode ocupar até 8 bytes (tipo double).
Para edição e montagem (geração do código HEX) de um programa em assembly, os
softwares mais utilizados são o MPASMWIN (mais simples) e o MPLABX. Para edição e
compilação em linguagem C (geração do código HEX), o programa mais utilizado é o PIC
C Compiler CCS®.
Os microcontroladores PIC possuem apenas 35 instruções em assembly para a família
de 12 bits (PIC12) e 14 bits (PIC16), descritas nas tabelas abaixo, e 77 instruções para a
família de 16 bits (PIC18). A tabela abaixo mostra algumas instruções em assembly.
8
8 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Figura 1. 1: Instruções em assembly.
Como pode ser visto, a família PIC16F (14 bits com aproximadamente 35
instruções) não possui uma instrução em assembly que realize multiplicação ou divisão de
dois operandos, o que curiosamente é presente na linguagem assembly da família MCS51
(256 instruções que satisfazem a maioria das aplicações industriais). Portanto, para
realizar uma multiplicação, é necessário realizar somas sucessivas, ou seja, em vez de
multiplicar uma variável por outra, realizar somas de uma variável em uma terceira área de
memória, tantas vezes quando for o valor da segunda variável. (X * 5 = X + X + X + X + X).
Mas em linguagem C é possível se utilizar o operador de multiplicação (*), de
forma simples e prática. Ao compilar, a linguagem gerada irá converter a multiplicação
em somas sucessivas sem que o programador se preocupe com isso.
9
9 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
VANTAGENS X DESVANTAGENS DA LINGUAGEM C PARA
MICROCONTROLADORES
- O compilador C irá realizar o processo de tradução, permitindo uma programação mais
amigável e mais fácil para desenvolvimento de aplicações mais complexas como, por
exemplo, uso do canal USB e aplicações com o protocolo I2C.
- A linguagem C permite maior portabilidade, uma vez que um mesmo programa pode ser
recompilado para um microcontrolador diferente, com o mínimo de alterações, ao contrário
do ASSEMBLY, onde as instruções mudam muito entre os diversos modelos de
microcontroladores existentes como PIC e 8051.
- Em C para microcontroladores PIC, não é necessário se preocupar com a mudança de
banco para acessar os registros especiais da RAM como, por exemplo, as portas de I/O e
os registros TRIS de comando de I/O dos pinos, isto é executado pelo próprio compilador
através das bibliotecas.
- É possível incluir, de forma simples e padronizada, outro arquivo em C (biblioteca) para
servir como parte do seu programa atual como, por exemplo, incluir o arquivo LCD
(#include ), desenvolvido para lidar com escrita no display LCD.
- O ponto fraco da compilação em C é que o código gerado, muitas vezes, é maior do que
um código gerado por um montador (assembler), ocupando uma memória maior de
programa e também uma memória maior de dados. No entanto, para a maioria das
aplicações sugeridas na área de automação industrial, a linguagem C para PIC se mostra
a mais adequada, tendo em vista que a memória de programa tem espaço suficiente para
estas aplicações.
- Outra desvantagem é que o programador não é “forçado” a conhecer as características
internas do hardware, já que o mesmo se acostuma a trabalhar em alto nivel, o que
compromete a eficiência do programa e também o uso da capacidade de todos os
periféricos internos do microcontrolador. Isso provoca, em alguns casos, o aumento do
custo do sistema embarcado projetado com a aquisição de novos periféricos externos.
ARQUITETURAS DOS MICROCONTROLADORES
A arquitetura de um sistema digital define quem são e como as partes que compõe o
sistema estão interligadas. As duas arquiteturas mais comuns para sistemas
computacionais digitais são as seguintes:
- Arquitetura de Von Neuman: A Unidade Central de Processamento é interligada à
memória por um único barramento (bus). O sistema é composto por uma única memória
onde são armazenados dados e instruções;
10
10 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
- Arquitetura de Harvard: A Unidade Central de Processamento é interligada a memória
de dados e a memória de programa por barramentos diferentes, de dados e de endereço.
O PIC possui arquitetura Harvard com tecnologia RISC, que significa Reduced Instruction
Set Computer (Computador com Conjunto de Instruções Reduzido). O barramento de
dados é de 8 bits e o de endereço pode variar de 13 a 21 bits dependendo do modelo.
Este tipo de arquitetura permite que, enquanto uma instrução é executada, uma outra seja
“buscada” na memória, ou seja, um PIPELINE (sobreposição), o que torna o
processamento mais rápido.
O CONTADOR DE PROGRAMA (PC)
O contador de programa é responsável de indicar o endereço da memória de
programa para que seu conteúdo seja transportado para a CPU para ser executado. Na
família PIC16F ele contém normalmente 13 bits, por isso, pode endereçar os 8K words de
14 bits (o PIC16F877A possui exatamente 8K words de 14 bits, ou seja, 14 Kbytes de
memória de programa). A família 18F ele possui normalmente 21 bits e é capaz e
endereçar até 2 Megas words de 16 bits (o PIC18F2550 possui 16K words de 16 bits, ou
seja, 32 Kbytes de memória de programa). Cada Word de 14 ou 16 bits pode conter um
código de operação (opcode) com a instrução e um byte de dado.
BARRAMENTOS
Um barramento é um conjunto de fios que transportam informações com um propósito
comum. A CPU pode acessar três barramentos: o de endereço, o de dados e o de
controle. Como foi visto, cada instrução possui duas fases distintas: o ciclo de busca,
quando a CPU coloca o conteúdo do PC no barramento de endereço e o conteúdo da
posição de memória é colocado no Registro de instrução da CPU, e o ciclo de execução,
quando a CPU executa o conteúdo colocado no registro de instrução e coloca-o na
memória de dados pelo barramento de dados. Isso significa que quando a operação do
microcontrolador é iniciada ou resetada, o PC é carregado com o endereço 0000h da
memória de programa.
11
11 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Figura 1. 2: Memórias.
As instruções de um programa são gravadas em linguagem de máquina
hexadecimal na memória de programa flash (ROM). No início da operação do
microcontrolador, o contador de programa (PC) indica o endereço da primeira instrução da
memória de programa, esta instrução é carregada, através do barramento de dados, no
Registro de Instrução da CPU.
Um opcode (código de instrução), gerado na compilação em hexadecimal, contém
uma instrução e um operando. No processamento, a CPU compara o código da instrução
alocada no registro de instrução com o Set de Instruções do modelo fabricado e executa a
função correspondente. Após o processamento, o operando dessa instrução indica para a
CPU qual a posição da memória de dados que deve ser acessada e, através do
barramento de controle, a CPU comanda a leitura ou a escrita nesta posição.
Após o processamento de uma instrução, o PC é incrementado para indicar o
endereço do próximo código de instrução (opcode), da memória de programa, que deve
ser carregado no registro de instrução.
A PILHA (STACK)
A pilha é um local da RAM ( no PIC18F2550 é localizada no final dos Registros de
Função Especial entre FFDh e FFFh) onde é guardado o endereço da memória de
programa antes de ser executado um pulo ou uma chamada de função localizada em outra
posição de memória.
CICLO DE MÁQUINA
O oscilador externo (geralmente um cristal) ou o interno (circuito RC) é usado para
fornecer um sinal de clock ao microcontrolador. O clock é necessário para que o
microcontrolador possa executar as instruções de um programa.
Nos microcontroladores PIC, um ciclo de máquina (CM) possui quatro fases de clock que
são Q1, Q2, Q3 e Q4. Dessa forma, para um clock externo de 4MHz, temos um ciclo de
máquina (CM=4 x 1/F) igual a 1μs.
12
12 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Figura 1. 3: Ciclo de máquina.
O Contador de Programa (PC) é incrementado automaticamente na fase Q1 do ciclo
de máquina e a instrução seguinte é resgatada da memória de programa e armazenada no
registro de instruções da CPU no ciclo Q4. Ela é decoficada e executada no próximo ciclo,
no intervalo de Q1 e Q4. Essa característica de buscar a informação em um ciclo de
máquina e executá-la no próximo, ao mesmo tempo em que outra instrução é “buscada”, é
chamada de PIPELINE (sobreposição). Ela permite que quase todas as instruções sejam
executadas em apenas um ciclo de máquina, gastando assim 1 μs (para um clock de 4
MHz) e tornando o sistema muito mais rápido. As únicas exeções referem-se às instruções
que geram “saltos” no contador de programa, como chamadas de funções em outro local
da memória de programa e os retornos dessas funções.
MATRIZ DE CONTATOS OU PROTOBOARD
Para desenvolver os projetos e exercícos propostos nessa apostila será necessário a
uilização de uma Matriz de Contatos (ou Protoboard em inglês), mostrada na figura abaixo,
que é uma placa com diversos furos e conexões condutoras para montagem de circuitos
eletrônicos. A grande vantagem do Protoboard na montagem de circuitos eletrônicos é a
facilidade de inserção de componentes (não necessita soldagem).
Figura 1. 4: Protoboard.
13
13 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Na superfície de uma matriz de contatos há uma base de plástico em que existem
centenas de orifícios onde são encaixados os componentes ou também por ligações
mediante fios. Em sua parte inferior são instalados contatos metálicos que interliga
eletricamente os componentes inseridos na placa que são organizados em colunas e
canais. De cada lado da placa, ao longo de seu comprimento, há duas colunas completas.
Há um espaço livre no meio da placa e de cada lado desse espaço há vários grupos de
canais horizontais (pequenas fileiras), cada um com 05 orifícios de acordo como é ilustrado
na figura abaixo.
Figura 1. 5: Contatos internos de uma protoboard.
Em alguns pontos do circuito é necessário limitar a intensidade da corrente elétrica.
Para fazer isso utilizamos um componente chamado resistor. Quanto maior a resistência,
menor é a corrente elétrica que passa num condutor.
RESISTORES
Os resistores geralmente são feitos de carbono. Para identificar qual a resistência
de um resistor específico, comparamos ele com a seguinte tabela:
14
14 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Figura 1. 6: Código de cores de resistores.
CAPACITORES
Capacitor ou condensador é um componente que armazena energia num campo
elétrico. consistem em dois eletrodos ou placas que armazenam cargas opostas. Estas
duas placas são condutoras e são separadas por um isolante ou por um dielétrico. Eles
são utilizados desde armazenar bits nas memórias voláteis dinâmicas (DRAM) dos
computadores, até corrigir o fator de potência de indústrias fornecendo reatância capacitiva
para compensar a reatância indutiva provocada por bobinas e motores elétricos de grande
porte.
A função mais comum é filtrar ruídos em circuitor elétricos e estabilizar as fontes,
absorvendo os picos e preenchendo os vales de tensão. Os capacitores descarregados
são um curto e carregados abrem o circuito, por isso são utilizados também para isolar
fontes CC.
15
15 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Figura 1. 7: Forma de onda de capacitor.
Os capacitores podem ser carregados e descarregados muito rapidamente, por isso
são utilzados também no flash eletrônico em uma câmera fotográfica, onde pilhas
carregam o capacitor do flash durante vários segundos, e então o capacitor descarrega
toda a carga no bulbo do flash quase que instantaneamente gerando o alto brilho. Isto
pode tornar um capacitor grande e carregado extremamente perigoso. Eles são utilizados
também em paralelo com motores elétricos para fornecer energia para que as bobinas
energizadas possam vencer a inércia quando os motores são ligados.
As Unidades de Medida de capacitância são Farad (F), Microfarad (μF), Nanofarad
(nF) e Picofarad (pF). Os capacitores mais comuns são os eletrolíticos, lstrados na figura
abaixo, os cerâmicos e os de poliéster.
Figura 1. 8: Exemplos de Capacitores.
A figura abaixo mostra a identificação de capacitores cerâmicos.
Figura 1. 9: Cálculo demonstrativo de capacitância.
A figura abaixo mostra a identificação de capacitores de poliéster.
16
16 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Figura 1. 10: Código de cores Capacitores Poliéster.
FONTES DE ALIMENTAÇÃO
As fontes mais comuns em sistemas embarcados com microcontroladores são
baterias recarregáveis ou conversores CA-CC como carregadores de celulares.
As baterias ou pilhas são dispositivos que armazenam energia química e a torna disponivel
na forma de energia elétrica.
A capacidade de armazenamento de energia de uma bateria é medida através da
multiplicação da corrente de descarga pelo tempo de autonomia, sendo dado em ampére-
hora (1 Ah= 3600 Coulombs). Deve-se observar que, ao contrário das baterias primárias
(não recarregáveis), as baterias recarregáveis não podem ser descarregadas até 0V pois
isto leva ao final prematuro da vida da bateria. Na verdade elas têm um limite até onde
podem ser descarregadas, chamado de tensão de corte. Descarregar a bateria abaixo
deste limite reduz a vida útil da bateria.
As baterias ditas 12V, por exemplo, devem operar de 13,8V (tensão a plena carga),
até 10,5V (tensão de corte), quando 100% de sua capacidade terá sido utilizada, e é este o
tempo que deve ser medido como autonomia da bateria.
Como o comportamento das baterias não é linear, isto é, quando maior a corrente de
descarga menor será a autonomia e a capacidade, não é correto falar em uma bateria de
100Ah. Deve-se falar, por exemplo, em uma bateria 100Ah padrão de descarga 20 horas,
com tensão de corte 10,5V. Esta bateria permitirá descarga de 100 / 20 = 5A durante 20
horas, quando a bateria irá atingir 10,5V.
Outro fator importante é a temperatura de operação da bateria, pois sua capacidade
e vida útil dependem dela. Usualmente as informações são fornecidas supondo T=25°C ou
T=20°C, que é a temperatura ideal para maximizar a vida útil.
RUÍDO (BOUNCING) E FILTRO (DEBOUNCING) Em operações de Liga/Desliga e mudança de nivel lógico, surge um ruído
(Bouncing) na transição que, caso uma interrupção esteja habilitada ou até mesmo um
17
17 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
contador de evento, pode provocar várias interrupções ou contagens. As formas mais
comuns de filtro (Debouncing) são via software, programando um tempo (em torno de
100ms, dependendo da chave) após as transições, de modo a eliminar o ruído antes de
efetuar uma instrução, ou via hardware, utilizando um capacitor de filtro em paralelo com a
chave.
Figura 1. 11: Ruído.
PROTOCOLO DECOMUNICAÇÃO USB
A USB, sigla para Universal Serial Bus, é o padrão de interface para periféricos
externos ao computador provavelmente mais popular dos já criados. Um sistema USB é
composto por hardware mestre e escravo. O mestre é chamado de host e o escravo
denomina-se dispositivo ou simplesmente periférico. Todas as transferências USB são
administradas e iniciadas pelo host. Mesmo que um dispositivo queira enviar dados, é
necessário que o host envie comandos específicos para recebê-los.
A fase de preparação, conhecida como enumeração, acontece logo depois de quando
o dispositivo USB é fisicamente conectado ao computador. Nesse momento, o sistema
operacional realiza vários pedidos ao dispositivo para que as características de
funcionamento sejam reconhecidas. O sistema operacional, com a obtida noção do
periférico USB, atribui-lhe um endereço e seleciona a configuração mais apropriada de
acordo com certos critérios. Com mensagens de confirmação do dispositivo indicando que
essas duas últimas operações foram corretamente aceitas, a enumeração é finalizada e o
sistema fica pronto para o uso.
MÉTODOS DE COMUNICAÇÃO USB
Os métodos mais comuns de comunicação USB, também utilizados pela ferramenta
SanUSB, são:
Human Interface Device (HID) - O dispositivo USB é reconhecido automaticamente
pelo sistema operacional Windows@ ou linux como um Dispositivo de Interface Humana
(HID), não sendo necessário a instalação de driver especiais para a aplicação. Este
http://translate.googleusercontent.com/translate_c?hl=pt-BR&ie=UTF-8&sl=es&tl=pt&u=http://encaminandoc.blogspot.com/2009/04/el-usb-desde-linux-con-la-consola.html&rurl=translate.google.com.br&twu=1&usg=ALkJrhhXJgZ5iKhqTPPSpBVK1cRMXa7EyA
18
18 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
método apresenta velocidade de comunicação de até 64 kB/s e é utilizado pelo
gerenciador de gravação da ferramenta SanUSB no linux. Mais detalhes na video-aula
disponivel em http://www.youtube.com/watch?v=h6Lw2qeWhlM .
Communication Device Class (CDC) – Basicamente o driver emula uma porta COM,
fazendo com que a comunicação entre o software e o firmware seja realizada como se
fosse uma porta de comunicação serial padrão. É o método mais simples de comunicação
bidirecional com velocidade de comunicação é de até 115 kbps, ou seja, aproximadamente
14,4 kB/s. Mais detalhes em uma aplicação Windows® com protocolo Modbus RTU
http://www.youtube.com/watch?v=KUd1JkwGJNk e em uma aplicação de comunicação
bidirecional no Linux http://www.youtube.com/watch?v=cRW99T_qa7o.
Mass Storage Device (MSD) - Método customizado para dispositivos de
armazenamento em massa que permite alta velocidade de comunicação USB, limitado
apenas pela própria velocidade do barramento USB 2.0 (480 Mbps). Este método é
utilizado por pen-drives, scanners, câmeras digitais. Foi utilizado juntamente com a
ferramenta SanUSB para comunicação com software de supervisão programado em Java.
Mais detalhes na video-aula disponivel em
http://www.youtube.com/watch?v=Ak9RAl2YTr4.
Como foi visto, a comunicação USB é baseada em uma central (host), onde o
computador enumera os dispositivos USB conectados a ele. Existem três grandes classes
de dispositivos comumente associados a USB: dispositivos de interface humana (HID),
classe de dispositivos de comunicação (CDC) e dispositivos de armazenamento em massa
(MSD). Cada uma dessas classes já possui um driver implementado na maioria dos
sistemas operacionais. Portanto, se adequarmos o firmware de nosso dispositivo para ser
compatível com uma dessas classes, não haverá necessidade de implementar um driver.
Figura 1. 12: Drivers e comunicação.
http://www.youtube.com/watch?v=h6Lw2qeWhlMhttp://www.youtube.com/watch?v=KUd1JkwGJNkhttp://www.youtube.com/watch?v=cRW99T_qa7ohttp://www.youtube.com/watch?v=Ak9RAl2YTr4
19
19 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Nos sitemas operacionais Windows@ e Linux, o modo mais fácil de comunicar com
o PIC USB é o CDC, por uma razão simples, os programas para PCs são baseados na
comunicação via porta serial, o que torna o processo ainda mais simples. O método CDC
no Linux e o HID no Windows@ são nativos, ou seja, não é necessário instalar nenhum
driver no sistema operacional para que o PC reconheça o dispositivo.
UTILIZANDO O COMPILADOR C18 E A IDE MPLABX
MULTIPLATAFORMA COM FUNÇÕES EM PORTUGUÊS
O compilador C18 é projetado para gerar executáveis para microcontroladores com
suporte ao padrão ANSI C embutido na IDE do MPLABX. O MPLABX é um ambiente
integrado de desenvolvimento para microcontroladores PIC em geral. Porém, nativamente
ele só suporta assembly para PIC. Por isso existe a necessidade do compilador C18.O
compilador C18, tem os seguintes atributos:
Compatibilidade com o padrão ANSI;
Integração com a IDE livre e multiplataforma MPLABX para gerenciamento de
projeto e debug;
Compatibilidade com módulos de objetos gerados pelo montador MPASM,
permitindo a liberdade para misturar código C com código assembly.
Em adição aos qualificadores de acesso do padrão ANSI C (const, volatile), o
compilador C18 introduz qualificadores de acesso como const rom e ram para variáveis.
Sintaticamente, a forma de uso desses novos qualificadores é parecida com o uso de const
e volatile. Estes qualificadores definem o local onde as variáveis e strings serão
armazenadas, ou seja, na memória de programa (const rom) ou na memória de dados
(ram). Os qualificadores da declaração de variáveis, caso não seja especificado, é por
padrão na memória de dados (ram). Como a memória de dados é menor, com somente 2
Kbytes, é aconselhável utilizar o qualificador const rom para variáveis com grandes strings
no intuito de armazenamento da variável na memória de programa (flash).
Pro outro lado, o compilador utiliza também a declaração #pragma para alocar uma
instrução na memória de programa (flash) ou na memória da dados (RAM), entre elas
#pragma code (instruções executáveis na flash), #pragma romdata (variáveis e constantes
na flash), #pragma udata (variáveis não inicializadas na RAM) e #pragma idata (variáveis
inicializadas na RAM). Os pragmas são geralmente utilizados para definir o endereço fixo
da memória de programa (flash) nas interrupções do microcontrolador (#pragma code
_HIGH_INTERRUPT_VECTOR = 0x1008).
Para utilizar esta ferramenta multiplataforma, instale o MPLABX e o compilador C18. É
20
20 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
possível baixar gratuitamente o MPLABX e a versão C18 livre e completa (full) para o
sistema operacional desejado nos links abaixo. Importante enfatizar que estas versões
são livres e foram testadas com sucesso. Outras versões podem apresentar erro na
compilação e/ou gravação. Detalhes da instalação podem ser vistos em:
http://www.youtube.com/watch?v=1EmYiiB_b8I .
Instalador de Gravação:
https://dl.dropboxusercontent.com/u/101922388/InstaladorGravacao.zip
O instalador SanUSB contém o Java JRE 6 necessário para a instalação do MPLABX.
Caso não seja compatível, baixe e instale o Java JRE 6 (32 ou 64 bits) ou OpenJDK6, se
for Linux, antes do MPLABX.
Pasta com todos os arquivos:
https://drive.google.com/open?id=0B5332OAhnMe2N3czQWxVX0JVSkE&authuser=0
Compilador Windows:
https://drive.google.com/open?id=0B5332OAhnMe2STE4MFNBQ2dqYWM&authuser=0
Compilar Linux:
https://drive.google.com/open?id=0B5332OAhnMe2cjVRcmF5RU9aMTQ&authuser=0
Para instalar a IDE MPLABX no Linux após o download, acesse a pasta Downloads
pelo terminal e, como super-usuário, digite:
chmod 770 mplabx-ide-v1.41-linux-installer.run
e depois:
./ mplabx-ide-v1.41-linux-installer.run
Realize o mesmo método para instalar o compilador C18.
Compilador Mac OSX:
https://drive.google.com/open?id=0B5332OAhnMe2b1NISGlYWlBCR0k&authuser=0
http://www.youtube.com/watch?v=1EmYiiB_b8Ihttps://dl.dropboxusercontent.com/u/101922388/InstaladorGravacao.ziphttps://drive.google.com/open?id=0B5332OAhnMe2N3czQWxVX0JVSkE&authuser=0https://drive.google.com/open?id=0B5332OAhnMe2STE4MFNBQ2dqYWM&authuser=0https://drive.google.com/open?id=0B5332OAhnMe2cjVRcmF5RU9aMTQ&authuser=0https://drive.google.com/open?id=0B5332OAhnMe2b1NISGlYWlBCR0k&authuser=0
21
21 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
1) Para compilar os programas com o C18 e o SanUSB, basta abrir o Projeto1C18.X
em https://dl.dropbox.com/u/101922388/ProjSanUSB1_MPLABX/Projeto1C18.X.zip. Todos esses
programas estão disponíveis no Grupo SanUSB (www.tinyurl.com/SanUSB). A
apostila atualizada pode ser obtida no link:
https://dl.dropboxusercontent.com/u/101922388/Apostila_SanUSB_MPLABX.pdf .
Depois de instalado é possível abrir o projeto MPLAX clicando em Open project e
escolher o projeto Projeto1C18.X. É possível visualizar o programa com um duplo
clique sobre pisca.c. Para compilar pressione Build and Clean (ícone com martelo e
vassoura). Para compilar outros programas.c basta modifica-los ou criá-los com a
extensão .c dentro da mesma pasta do projeto Projeto1C18.X e adicioná-los em Source
Files (somente um firmware por vez).
Em linux, a gravação pode ser realizada também pelo terminal, após a instalação do
SanUSB. Logado como super-usuário e com o Projeto1C18.X salvo na Pasta Pessoal,
basta digitar (ou copiar e colar no terminal):
/usr/share/sanusb/sanusb –w ~/Projeto1C18.X/dist/default/production/Projeto1C18.X.production.hex -r
Se no Linux Ubuntu, a pasta Projeto1C18.X não aparecer em cor de projeto
MPLABX, como um chip, basta criar um novo projeto ( File ->New Project-> Standalone
Project --> Advanced 8 bits MCU – PIC18F4550 -> PicKit3 -> C18 -> Nome Projeto2 e
Finish.). Após criar o novo projeto, basta copiar todos os arquivos da pasta
Projeto1C18.X e colar dentro do novo Projeto2.X. Pronto, basta abrir o Projeto2.X e
compilar o arquivo em Source files.
https://dl.dropbox.com/u/101922388/ProjSanUSB1_MPLABX/Projeto1C18.X.ziphttp://www.tinyurl.com/SanUSBhttps://dl.dropboxusercontent.com/u/101922388/Apostila_SanUSB_MPLABX.pdf
22
22 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Figura 16. : Projeto pisca LED no compilador C18.
FUNÇÕES EM PORTUGUÊS
Este capítulo descreve todas as funções em português da biblioteca SanUSB no
C18. É importante salientar que além dessas funções, são válidas as funções padrões
ANSI C e também que as funções do compilador C18 estão descritas em código aberto
dentro da biblioteca SanUSB1.h (frequência 4 MHz) ou SanUSB48.h (frequência 4 MHz).
A fim de facilitar o entendimento, as funções SanUSB foram divididas em grupos, definidos
por sua utilização e os periféricos do hardware que estão relacionadas.
FUNÇÕES BÁSICAS DA APLICAÇÃO DO USUÁRIO
Este grupo de funções define a estrutura do programa uma vez que o usuário deve
escrever o programa.c de sua aplicação.
O microcontrolador possui um recurso chamado watchdog timer (wdt) que nada
mais é do que um temporizador cão-de-guarda contra travamento do programa. Caso seja
habilitado habilita_wdt(); na função principal main(), este temporizador está configurado
para contar aproximadamente um intervalo de tempo de 16 segundos. Ao final deste
intervalo, se a flag limpa_wdt(); não for zerada, ele provoca um reset do microcontrolador e
consequentemente a reinicialização do programa. A aplicação deve permanentemente
zerar a flag limpa_wdt() dentro do laço infinito ( while(1){ } ) da função principal main() em
intervalos de no máximo 16 segundos. Este recurso é uma segurança contra qualquer
23
23 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
possível falha que venha travar o programa e paralisar a aplicação. Para zerar o wdt, o
usuário pode também utilizar a função ClrWdt(); do compilador C18.
A seguir estão as características detalhadas destas funções.
clock_int_4MHz()
Função: Habilita o clock para a processador do oscilador interno de 4MHz.
Argumentos de entrada: Não há.
Argumentos de saída: Não há.
Observações: O clock padrão proveniente do sistema USB interno do PIC é de 48MHz
gerado a partir do cristal de 20 MHz. Isto é possível através de um multiplicador interno de
clock do PIC. A função _int_4MHz() habilita, para o processador do microcontrolador, o
oscilador RC interno em 4 MHz que adéqua o período de incremento dos temporizadores
em 1us. É aconselhável que seja a primeira declaração da função principal main().
Exemplo:
#include “SanUSB1.h”
void main (void) {
clock_int_4MHz();
A seguir estão as características detalhadas destas funções.
clock_int_48MHz()
Função: Habilita o clock para a processador do oscilador interno de 4MHz.
Observações: O clock padrão, proveniente do sistema USB interno do PIC é de 48MHz
gerado a partir do cristal de 20 MHz, é utilizado também pela CPU:
#include “SanUSB48.h”
void main (void) {
clock_int_48MHz();
nivel_alto()
Função: Força nivel lógico alto (+5V) em uma saída digital.
Argumentos de entrada: Nome da saída digital que irá para nivel lógico alto. Este nome é
construído pelo inicio pin_ seguido da letra da porta e do número do pino. Pode ser
24
24 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
colocado também o nome de toda a porta, como por exemplo, portb.
Argumentos de saída: Não há.
Observações: Não há.
Exemplo:
nivel_alto(pin_b7); //Força nivel lógico 1 na saída do pino B7
nivel_alto(portb); //Força nivel lógico 1 em toda porta b
nivel_baixo()
Função: Força nivel lógico baixo (0V) em uma saída digital.
Argumentos de entrada: Nome da saída digital que irá para nivel lógico baixo. Este nome é
construído pelo inicio pin_ seguido da letra da porta e do número do pino. Pode ser
colocado também o nome de toda a porta, como por exemplo, portc.
Argumentos de saída: Não há.
Observações: Não há.
Exemplo:
nivel_baixo(pin_b7); //Força nivel lógico 0 na saída do pino B7
nivel_baixo(portc); //Força nivel lógico 0 em toda porta c
saída_pino(pino,booleano)
Função: Acende um dos leds da placa McData.
Argumentos de entrada: Pino que irá receber na saída o valor booleano, valor booleano 0
ou 1.
Argumentos de saída: Não há.
Observações: Não há.
Exemplo:
ledpisca=!ledpisca; // ledpisca é igual ao inverso de ledpisca
saida_pino(pin_b0,ledpisca); // b0 recebe o valor de ledpisca
inverte_saida()
Função: Força nivel lógico inverso em uma saída digital.
Argumentos de entrada: Nome da saída digital que irá ser invertida. Este nome é
construído pelo inicio pin_ seguido da letra da porta e do número do pino.
25
25 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Argumentos de saída: Não há.
Observações: Não há.
Exemplo:
inverte_saida(pin_b7); //Força nivel lógico inverso na saída do pino B7
saída_pino(pino,booleano)
Função: Acende um dos leds da placa McData.
Argumentos de entrada: Pino que irá receber na saída o valor booleano, valor booleano 0
ou 1.
Argumentos de saída: Não há.
Observações: Não há.
Exemplo:
ledpisca=!ledpisca; // ledpisca é igual ao inverso de ledpisca
saida_pino(pin_b0,ledpisca); // b0 recebe o valor de ledpisca
tempo_us()
Função: Tempo em múltiplos de 1us.
Argumentos de entrada: Tempo de tempo que multiplica 1 us.
Argumentos de saída: Não há.
Observações: Esta instrução só é finalizada ao final do tempo determinado, ou seja, esta
função “paralisa” a leitura do programa durante a execução. Exemplo:
tempo_us(200); //Tempo de 200 us
tempo_ms()
Função: Tempo em múltiplos de 1 ms.
Argumentos de entrada: Tempo de tempo que multiplica 1 ms.
Argumentos de saída: Não há.
Observações: Esta instrução só é finalizada ao final do tempo determinado, ou seja, esta
função “paralisa” a leitura do programa durante a execução. Exemplo:
tempo_ms(500); //Tempo de 500 ms
26
26 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
entrada_pin_xx
Função: Lê nivel lógico de entrada digital de um pino.
Argumentos de entrada: Não há.
Observações: Este nome é construído pelo inicio entrada_pin_ seguido da letra da porta e
do número do pino.
Exemplo:
ledXOR = entrada_pin_b1^entrada_pin_b2; //OU Exclusivo entre as entradas dos
pinos b1 e b2
habilita_interrupcao()
Função: Habilita as interrupções mais comuns do microcontrolador na função main().
Argumentos de entrada: Tipo de interrupção: timer0, timer1, timer2, timer3, ext0, ext1, ext2,
ad e recep_serial.
Argumentos de saída: Não há.
Observações: As interrupções externas já estão habilitadas com borda de descida. Caso
se habilite qualquer interrução deve-se inserir o desvio _asm goto interrupcao _endasm
na função void _high_ISR (void){ } da biblioteca SanUSB.h
Exemplo:
habilita_interrupcao(timer0);
habilita_interrupcao(ext1);
if(xxx_interrompeu)
Função: Flag que verifica, dentro da função de tratamento de interrupções, se uma
interrupção específica ocorreu.
Complemento: timer0, timer1, timer2, timer3, ext0, ext1, ext2, ad e serial.
Argumentos de saída: Não há.
Observações: A flag deve ser zerada dentro da função de interrupção.
Exemplo:
#programa interrupt interrupcao void interrupcao() {
//espera a interrupção externa 1 (em B1) if (ext1_interrompeu){
//limpa a flag de interrupção ext1_interrompeu = 0; //inverte o LED em B0 PORTBbits.RB0 =! PORTBbits.RB0;
}
//espera o estouro do timer0
27
27 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
if (timer0_interrompeu) { //limpa a flag de interrupção timer0_interrompeu = 0; //inverte o LED em B7 PORTBbits.RB0 =! PORTBbits.RB0; tempo_timer16bits(0,62500);
} }
liga_timer16bits(timer,multiplicador)
Função: Liga os timers e ajusta o multiplicador de tempo na função main().
Argumentos de entrada: Timer de 16 bits (0,1ou 3) e multiplica que é o valor do prescaler
para multiplicar o tempo.
Argumentos de saída: Não há.
Observações: O timer 0 pode ser multiplicado por 2, 4, 6, 8, 16, 32, 64, 128 ou 256. O
Timer 1 e o Timer 3 podem ser multiplicados por 1, 2, 4 ou 8.
Exemplo:
liga_timer16bits(0,16); //Liga timer 0 e multiplicador de tempo igual a 16
liga_timer16bits(3,8); //Liga timer 0 e multiplicador de tempo igual a 8
tempo_timer16bits(timer,conta_us)
Função: Define o timer e o tempo que será contado em us até estourar.
Argumentos de entrada: Timer de 16 bits (0,1ou 3) e tempo que será contado em us (valor
máximo 65536).
Argumentos de saída: Não há.
Observações: O Não há.
Exemplo:
habilita_interrupcao(timer0);
liga_timer16bits(0,16); //liga timer0 - 16 bits com multiplicador (prescaler) 16
tempo_timer16bits(0,62500); //Timer 0 estoura a cada 16 x 62500us = 1 seg.
timer0_ms(tempo)
Função: Tempo de atarso em ms gerado pelo timer 0 configrado e 8 bits.
Argumentos de entrada: Tempo.
Argumentos de saída: Não há.
Observações: O Não há.
Exemplo:
while (1){
28
28 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
inverte_saida(pin_b7);
timer0_ms(500);
}
habilita_wdt()
Função: Habilita o temporizador cão-de-guarda contra travamento do programa.
Argumentos de entrada: Não há.
Argumentos de saída: Não há.
Observações: O wdt inicia como padrão sempre desabilitado. Caso seja habilitado na
função principal main(), este temporizador está configurado para contar aproximadamente
um intervalo de tempo de 16 segundos. Ao final deste intervalo, se a flag limpa_wdt() não
for zerada, ele provoca um reset do microcontrolador e conseqüentemente a reinicialização
do programa. Exemplo:
#include “SanUSB1.h”
void main (void) {
clock_int_4MHz();
habilita_wdt(); //Habilita o wdt
limpaflag_wdt()
Função: limpa a flag do wdt
Argumentos de entrada: Não há.
Argumentos de saída: Não há.
Observações: Caso o wdt seja habilitado, a flag deve ser limpa em no máximo 16
segundos para que não haja reinicializaçção do programa. Geralmente esta função é
colocada dentro do laço infinito while(1) da função principal main(). É possível ver detalhes
no programa exemplowdt.c e utilizar também a função ClrWdt() do compilador C18 .
Exemplo:
#include “SanUSB1.h” #pragma interrupt interrupcao //Tem que estar aqui ou dentro do firmware.c
void interrupcao(){} void main (void) {
clock_int_4MHz(); habilita_wdt(); while(1) { limpaflag_wdt(); ..... tempo_ms(500); }
}
29
29 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
escreve_eeprom(posição,valor)
Função: Escrita de um byte da memória EEPROM interna de 256 bytes do
microcontrolador.
Argumentos de entrada: Endereço da memória entre 0 a 255 e o valor entra 0 a 255.
Argumentos de saída: Não há.
Observações: O resultado da leitura é armazenado no byte EEDATA.
Exemplo:
escreve_eeprom(85,09); //Escreve 09 na posição 85
le_eeprom()
Função: Leitura de um byte da memória EEPROM interna de 256 bytes do
microcontrolador.
Argumentos de entrada: Endereço da memória entre 0 a 255.
Argumentos de saída: Não há.
Observações: O resultado da leitura é armazenado no byte EEDATA.
Exemplo:
dado=le_eeprom(85);
FUNÇÕES DO CONVERSOR ANALÓGICO DIGITAL (A/D)
As funções a seguir são utilizadas para a aquisição de dados utilizando as entradas
analógicas.
habilita_canal_AD()
Função: Habilita entradas analógicas para conversão AD.
Argumentos de entrada: Número do canal analógico que irá ser lido. Este dado habilita um
ou vários canais AD e pode ser AN0, AN0_a_AN1 , AN0_a_AN2 , AN0_a_AN3,
AN0_a_AN4, AN0_a_AN8, AN0_a_AN9, AN0_a_AN10, AN0_a_AN11, ou AN0_a_AN12.
Argumentos de saída: Não há.
Observações: Não há.
Exemplo:
habilita_canal_AD(AN0); //Habilita canal 0
le_AD8bits()
Função: Leitura de uma entrada analógica com 8 bits de resolução.
Prototipagem: unsigned char analog_in_8bits(unsigned char).
Argumentos de entrada: Número do canal analógico que irá ser lido. Este número pode ser
0, 1 , 2 , 3, 4, 8, 9, 10, 11 ou 12.
30
30 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Argumentos de saída: Retorna o valor da conversão A/D da entrada analógica com
resolução de 8 bits.
Observações: Não há.
Exemplo:
PORTB = le_AD8bits(0); //Lê canal 0 da entrada analógica com resolução de 8 bits e
coloca na porta B
le_AD10bits()
Função: Leitura de uma entrada analógica com 8 bits de resolução.
Prototipagem: unsigned char analog_in_8bits(unsigned char).
Argumentos de entrada: Número do canal analógico que irá ser lido. Este número pode ser
0, 1 , 2 , 3, 4, 8, 9, 10, 11 ou 12.
Argumentos de saída: Retorna o valor da conversão A/D da entrada analógica com
resolução de 10 bits.
Observações: Não há.
Exemplo:
resultado = le_AD10bits(0);//Lê canal 0 da entrada analógica com resolução de 10 bits.
SetaPWM1(int freqPWM, int duty);
Função: Seta a frequência e o ciclo de trabalho (0 a 100) no pino de PWM1 (pin_c2). Exemplo: for(i = 0 ; i < 100 ; i=i+5) { SetaPWM1(10000, i);SetaPWM2(10000, i); tempo_ms(500); }
Exemplos de aplicação:
https://www.youtube.com/watch?v=lB21b3zA4Ac
https://www.youtube.com/watch?v=KbH3yzPHX4U
FUNÇÕES DA COMUNICAÇÃO SERIAL RS-232
As funções a seguir são utilizadas na comunicação serial padrão RS-232 para
enviar e receber dados, definir a velocidade da comunicação com o oscilador interno
4MHz.
As configurações da comunicação são: sem paridade, 8 bits de dados e 1 stop bit. Esta
configuração é denominada 8N1 e não pode ser alterada pelo usuário.
https://www.youtube.com/watch?v=lB21b3zA4Achttps://www.youtube.com/watch?v=KbH3yzPHX4U
31
31 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
taxa_serial();
Função: Configura a taxa de transmissão/recepção (baud rate) da porta RS-232
Argumentos de entrada: Taxa de transmissão/recepção em bits por segundo (bps)
Argumentos de saída: Não há.
Observações: O usuário deve obrigatoriamente configurar taxa_rs232() da comunicação
assíncrona antes de utilizar as funções le_serial e escreve_serial. As taxas programáveis
são 1200 bps, 2400 bps, 9600 bps, 19200 bps.
Exemplo:
void main()
{
clock_int_4MHz();
habilita_interrupcao(recep_serial);
// Taxa de 2400 bps taxa_serial(2400); //programa normal parado aqui while(1); }
le_serial();
Função: Lê o primeiro caractere recebido que está no buffer de recepção RS-232.
Argumentos de entrada: Não há.
Argumentos de saída: Não há.
Observações: Quando outro byte é recebido, ele é armazenado na próxima posição livre
do buffer de recepção, cuja capacidade é de 16 bytes. Exemplo:
#pragma interrupt interrupcao void interrupcao() { unsigned char c; if (serial_interrompeu) { serial_interrompeu=0; c = le_serial(); if (c >= '0' && c
32
32 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
sendrw((rom char *) );
Função: Transmite pela serial strings ou caracteres armazenados no ROM (memória flash).
Argumentos de entrada: O dado a ser transmitido deve ser de 8 bits do tipo char.
Argumentos de saída: Não há.
Exemplo: const rom char nome[] ="Serial ";
sendsw((rom char *)nome); // escreve Serial
tempo_ms(300);
sendsw((rom char *)"Outra forma de enviar\r\n");// escreve Serial
tempo_ms(300);
Caso ocorra o erro sanusb Error: Odd address at beginning of HEX file line error,
compile e grave o firmware básico para piscar o LED em
https://dl.dropboxusercontent.com/u/101922388/121007SanUSBOrig/exemplo1.hex , tente novamente
compilar e gravar o firmware desejado. Evitar o uso da função printf().
sendsw((char *) );
Função: Transmite caracteres pela serial UART alocados na RAM.
Argumentos de entrada: O dado a ser transmitido deve ser de 8 bits do tipo char.
Argumentos de saída: Não há.
Exemplo: const char nome[] ="Serial ";
sendsw((char *)nome); // escreve Serial
tempo_ms(300);
sendsw((char *)"Outra forma de enviar\r\n");// escreve Serial
tempo_ms(300);
Caso ocorra o erro sanusb Error: Odd address at beginning of HEX file line error,
compile e grave o firmware básico para piscar o LED em
https://dl.dropboxusercontent.com/u/101922388/121007SanUSBOrig/exemplo1.hex , tente novamente
compilar e gravar o firmware desejado. Evitar o uso da função printf().
https://dl.dropboxusercontent.com/u/101922388/121007SanUSBOrig/exemplo1.hexhttps://dl.dropboxusercontent.com/u/101922388/121007SanUSBOrig/exemplo1.hex
33
33 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
sendnum();
Função: Transmite números de variáveis pela serial UART.
Argumentos de entrada: O dado a ser transmitido deve ser de 8 bits do tipo char.
Argumentos de saída: Não há.
Exemplo: const char nome[] ="Valor= ";unsigned int ADvalue;
ADvalue=le_AD10bits(0);
sendsw((char *)nome);
sendnum(ADvalue);
tempo_ms(300);
FERRAMENTA DE GRAVAÇÃO VIA USB
O sistema de desenvolvimento SanUSB é uma ferramenta composta de software e
hardware básico da família PIC18Fxx5x com interface USB. Esta ferramenta livre se
mostra eficiente no desenvolvimento rápido de projetos reais, pois não há necessidade de
remover o microcontrolador para a atualização do firmware. Além disso, esta ferramenta se
mostra eficaz no ensino e na difusão de microcontroladores, bem como em projetos de
eletrônica e informática, pois todos os usuários podem desenvolver projetos reais no
ambiente de ensino ou na própria residência sem a necessidade de um equipamento para
gravação de microcontroladores. Além disso, o software de gravação de
microcontroladores USB é multiplataforma, pois é executável no Windows@, Mac OSX e
no Linux e também plug and play, ou seja, é reconhecido automaticamente pelos sistemas
operacionais sem a necessidade de instalar nenhum driver. Dessa forma, ela é capaz de
suprimir:
Um equipamento específico para gravação de um programa no microcontrolador;
conversor TTL - RS-232 para comunicação serial bidirecional, emulado via USB
pelo protocolo CDC, que permite também a depuração do programa através da
impressão via USB das variáveis do firmware;
fonte de alimentação, já que a alimentação do PIC provém da porta USB do PC. É
importante salientar que cargas indutivas como motores de passo ou com corrente
acima de 400mA devem ser alimentadas por uma fonte de alimentação externa.
Conversor analógico-digital (AD) externo, tendo em vista que ele dispõe
internamente de 10 ADs de 10 bits;
software de simulação, considerando que a simulação do programa e do hardware
podem ser feitas de forma rápida e eficaz no próprio circuito de desenvolvimento ou
com um protoboard auxiliar.
34
34 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Além de todas estas vantagens, os laptops e alguns computadores atuais não
apresentam mais interface de comunicação paralela e nem serial EIA/RS-232, somente
USB.
Como pode ser visto, esta ferramenta possibilita que a compilação, a gravação e a
simulação real de um programa, como também a comunicação serial através da emulação
de uma porta COM sem fio, possam ser feitos de forma rápida e eficaz a partir do
momento em o microcontrolador esteja conectado diretamente a um computador via USB.
Figura 2. 1: Gravação do PIC via PC.
Utilizando esta ferramenta, estudantes foram três vezes consecutivas campeões da
Competição de Robótica do IFCE (2007, 2008 e 2009) na categoria Localização,
campeões da Feira Brasileira de Ciências e Engenharia (FEBRACE09) da USP em São
Paulo na Categoria Engenharia (2009), como também obtiveram Prêmio de Inovação em
Aplicação Tecnológica na Feria Explora 2009 em Medelin na Colômbia e foram Campeões
na Categoria Supranivel do Foro Internacional de Ciencia e Ingeniería 2010 no Chile,
terceiro lugar em inovação na Semantec 2011 do IFCE, campeões na V Feira Estadual de
Ciências e Cultura do Ceará na categoria robótica educacional em 2011 e terceiro lugar no
Congresso Tecnológico InfoBrasil 2014 (http://www.infobrasil.inf.br/pagina/anais-2014).
GRAVAÇÃO DE MICROCONTROLADORES
A transferência de programas para os microcontroladores é normalmente efetuada
através de um hardware de gravação específico. Através desta ferramenta, é possível
efetuar a descarga de programas para o microcontrolador diretamente de uma porta USB
de qualquer PC.
http://www.infobrasil.inf.br/pagina/anais-2014
35
35 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Para que todas essas funcionalidades sejam possíveis, é necessário gravar, anteriormente
e somente uma vez, com um gravador específico para PIC, o gerenciador de gravação
pela USB Gerenciador.hex disponivel na pasta completa da ferramenta no link abaixo,
onde também é possível baixar periodicamente as atualizações dessa ferramenta e a
inclusão de novos programas: https://dl.dropbox.com/u/101922388/121007SanUSBOrig.zip
Caso o computador ainda não o tenha o aplicativo Java JRE ou SDK instalado para
suporte a programas executáveis desenvolvidos em Java, baixe os instaladores em
https://drive.google.com/open?id=0B5332OAhnMe2N3czQWxVX0JVSkE&authuser=0 ou
através do link: http://www.java.com/pt_BR/download/manual.jsp.
Para que os programas em C possam ser gravados no microcontrolador via USB, é
necessário compilá-los, ou seja, transformá-los em linguagem de máquina hexadecimal.
Existem diversos compiladores que podem ser utilizados por esta ferramenta, entre eles o
SDCC, o MPLABX C18, o Hi-Tech e o CCS. Para compilar com o MPLAX + C18 Lite e
a placa SanUSB em Linux, Windows ou Mac OSX é simples. Inicialmente, basta
instalar normalmente o MPLABX e o C18 Lite para o S.O. desejado
(https://drive.google.com/open?id=0B5332OAhnMe2N3czQWxVX0JVSkE&authuser=0). Depois de
instalado basta abrir o MPLAX e clicar em Open project e abrir um projeto
descompactado.X, como em
https://dl.dropboxusercontent.com/u/101922388/ProjSanUSB1_MPLABX/Projeto1C18.X.zip .
Para modificar o programa exemplo, altere o arquivo .c em source file e clique
em Clean und Build Project (ícone que tem um martelo e uma vassoura,)
O arquivo compilado Projeto1C18.hex, para gravação via USB, está sempre dentro
de Projeto1C18.X/dist/default/production
Este exemplo, bem como muitos outros, foram compilados em Linux,
Windows e Mac OSX, e funcionou normalmente.
A representação básica do circuito SanUSB montado em protoboard é mostrada a
seguir:
https://dl.dropbox.com/u/101922388/121007SanUSBOrig.ziphttps://drive.google.com/open?id=0B5332OAhnMe2N3czQWxVX0JVSkE&authuser=0http://www.java.com/pt_BR/download/manual.jsphttps://drive.google.com/open?id=0B5332OAhnMe2N3czQWxVX0JVSkE&authuser=0https://dl.dropboxusercontent.com/u/101922388/ProjSanUSB1_MPLABX/Projeto1C18.X.zip
36
36 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Figura 2. 2: Esquemático de montagem da Ferramenta para 28 pinos.
Para um microcontrolador de 40 pinos, o circuito é mostrado abaixo:
Figura 2. 3: Esquemático de montagem da ferramenta para 40 pinos.
Os componentes básicos do circuito são:
1 microcontrolador da família PIC USB (18F2550, 18F2455, 18F4550, etc.);
1 cristal de 20MHz;
2 capacitores de 22pF;
2 capacitores de 1uF (um no pino 14 Vusb e outro entre o +5V e o Gnd ) ;
3 leds e 3 resistores de 390 (só é necessário um led com resistor no pino B7);
1 resistor de 2k2 e um botão ou fio para gravação no pino 1;
37
37 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
1 diodo qualquer entre o +5V e o o pino Vdd;
1 Cabo USB qualquer.
Note que, este sistema multiplataforma(Linux, Windows@ e Mac OSX),
compatível com o software de gravação HID USB da Microchip também para Linux e
Mac OSX, pode ser implementado também em qualquer placa de desenvolvimento
de microcontroladores PIC com interface USB, pois utiliza o botão de reset, no pino 1,
como botão de gravação via USB. Ao conectar o cabo USB e alimentar o microcontrolador,
com o pino 1 no Gnd (0V), através do botão ou de um simples fio, o microcontrolador entra
em Estado para Gravação via USB (led no pino B7 aceso) e que, após o reset com o pino
1 no Vcc (+5V através do resistor fixo de 2K2 sem o jump), entra em Estado para
Operação do programa aplicativo (firmware) que foi compilado.
O cabo USB apresenta normalmente quatro fios, que são conectados ao circuito do
microcontrolador nos pontos mostrados na figura acima, onde normalmente, o fio Vcc
(+5V) do cabo USB é vermelho, o Gnd (Vusb-) é marrom ou preto, o D+ é azul ou verde e
o D- é amarelo ou branco. Note que a fonte de alimentação do microcontrolador nos pinos
19 e 20 e dos barramentos vermelho (+5V) e azul (Gnd) do circuito provem da própria
porta USB do computador. Para ligar o cabo USB no circuito é possível cortá-lo e conectá-
lo direto no protoboard, com fios rígidos soldados, como também é possível conectar sem
cortá-lo, em um protoboard ou numa placa de circuito impresso, utilizando um conector
USB fêmea. O diodo de proteção colocado no pino 20 entre o Vcc da USB e a alimentação
do microcontrolador serve para proteger contra corrente reversa caso a tensão da porta
USB esteja polarizada de forma inversa.
A figura abaixo mostra a ferramenta SanUSB montada em protoboard seguindo o
circuito anterior e a posição do apdaptador USB a ser ligado no PC via cabo. Você pode
ligar de qualquer um dos lados do conector USB, observando a descrição.
Figura 2. 4: Esquema montado em protoboard e conector USB.
É importante salientar que, para o perfeito funcionamento da gravação via USB, o
circuito desta ferramenta deve conter um capacitor de filtro entre 0,1uf e 1uF na
alimentação que vem da USB, ou seja, colocado entre os pinos 20 (+5V) e 19 (Gnd) ou no
barramento + e – da protoboard..
38
38 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Caso o sistema microcontrolado seja embarcado como, por exemplo, um robô, um
sistema de aquisição de dados ou um controle de acesso, ele necessita de uma fonte de
alimentação externa, que pode ser uma bateria comum de 9V ou um carregador de celular.
A figura abaixo mostra o PCB, disponivel nos Arquivos do Grupo SanUSB, e o circuito para
esta ferramenta com entrada para fonte de alimentação externa. Para quem deseja obter
o sistema pronto para um aprendizado mais rápido, é possível também encomendar placas
de circuito impresso da ferramenta SanUSB, como a foto da placa abaixo, entrando em
contato com o grupo SanUSB através do e-mail: sanusb_laese@yahoo.com.br .
Figura 2. 5: Esquema montado em PCB.
Se preferir confeccionar a placa, é possível também imprimir, em folha de
transparência, o PCB e o silk configurado em tamanho real, como mostra a figura 2.6,
transferir para a placa de cobre, corroer, furar e soldar os componentes. Mais detalhes no
vídeo disponivel em: http://www.youtube.com/watch?v=Xm8YJ_XaGA8.
Figura 2. 6: PCB da Ferramenta SanUSB.
http://www.youtube.com/watch?v=Xm8YJ_XaGA8
39
39 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Para obter vários programas-fonte e vídeos deste sistema livre de gravação,
comunicação e alimentação via USB, basta se cadastrar no grupo de acesso livre
www.tinyurl.com/SanUSB e clicar no item Arquivos.
Durante a programação do microcontrolador basta abrir com o MPLABX o projeto
Projeto1.C18.X já configurado. A biblioteca SanUSB1.h contém funções básicas para o
compilador, habilitação do sistema Dual Clock, ou seja, oscilador RC interno de 4 MHz
para CPU e cristal oscilador externo de 20 MHz para gerar a frequência de 48MHz da
comunicação USB, através de prescaler multiplicador de frequência.
Como a frequência do oscilador interno é de 4 MHz, cada incremento dos
temporizadores corresponde a um microssegundo. O programa exemplo1 abaixo comuta
umled conectado no pino B7 a cada 0,5 segundo.
---------------------------------------------------------------------------------------------------------------
PRÁTICA 1 – PISCA LED
Após montar o circuito da Ferramenta SanUSB (ver figura abaixo), deve-se iniciar a
sequência de práticas.
Figura 2. 7: Circuito básico da Ferramenta SanUSB.
Neste exemplo o objetivo é piscar um LED de forma temporizada a cada 0,5
segundos, sem o auxílio de chaves ou botões. Para isso utiliza-se uma única saída do
PIC18F2550, que pode ser, por exemplo, o pino 28 (referência B7). Esta saída por sua vez
está ligada ao Anodo de um LED com um resistor no valor de 100 ohm a 1k em série,
como mostrado na Figura xx. O catodo do LED deve ser aterrado como na Figura.
Programação em Linguagem C:
http://www.tinyurl.com/SanUSB
40
40 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
#include "SanUSB1.h"
#pragma interrupt interrupcao //Tem que estar declarado no firmware.c void interrupcao(){ } void main(){
clock_int_4MHz(); while (1){//laço infinito
nivel_alto(pin_b7); //coloca a saída B7 em nivel lógico alto, ou seja, acende LED tempo_ms(500);//aguarda 500 milissegundos = 0,5 segundos nivel_baixo(pin_b7); //coloca a saída B7 em nivel lógico baixo, ou seja, apaga LED tempo_ms(500); //aguarda 500 milissegundos = 0,5 segundos
} //fim while }//fim main
Como a frequência do oscilador interno é de 4 MHz, cada incremento dos temporizadores corresponde a um
microssegundo. O programa exemplo1 abaixo comuta um led conectado no pino B7 a cada 0,5 segundo com
a função inverte_saida().
#include "SanUSB1.h"
#pragma interrupt interrupcao void interrupcao(){} void main(){ //Função necessária para habilitar o dual clock (48MHz para USB e 4MHz para CPU) clock_int_4MHz(); while(1){ // comuta Led na função principal tempo_ms(500); inverte_saida(pin_b7); } }
Figura 5. 1: Prática 1 - Pisca LED, montada em protoboard.
41
41 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Para modificar o tempo de pisca do LED é necessário alterar o valor 500 entre
parênteses na função tempo, como por exemplo para: tempo_ms(1000);
Com esta nova programação, o LED piscará a cada 1 segundo, considerando que o
comando está em milissegundos.
OBS: para inserir comentários no programa, deve-se inserir antes: //
Pode-se reduzir o programa em linguagem C substituindo as funções:
nivel_alto(pin_b7); //coloca a saída B7 em nivel lógico alto, ou seja, acende LED
tempo_ms(500);//aguarda 500 milissegundos = 0,5 segundos
nivel_baixo(pin_b7); //coloca a saída B7 em nivel lógico baixo, ou seja, apaga LED
tempo_ms(500); //aguarda 500 milissegundos = 0,5 segundos
Pelas funções:
Inverte_saida(pin_b7); //alterna pino B7 entre nivel lógico baixo e alto: pisca o LED
tempo_ms(500); //aguarda 500 milissegundos = 0,5 segundos
PRÁTICA 2 – PISCA 3 LEDS
Considerando o aprendizado das funções da prática 1, insira mais 2 LEDs ao circuito
SanUSB (pinos b6 e b5, por exemplo) e programem o PIC para piscar os 3 LEDs em
sequência.
42
42 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Figura 5. 2: Esquemático Prática 2.
Figura 5. 3: Prática
43
43 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
Figura 5. 4: Prática 2 - Pisca 3 LEDs, montada em protoboard.
O código abaixo é uma sugestão:
#include "SanUSB1.h"
//Tem que estar declarado no firmware.c #pragma interrupt interrupcao void interrupcao(){ } void main(){ clock_int_4MHz(); //LAÇO INFINITO while (1) { nivel_alto(pin_b7); //SAIDA ALTA NO PINO B7 - LED ACENDE tempo_ms(500); //ATRASO 0,5 SEG nivel_baixo(pin_b7); //SAIDA BAIXA NO PINO B7 - LED APAGA tempo_ms(500); //ATRASO 0,5 SEG nivel_alto(pin_b6); //SAIDA ALTA NO PINO B6 - LED ACENDE tempo_ms(500); //ATRASO 0,5 SEG nivel_baixo(pin_b6); //SAIDA BAIXA NO PINO B6 - LED APAGA tempo_ms(500); //ATRASO 0,5 SEG nivel_alto(pin_b5); //SAIDA ALTA NO PINO B5 - LED ACENDE tempo_ms(500); //ATRASO 0,5 SEG nivel_baixo(pin_b5); //SAIDA BAIXA NO PINO B5 - LED APAGA tempo_ms(500); //ATRASO 0,5 SEG } }
44
44 Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais
É possível também alterar a frequência dos LEDs. Como exercício para avaliar o
aprendizado, tente elaborar um programa para piscar o LED do pino b7 uma vez a cada 1
segundo, o LED do pino b6 duas vezes a cada 0,5 segundos e o LED do pino b5 três
vezes a cada 0,1 segundos, utilizando apenas as funções vistas até o momento.
Após isto deve ser passado aos alunos o conceito de laço de repe