Upload
edmoretto
View
29
Download
0
Tags:
Embed Size (px)
Citation preview
UNIVERSIDADE FEDERAL DO ESPRITO SANTO CENTRO TECNOLGICO
DEPARTAMENTO DE ENGENHARIA ELTRICA PROJETO DE GRADUAO
MULTIPROGRAMADOR SERIAL COM POSSIBILIDADE DE
INTERFACE USB
THIAGO ZAMBOM PICOLI
VITRIA - ES Maro/2006
THIAGO ZAMBOM PICOLI
MULTIPROGRAMADOR SERIAL COM POSSIBILIDADE DE INTERFACE USB
Parte escrita do Projeto de Graduao
do aluno Thiago Zambom Picoli,
apresentado ao Departamento de
Engenharia Eltrica do Centro
Tecnolgico da Universidade Federal
do Esprito Santo, para obteno do
grau de Engenheiro Eletricista.
VITRIA - ES Maro/2006
THIAGO ZAMBOM PICOLI
MULTIPROGRAMADOR SERIAL COM POSSIBILIDADE DE INTERFACE USB
COMISSO EXAMINADORA:
Prof Dr. Hans-Jorg Andreas Schneebeli Orientador
Prof MsC. Ccero Romo Cavati Examinador
Eng. Paulo Roberto Vargas de Souza Examinador
Vitria ES, Maro de 2006
i
DEDICATRIA
A Deus, aos meus pais, minha irm, meus familiares,
minha namorada e famlia, a todos os meus amigos da
Engenharia que dividimos as alegrias e tristezas, s pessoas
que sempre estiveram e estaro ao meu lado, e em especial a
minha av Jayra e ao meu tio Alemo que fizeram parte da
minha vida.
ii
AGRADECIMENTOS
Agradeo a Deus primeiramente, pela fora que me deu para conseguir terminar
este difcil curso.
A todos que contriburam direta ou indiretamente para que este trabalho fosse
realizado.
Agradeo ao Professor e Orientador Hans-Jorg Andreas Schneebeli por sua
disponibilidade, dedicao e pacincia. Aos professores da Instituio UFES pelo
conhecimento. Ao Professor Ccero Romo Cavati e ao Engenheiro Paulo Roberto Vargas
de Souza pela participao na banca examinadora. Ao Professor Jos Leandro e Professora
Jussara pelo apoio e considerao.
Ao Ney, Guto, e funcionrios do CT II pela boa vontade e carinho que sempre
tiveram.
iii
LISTA DE FIGURAS
Figura 1 - Bloco das interfaces. ................................................................................ 8
Figura 2 - Mdulo programador. ............................................................................... 9
Figura 3 - Viso geral do sistema. .......................................................................... 10
Figura 4 - HyperTerminal. ...................................................................................... 11
Figura 5 - Microcontrolador Motorola. .................................................................... 12
Figura 6 - Interface serial. ...................................................................................... 13
Figura 7 - Tenses e sua converso ...................................................................... 14
Figura 8 - Forma do sinal. ...................................................................................... 15
Figura 9 - Parte interna do cabo USB. ................................................................... 16
Figura 10 - Codificao do sinal USB .................................................................... 16
Figura 11 - Foto do Mdulo do Programador. ........................................................ 17
Figura 12 - Pinagem do PIC. ................................................................................. 19
Figura 13 - Foto do Mdulo a ser programado. ...................................................... 19
Figura 14 - Blocos do Sistema. .............................................................................. 20
Figura 15 - Fluxograma da programao. .............................................................. 21
Figura 16 - Velocidade de transmisso. ................................................................. 23
Figura 17 - Fluxograma para programar no PIC. ................................................... 24
Figura 18 - Modo de envio dos dados. ................................................................... 25
Figura 19 - Intervalo de envio. ................................................................................ 25
Figura 20 - Parte inferior do mdulo de programao. ........................................... 26
Figura 21 - Kit da Motorola para testes. ................................................................. 27
Figura 22 - Mdulo a ser programado. ................................................................... 28
Figura 23 - Roteamento do mdulo de programao. ............................................ 30
Figura 24 - Esquemtico do mdulo do programador. ........................................... 31
Figura 25 - Circuito do mdulo a ser programado. ................................................. 33
iv
1 GLOSSRIO
CPU - Unidade Central de Processamento.
ASCII - (American Standard Code for Information Intercharge) um conjunto de cdigos
para o computador representar nmeros, letras, pontuao e outros caracteres.
SCI - Serial Communication Interface o controlador da porta serial assncrona, tal como o encontrado num computador pessoal.
HDLC - High Level Data Link Control, protocolo.
I/O - Input/Output (entrada/sada), dados recebidos ou enviados.
LSB - Less Significative Bit (Bit Menos Significativo), bit menos significativo de um
registro.
MSB - More Significative Bit (Bit Mais Significativo), bit mais significativo de um registro.
RAM - Random Access Memory, Memria de Acesso Aleatrio.
RISC - Reduced Instruction Set Computer, processador que a quantidade de instrues que
ele pode executar foi diminuda para permitir uma freqncia de trabalho mais rpida.
menos
v
SUMRIO
DEDICATRIA ........................................................................................................... I AGRADECIMENTOS ................................................................................................ II LISTA DE FIGURAS ................................................................................................ III 1 GLOSSRIO ...................................................................................................... IV SUMRIO................................................................................................................. V 2 INTRODUO...................................................................................................... 8
2.1 Motivao .................................................................................................... 8
2.2 Definio do Problema ................................................................................. 9
2.3 Metodologia ................................................................................................. 9
3 DESCRIO DA SOLUO ............................................................................. 10 3.1 Definio do Hardware .............................................................................. 10
3.2 Definio de Software ................................................................................ 11
4 DESCRIO DO HARDWARE .......................................................................... 12 4.1 Escolha do Microcontrolador ..................................................................... 12
4.2 Alimentao ............................................................................................... 13
4.3 Interface Serial ........................................................................................... 13
4.4 Interface USB ............................................................................................. 15
4.5 Mdulo Programador ................................................................................. 16
4.6 Mdulo a ser Programado ......................................................................... 18
5 DESCRIO DO SOFTWARE........................................................................... 20 5.1 Sequncia do funcionamento do software ................................................. 20
5.2 Exemplo de um programa para PIC e seu arquivo .hex gerado .............. 21
5.3 Software do Sistema (mdulo programador) ............................................. 23
5.3.1 Interface de Comunicao Serial ...................................................... 23
5.3.2 Programa Auxiliar (Extrao dos dados atravs do arquivo .hex) .. 23
5.3.3 Mdulo de Programao (Envio dos dados e comandos para o PIC)24
5.4 Programando um outro microcontrolador .................................................. 25
6 CONSTRUO E TESTES ................................................................................ 26 6.1 Confeco dos Mdulos ............................................................................ 26
6.2 Testes ........................................................................................................ 27
7 CONCLUSES E TRABALHOS FUTUROS ..................................................... 29
vi
APNDICE A .......................................................................................................... 30 APNDICE B .......................................................................................................... 33 APNDICE C .......................................................................................................... 34 APNDICE D .......................................................................................................... 35 APNDICE E ........................................................................................................... 39 APNDICE F ........................................................................................................... 42 8 REFERNCIAS BIBLIOGRFICAS .................................................................. 45
vii
RESUMO
Este projeto apresenta um dispositivo de programao de microcontroladores, que
se conecta a um PC usando porta serial ou USB.
Para tanto, aborda a construo de um hardware que possua portas USB e serial,
que comunique com o computador PC e com o mdulo a ser programado, e o
desenvolvimento de software que gerenciem todos estes mdulos.
Neste trabalho mostrado hardware e software necessrio para a programao de
um PIC usando conexo da porta serial com o PC.
A conexo via USB parte de um outro projeto. Tambm so mostradas as
modificaes necessrias para a programao de um Motorola da famlia MC68HC908.
8
2 INTRODUO
A comunicao entre sistemas est passando por um grande avano e
conseqentemente por mudanas. Um exemplo a programao de microcontroladores,
microprocessadores e memrias, as quais h alguns anos eram programadas atravs das
portas serial e paralela. Hoje, com o avano da tecnologia, os novos computadores no so
obrigados a serem comercializados com estas portas disponveis. Assim, a tendncia ser a
comunicao USB dominar este mercado.
2.1 Motivao
Este projeto visa ampliar o conhecimento diante do uso de outros
microcontroladores, compiladores e programadores.
Dessa forma, o objetivo estabeler um link entre o computador e o
microcontrolador a ser gravado. Assim, a Figura 1 apresenta os blocos das interfaces, na
qual o mdulo programador comunica-se com o PC o mdulo a ser programado.
Figura 1 - Bloco das interfaces.
9
2.2 Definio do Problema
O problema a ser abordado neste trabalho o desenvolvimento de hardware e
software para a programao de um microcontrolador localizado em um sistema em
construo, a partir do hardware de uma placa com interface USB.
O trabalho engloba a interface via serial com o PC (a interface USB objeto de um
outro trabalho), o hardware e software necessrios para a programao de microcontrolador
(PIC).
Devero ser mostradas as modificaes necessrias para a programao de um
outro microcontrolador (famlia MC68HC908).
2.3 Metodologia
O trabalho ficou dividido em 5 partes.
- Escolha do microcontrolador;
- Modificao do hardware do mdulo programador;
- Hardware do programador PIC
- Software de programao do PIC;
- Software de interface serial.
Em suma, a proposta desenvolver um sistema como mostra a Figura 2.
Figura 2 - Mdulo programador.
10
3 DESCRIO DA SOLUO
Por se tratar de um projeto complexo, onde envolve vrias etapas, foi necessrio
muito estudo e pesquisa, principalmente em sites, para que pudesse definir qual o hardware
que teria uma estrutura para comportar todas estas interfaces, e tambm, houvesse condies
de constru-lo.
Dessa forma, foi necessrio um hardware para a comunicao PC Programador e um outro para a comunicao Programador PIC.
Um dos objetivos deste projeto tambm criar somente um software que funcione
internamente no mdulo de programao. Dessa forma a idia seria utilizar o software que
existe em qualquer computador para facilitar a instalao do mdulo de programao. Ento
optou-se em utilizar o HyperTerminal, que uma tentativa de no fazer um programa no
PC, seja ele feito em DOS ou em alguma linguagem orientada a objeto e colocar todas
software implementado no mdulo programador definindo no HyperTerminal a taxa de
transmisso dos dados, o controle de fluxo, etc.
Assim, a maior parte do software ficou dentro do mdulo de programao
(microcontrolador Motorola). Na seo seguinte so apresentadas, em detalhe, as duas
partes do projeto.
3.1 Definio do Hardware
O sistema escolhido composto basicamente por dois mdulos que so o mdulo
programador e o mdulo a ser programado, como mostra a Figura 3.
Figura 3 - Viso geral do sistema.
11
O mdulo programador pode ser alimentado atravs do barramento USB (5 V), ou
de uma fonte externa entre 9V e 12V.
No caso do circuito do PIC, utilizado 12V para aliment-lo.
3.2 Definio de Software
Devido facilidade de programar e possuir diversas ferramentas para compilao,
foi utilizada a linguagem C para desenvolver as rotinas de programao, onde todas essas
rotinas sero executadas no microcontrolador Motorola. Uma parte dessas rotinas utilizar a
linguagem assembly, na parte de implementao da interface SCI, visto que, este Motorola
no tem implementado.
O programa que far a comunicao entre o PC e o mdulo de programao ser o
HyperTerminal. Dessa forma, o mdulo programador poder ser utilizado em qualquer PC
sem a necessidade de instalao de algum software no PC, visto que o HyperTerminal j
implementado no PC. Este programa enviar os arquivos do computador para o mdulo
programador. A Figura 4 retrata o Hyperterminal.
Assim, um dos objetivos, concentrar todo o software no mdulo programador.
Figura 4 - HyperTerminal.
12
4 DESCRIO DO HARDWARE
O sistema composto por dois mdulos: programador e mdulo a ser programado.
A separao em mdulos baseada nas caractersticas dos componentes que compem,
diminuindo as interferncias, e facilitando a troca de outros microcontroladores para serem
programados.
4.1 Escolha do Microcontrolador
o mais importante dos componentes. nele que todo o processo gerenciado. O
Microcontrolador utilizado foi o MC68HC908JB8 [1] da Motorola (Freescale) na qual o
principal motivo de sua escolha, como anteriormente mencionado, foi a existncia de um
hardware integrado para a comunicao USB.
Este microcontrolador possui as seguintes caractersticas:
3 MHz de freqncia no barramento interno;
8 kbytes de memria FLASH;
256 bytes de memria RAM;
Tenso de 3.3V para os pinos de input/output (I/O);
13 pinos de entrada/sada;
Encapsulamento de 20 pinos;
Especificao do barramento USB 1.1 com taxa de velocidade prximas de 1.5
Mbps;
Baixo consumo (1W).
Na Figura 5, observamos o encapsulamento do motorola:
Figura 5 - Microcontrolador Motorola.
13
4.2 Alimentao
A alimentao do circuito dever ser de 12V para os dois mdulos. Foi, ento,
utilizada uma fonte externa para isso.
Esta tenso foi estabelecida principalmente para a gravao do PIC, pois no caso do
mdulo programador, poderia ser utilizada a prpria tenso existente na Interface USB que
de 5V, pois a placa possui um jumper para o usurio escolher da onde quer obter a
alimentao. Por segurana, para no ocorrer algum erro e queimar a porta USB dos
computadores utilizados no Projeto, os testes foram feitos utilizando uma fonte DC externa
de 12V. No mdulo de programao e no mdulo a ser gravado foram colocados
reguladores de 5V e 3,3V para solucionar este problema.
4.3 Interface Serial
A Figura 6 apresenta a interface serial utilizada para fazer a gravao do programa
do PC no microcontrolador.
Figura 6 - Interface serial.
A interface serial (RS-232) possui dois sinais de comunicao sendo o Tx aquele
que envia e o Rx o que recebe. O nvel do diferencial binrio comparado com a tenso do
terceiro sinal GND.
14
Originalmente, as taxas de transferncia de dados eram de 9600 bps para a
porta serial. A partir de meados da dcada de 90, a porta foi aperfeioada. As portas
seriais passaram a transmitir a 115 Kbps.
No protocolo de comunicao RS-232, caracteres so enviados um a um como um
conjunto de bits. A codificao mais comumente usada o "start-stop assncrono" que usa
um bit de inicio, seguido por sete ou oito bits de dados, possivelmente um bit de paridade, e
um ou dois bits de parada sendo, ento, necessrios 10 bits para enviar um nico caracter.
Tal fato acarreta a necessidade em dividir por um fator de dez a taxa de transmisso para
obter a velocidade de transmisso. A alternativa mais comum ao "start-stop assncrono" o
HDLC. O padro define os nveis eltricos correspondentes aos nveis lgicos um e zero, a
velocidade de transmisso padro e os tipos de conectores.
O conversor utilizado o MAX 3232, no qual o sinal TX do PC conecta no pino 13
(R1in) e o sinal RX conecta no pino 14 (T1out). Dessa forma, o sinal sai pelo pino 12 e
conecta-se ao pino 19 (PTA0) do microcontrolador. [10]
Os sinais apresentam a codificao NRZ (do ingls no return to zero). Os
valores de tenses convertidos esto correlacionados na Figura 7 e o forma dos sinais na
Figura 8.
Figura 7 - Tenses e sua converso
15
Figura 8 - Forma do sinal.
4.4 Interface USB
USB a abreviao de Universal Serial Bus, barramento srie universal para a
ligao de perifricos a um PC.
Atravs do USB podemos adicionar perifricos ao computador sem termos de abrir
a CPU para instalar uma placa, ou seja, sem se preocupar em ter um slot vago. Com a porta
USB, no existe esse problema, a instalao de um novo dispositivo automaticamente
detectada sem a necessidade de efetuar o reset no PC.
O barramento USB, verso 1.1, transmite a 1,5 MBps (ou 12Mbps), existindo a
possibilidade de acoplar dezenas de perifricos a cada porta mediante a utilizao de hubs,
dispositivos que permitem mais encaixes.
O cabo de ligao dos dispositivos USB constitudo por 4 condutores, dois
condutores para a transmisso do sinal e outros dois para alimentao, designados
respectivamente: D+ e D-, para a transmisso de sinal. A Figura 9 detalha a parte interna do
cabo USB. Os condutores Vbus e GND servem para alimentar os dispositivos ligados nos
barramentos, na qual a tenso de Vbus de +5V, na origem. A distncia que o cabo USB
poder ter de poucos metros (em torno de 5m), dependendo das especificaes do cabo, de
modo a garantir os nveis das tenses de entrada em valores apropriados. Devem ser
16
consideradas as terminaes dos cabos. Estas terminaes tambm permitem a deteco de
dispositivos ligados no barramento e efetuam a distino entre dispositivos que funcionam a
taxas de transmisso a 12Mb/s e a 1,5 Mb/s.
Figura 9 - Parte interna do cabo USB.
O mtodo de transmisso utilizado o NRZI (Non Return to Zero Invert) para
codificao de dados seriais, no qual zeros e uns so representados pelo oposto em
voltagem, alta e baixa, alternada onde no h retorno para a voltagem zero (referncia) entre
bits codificados. [12] Estes sinais podem ser observados na Figura 10.
Figura 10 - Codificao do sinal USB
4.5 Mdulo Programador
O mdulo programador teve o seu roteamento desenvolvido no programa Eagle, no
qual o seu roteamento e o esquemtico encontram-se no Apndice A.
17
O objetivo deste hardware de servir de ponte entre o computador e o
microcontrolador que deseja gravar, que no caso ser o PIC, mas poderia ser outro, como
por exemplo, o Motorola, etc.
A maior importncia deste mdulo a sua capacidade de ser utilizado para outros
projetos, pois como ele foi feito de forma independente, no futuro podem ser feitos projetos
utilizando a sua interface USB, e vrias outras coisas. S para testar este mdulo, foram
feitos programas para acender uma seqncia de Leds, levantar e abaixar pinos, etc.
Dessa forma, como ele ser doado Ufes, fica a critrio dos professores de como
utiliza-lo no futuro.
Neste mdulo encontra-se o microcontrolador MC68HC908JB8 [1], o conversor
MAX3232, capacitores, resistores, diodos, regulador e conectores para alimentao e
transmisso de sinais.
A Figura 11 apresenta a foto do mdulo.
Figura 11 - Foto do Mdulo do Programador.
18
Agora, sero detalhadas algumas caractersticas de funcionamento deste mdulo. O
smbolo * representa o modo normalmente utilizado.
- Jumper JP1: 2-3 Reg. de 5V externo. * 1-2 Tenso de 5V do barramento USB.
- Jumper JP2: 2-3 Reg. de 3,3V externo. * 1-2 Reg. interno do microcontrolador.
- Jumper JP3: 3-4
5-6 Utilizados no modo de gravao. 7-8
4.6 Mdulo a ser Programado
Foi escolhido o PIC 16F873 [7] para ser gravado.
Este circuito foi montado num protoboard para testes e o esquemtico encontra-se
no Apndice B.
O PIC um chip produzido pela Microchip, na qual apresenta as seguintes
caractersticas:
At 20 MHz de freqncia de operao;
4 kbytes de memria FLASH;
192 bytes de memria RAM;
128 bytes de memria EEPROM;
Tenso de 5,0V para os pinos de input/output (I/O);
22 pinos de entrada/sada;
Encapsulamento de 28 pinos;
Baixo consumo.
Na Figura 12, observamos o encapsulamento do PIC:
19
Figura 12 - Pinagem do PIC.
A Figura 13, apresenta a foto do circuito no protoboard utilizado para fazer sua
programao.
Figura 13 - Foto do Mdulo a ser programado.
Na programao do microcontrolador PIC sero usados 6 fios que representam os
sinais de dados, clock, direo, ACK, GND e Vpp. Observar o Apndice B.
20
5 DESCRIO DO SOFTWARE
5.1 Sequncia do funcionamento do software
A Figura 14, mostra todos os blocos do sistema.o sistema todos
Figura 14 - Blocos do Sistema.
Primeiramente, o programa que o usurio quer que envie para o PIC pode ser escrito
num compilador similar ao PIC C Compiler. Nele o usurio digitar todos os comandos e
rotinas que ao compilar gerar o arquivo .hex.
Dessa forma, o usurio utilizar o HyperTerminal para enviar este arquivo atravs da
porta serial para o mdulo programador (Motorola).
No modo programador, ter algumas rotinas que implementam a interface de
comunicao serial (SCI) inexistente neste microcontrolador da Motorola e que foram
descobertas depois de ter escolhido este microcontrolador.
Posteriormente, aquele arquivo .hex ser recebido pelo Motorola ter os seus
dados extrados do arquivo.
Finalmente, esses dados extrados sero enviados juntamente com outros comandos
para a programao do PIC.
Dessa forma, os prximos tpicos detalharo essas etapas ditas anteriormente e
resumidas na Figura 15.
21
Figura 15 - Fluxograma da programao.
5.2 Exemplo de um programa para PIC e seu arquivo .hex gerado
Foi utilizado o Programa PIC C Compiler para desenvolver o programa que ser
gravado no PIC.
Para testes, foi criado um pisca leds para verificar o funcionamento. Este programa
encontra-se no Apndice C.
Quando compila o programa, automaticamente gerado um arquivo com extenso
.hex.
22
Este tipo de formato facilita o envio da informao. Este arquivo apresenta 6
campos, no qual cada caractere em ASCII convertido em 2 caracteres em hexadecimal
representando 1 byte ou 8 bits.
Para exemplificar como funciona o arquivo .hex, temos que:
:10010000214601360121470136007EFE09D2190140
:100110002146017EB7C20001FF5F16002148011988
:10012000194E79234623965778239EDA3F01B2CAA7
:100130003F0156702B5E712B722B732146013421C7
:00000001FF
Analisando a primeira linha, temos:
: 10 0100 00 214601360121470136007EFE09D21901 40
- : significa o cdigo de comeo;
- 10 em hex representa 16 em decimal indicando que temos 16 pares de
caracteres de dados;
- 0100 indica o local onde os dados seguintes sero carregados;
- 00 tipo registro de dados;
- 214601360121470136007EFE09D21901 representa os 16 pares de caracteres
de dados;
- 40 representa o Checksum do primeiro registro .hex.
O registro de terminao funciona desta forma:
: 00 0000 01 FF
- : significa o cdigo de comeo;
- 00 significa nenhum dado em registro de terminao;
- 0000 significa campo de endereo zerado;
- 01 tipo registro de terminao;
- FF representa o Checksum do registro de terminao.
Dessa forma, este arquivo enviado atravs do HyperTerminal localizado no
computador para o mdulo de programao Motorola.
23
5.3 Software do Sistema (mdulo programador)
O compilador utilizado para gravar o microcontrolador Motorola o Code
Warrior 5.0. A forma de comunicao do mdulo a MON08.
5.3.1 Interface de Comunicao Serial
Como j foi dito anteriormente, este microcontrolador no possui esta
interface chamada de SCI. Por causa disso, foi pesquisado na Internet vrias rotinas
que implementassem esta rotina. A maioria delas utilizava a linguagem Assembly,
pois por ser um microcontrolador de apenas 8 bits, a maior parte dos programas,
exemplos, datasheets era em Assembly.
O programa est descrito em Assembly na qual pode utilizar as velocidades
de comunicao descritas na Figura 16.
Figura 16 - Velocidade de transmisso.
As rotinas do programa encontram-se no Apndice D.
5.3.2 Programa Auxiliar (Extrao dos dados atravs do arquivo .hex)
No Apndice E, observamos a rotina para extrair os dados do arquivo .hex
gerado pelo compilador PIC C Compiler.
So estes dados que iro para o PIC.
24
5.3.3 Mdulo de Programao (Envio dos dados e comandos para o PIC)
Esta rotina localiza-se no Apndice F. Envia os dados de forma sncrona.
Os comandos so enviados no formato 6 bits e os dados no formato de 14 bits. As
funes de cada comando so:
- Start Bit Bit de Incio. - Set Vddp Coloca tenso no pino MCLR para liberar programao. - Load Data Manda os dados. - Begin Programming Envia comandos. - Read Data L os dados que foram enviados. - Data correct Verifica se os dados foram enviados corretamente.
Podemos entender melhor os comandos necessrios para a gravao no PIC atravs
do fluxograma da Figura 17.
Figura 17 - Fluxograma para programar no PIC.
25
5.4 Programando um outro microcontrolador
Fazendo algumas alteraes no programa, poder gravar, por exemplo um outro tipo
de Motorola. O importante pesquisar a forma que o microcontrolador tem que ser gravado
para que possa enviar na sada dos pinos a seqncia correta.
Utilizando o microcontrolador Motorola MC68HC908QY4, poderemos visualizar
como poderia ser feita a sua programao.
Sabendo que os dados tm que serem enviados de acordo com as Figuras 18 e 19,
poderia ser efetuada a seguinte lgica para o seu envio.
void envia (byte bit, int baud_rate) {
unsigned int x = (bit
26
6 CONSTRUO E TESTES
6.1 Confeco dos Mdulos
No mdulo de programao foi feito o esquemtico e o roteamento do circuito no
Eagle.
Por se tratar de uma placa de duas faces e com trilhas muito prximas, a parte da
confeco das trilhas e furos da placa foi feita em Belo Horizonte.
Os componentes foram soldados manualmente e alguns componentes foram
adquiridos em So Paulo.
As Figuras 11 e 20 mostram as trilhas da parte superior e inferior do mdulo
respectivamente.
Figura 20 - Parte inferior do mdulo de programao.
O mdulo a ser programado foi montado num protoboard. Ver Figura 13.
27
6.2 Testes
Foram realizados vrios testes comeando com um kit da Motorola fornecido pela
Ufes temporariamente para observar o funcionamento de um microcontrolador da motorola,
apesar de pertencer a uma outra famlia (QY).
A Figura 21 representa o kit utilizado para testes.
Figura 21 - Kit da Motorola para testes.
Foram feitos programas como, por exemplo, pisca leds para verificar o
funcionamento do mdulo de programao e obteve sucesso.
Foram efetuadas diversas pesquisas a respeito da comunicao USB tentando
compilar rotinas referentes a esta comunicao e outros, pois esta parte da comunicao
USB seria fornecida pelo projeto de graduao de um aluno. Como o aluno foi desistindo do
projeto aos poucos, resolveu-se trabalhar com a comunicao serial.
Ento, foi nesta hora que se descobriu que a interface de comunicao serial no
era implementada no microcontrolador. Assim, partiu-se para a busca dessas rotinas. Foram
muitas tentativas utilizando a linguagem C e at Assembly. Nesta ltima, esto ocorrendo
problemas, mas provavelmente decorrentes de problemas nos registros e por estar usando
28
num mesmo programa a linguagem C e a linguagem Assembly. Mas ainda esto sendo
feitos testes para resolver este problema.
Dessa forma, como o mdulo estava em perfeito funcionamento, mas no sabia se
o gravador de PIC estava, de ltima hora resolveu-se fazer o teste de gravao utilizando um
programa em DOS que fazia o link do gravador de PIC para o computador. Enfim, obteve
sucesso, e os dados enviados pelo computador foram recebidos pelo programador como
mostra a Figura 22.
Dessa forma foram feitos testes, compilaes, pesquisas para fechar a idia do
projeto.
Figura 22 - Mdulo a ser programado.
29
7 CONCLUSES E TRABALHOS FUTUROS
O sistema no estado em que se encontra capaz de transferir dados para a memria
Flash do PIC e capaz de comunicar via interface serial com o PC.
Este projeto poder ser utilizado por outros alunos, visto que o seu leque de
utilizao muito extenso, podendo ser aproveitado para:
- Desenvolvimento de projeto com comunicao USB;
- Gravao de outros microcontroladores;
- Execuo de programas complexos que exigem muita memria;
- Entre outros.
30
APNDICE A
A Figura 23 mostra o roteamento do mdulo de programao e a Figura 24 o
Esquemtico do mdulo do programador.
Figura 23 - Roteamento do mdulo de programao.
31
Figura 24 - Esquemtico do mdulo do programador.
32
Lista de Materiais do mdulo programador
Componentes Valores e Tipos Onde Comprar C1 10 F Fa, Gorza C4, C5 22 pF Fa, Gorza C2, C3, C6, C7, C8, C9, C10, C11, C12, C13, C15, C17, C18, C19
100 nF
Fa, Gorza
C14 4,7 F Fa, Gorza C16 100 F/25 V Fa, Gorza Z1 ZD8.2V Fa, Gorza D2 1N4004 Fa, Gorza IC1 MC68HC908JB8 Farnell (S. Paulo) IC2 MAX3232 Farnell (S. Paulo) IC5 Reg. 7805 [5] Fa, Gorza LDO1 TPS76933 (Reg. 3,3V) Pedido da Texas Instrum.
(Grtis) JP1 Header 1x3 Fa, Gorza JP2 Header 1x3 Fa, Gorza JP3 Header 2x5 Fa, Gorza JP4 Header 1x3 Fa, Gorza Q1 XTAL 6 MHz Fa, Gorza R1 10M Fa, Gorza R2, R3, R4, R5, R6 10 k Fa, Gorza R6 2.2 k Fa, Gorza R7 1.5 k/5 % (optional) Fa, Gorza RST, IRQ Push Button Fa, Gorza X1 Porta Fmea Serial Fa, Gorza X2 Porta Fmea USB Farnell (S. Paulo) X3 Power Jack Fa, Gorza X4 Header 2x8 Fa, Gorza X5 Header 2x8 Fa, Gorza
33
APNDICE B
A Figura 25 mostra o circuito do mdulo a ser programado e que montado no
protoboard.
Figura 25 - Circuito do mdulo a ser programado.
34
APNDICE C
Rotina para teste (pisca led) feita no computador utilizando o compilador PC C
Compiler. #include
#use delay(CLOCK=4000000)
#fuses xt,nowdt,NOPROTECT,put
main()
{
while(1)
{
output_high(pin_b0);
delay_ms(1000);
output_low(pin_b0);
delay_ms(1000);
}
}
Arquivo .hex gerado pela compilao do programa acima.
:1000000000308A00192800002730840000080319F6
:1000100018280130A100A001A00B0C28A10B0B286F
:100020004A30A000A00B122800000000800B092815
:10003000003484011F308305063083169F000610AC
:10004000831206140430A600FA30A7000420A60B81
:10005000242883160610831206100430A600FA30F6
:0E006000A7000420A60B2F2883161F2863007C
:02400E00F13F80
:00000001FF
;PIC16F873
35
APNDICE D
Rotina responsvel por estabelecer a comunicao do microcontrolador com o
Hyperterminal localizado no computador. Ela comumente chamada de SCI (Interface de
Comunicao Serial). ********************************************************************************* * ARCHIVO INCLUDE - SCI_TXRX.INC * * Rutinas para Comunicacion Serie Asincronica controladas por Soft.,aplicables * * a Microcontroladores de la Flia HC08 que no posean Modulo SCI. * * Caracteristicas:(p/fclk=9.8304Mhz, fbus=2.4576MHz, Ciclo T=0.406901useg) * * Operacion en Half Duplex * * Formato NRZ - N 8 1 * * Velocidad Seleccionable 2400, 4800, 9600, 19200, 38400, 57600 baudios * * Error en todos los casos menor al 1% (para 38400 baud, Error = 0) * ********************************************************************************* ********************************************************************************* * SACA_CARACTER - transmite la variable caracter por el pin TXD (Definido como Salida) * * Entrada - caracter, variable donde viene el dato a transmitir * * Pin TXD definido como SALIDA y TXD = 1 * * Salida - X, Acc, y caracter = Valor Indefinido * * Stack Usado - 2 Bytes * * Var. Usadas - caracter, almacena el dato a transmitir * * auxiliar, almacena el valor de X * * ROM Usada - 36 Bytes * ********************************************************************************* ; export symbols XDEF sci_send XDEF sci_recv ; Include derivative-specific definitions INCLUDE 'derivative.inc' ; Definicao de pinos usados na porta pta para simular pinos de e/s serial txd equ 1 rxd equ 2 ;-------------------------------------------------------------------------------- ; SELECCION DE VELOCIDAD DE TRANSMISION ;-------------------------------------------------------------------------------- baud_tx equ $20 ;Tabla de Seleccion de Baud Rate: ; baud_tx Velocidad ; $02 -> 57600 baudios ; $05 -> 38400 baudios ; $0e -> 19200 baudios ; $20 -> 9600 baudios ; $45 -> 4800 baudios ; $8f -> 2400 baudios ;-------------------------------------------------------------------------------- ; SELECCION DE VELOCIDAD DE RECEPCION ;-------------------------------------------------------------------------------- baud_rx equ $20 ; era $05 Tabla de Seleccion de Baud Rate: ; baud_rx Velocidad ; $02 -> 57600 baudios ; $05 -> 38400 baudios ; $0e -> 19200 baudios ; $20 -> 9600 baudios
36
; $45 -> 4800 baudios ; $8f -> 2400 baudios ; variable/data section MY_ZEROPAGE: SECTION SHORT ; Insert here your data definition. For demonstration, temp_byte is used. auxiliar: DS.B 2 caracter: DS.B 1 cuenta_bit:DS.B 1 ; code section MyCode: SECTION ; this assembly routine is called the C/C++ application sci_send: saca_caracter: stx auxiliar ;[3] guardo valor de X ldx #9 ;[2] bits por caracter (incluido bit start) clc ;[1] borra carry para enviar bit de start saca_bit_dato: bcc saca_0 ;[3] si cy=0, salta para sacar 0 bset txd,PTA ;[4] si no saca 1 (pta era ptb) bra otro_bit ;[3] saca_0: bclr txd,PTA ;[4] bra otro_bit ;[3] otro_bit: lda #baud_tx ;[2] jsr delay_7a ;[7a+9]demora=7*31+9=226T ror caracter ;[4] busca siguiente bit (va al carry) decx ;[1] bne saca_bit_dato ;[3] 8T vuelvo a sacar el sig bit saca_bit_stop: lda #baud_tx ;[2] Valor para TX a 19200 baudios lsra ;[1] A=baud_tx/2 divido en 2 a baud_tx bset txd,PTA ;[4] __| sube linea para bit de STOP jsr delay_7a ;[7a+9] demora=16T=6,51useg ldx auxiliar ;[3]recupero valor de X rts ;[4] ********************************************************************************* ********************************************************************************* * LEE_CARACTER - recive un dato por el pin RXD (siempre b0 de cualquier puerto) * * y lo devuelve en la variable caracter * * * * Entrada - El Pin RXD es definido como ENTRADA * * Salida - caracter, variable donde vuelve el dato recibido * * X, Acc Indefinidos * * Stack Usado - 2 Bytes * * Var. Usadas - caracter, almacena el dato Recivido * * cuenta_bit, variable temporal * * auxiliar, almacena el valor de X * * ROM Usada - 61 Bytes * *********************************************************************************
37
sci_recv: lee_caracter: stx auxiliar ;[3]guardo el valor de X lda #$8 ;[2]cant de bits del caracter sta cuenta_bit ;[3] clrx ;[1] lee_bit_start: brset rxd,PTA,* ;[5]espera el bit de start lda #baud_rx ;[2] ($08) lsra ;[1] divido/2 el baud rate jsr delay_7a ;[7A+9] brclr rxd,PTA,lee_b_dato ;[5]=24T->9,76useg (mitad del pulso) bra lee_bit_start ;[3] lee_b_dato: lda #baud_rx ;[2]\ nsa ;[3] \ nsa ;[3] > Demora p/complementar 12 cicl.T nsa ;[3] / q/faltan a la 1ra lectura (bit 0) nop ;[1]/ lee_bit_dato: lda #baud_rx ;[2] nop ;[1] nop ;[1] nop ;[1] jsr delay_7a ;[7a+9] lda PTA ;[3] ->> Lee dato del b0,ptb (RXD) rora ;[1] ror caracter ;[4] dec cuenta_bit ;[4] bne lee_bit_dato ;[3] lee_bit_stop: lda #baud_rx ;[3] sub #$02 ;[2] NOTA: p/57600 es (sub #$01) ???????????????? jsr delay_7a ;[7a+9] brset rxd,PTA,rx_ok ;[5] hasta aqui (7a+31)T A=1->38T=15,46us lda #$24 ; '$' -> caracter de error sta caracter rx_ok: ldx auxiliar ;[3] recupero el valor de X rts ;[4] ********************************************************************************* ********************************************************************************* * delay_7a - modulo de demora, sirve para calcular el tiempo en la velocidad de * * comunicacion * * Entrada - En el Acc. viene el modulo de demora, Dem.Tot.=(7*A+9) T * * Salida - Acc = 0 * * Stack Usado - 0 Bytes * * Var. Usadas - Ninguna * * ROM Usada - 7 Bytes * ********************************************************************************* delay_7a: nop ;[1] nop ;[1] tsta ;[1] deca ;[1]
38
bne delay_7a ;[3]= 7 cycles rts ;[4]=7a+4 cycles ***************************************************************************** #ifndef _SCI_ASM_H #define _SCI_ASM_H #ifdef __cplusplus extern "C" { /* our assembly functions have C calling convention */ #endif void sci_send(char c); char sci_recv(void); #ifdef __cplusplus } #endif #endif /* _MAIN_ASM_H */
39
APNDICE E
Rotina que tem a funo de extrair os dados do arquivo .hex // parte da rotina foi extraida da Referncia Bibliogrfica [2]. #include #include #define getch getchar #define putch putchar int tohex(c) { if( isdigit(c) ) return c-'0'; if( isxdigit(c) ) { if( isupper(c) ) return c-'A'+10; if( islower(c) ) return c-'a'+10; } return -1; } int hex16in() { int c = 0; int n = 0; int v = 0; /* get 1st char skipping extra chars */ do { c = getchar(); } while ( !isxdigit(c) ); v = tohex(c); n = 1; while( n < 4 ) { c = getch(); if( ! isxdigit(c) ) return -1; v
40
int type; int addr; char data[256]; } hexrecord; unsigned char chksum = 0; int hexreadrecord(struct hexrecord *p) { int c,n,a,t,i,d; while( (c=getch()) != EOF && (c != ':') ) {} if( c == EOF ) return -1; n = hex8in(); if( n < 0 ) return -1; chksum = n; a = hex16in(); if( a < 0 ) /* int must has be 32 bits */ return -1; chksum += (a&0xFF) + ((a>>8)&0xFF); t = hex8in(); if( t < 0 ) return -1; chksum += t; p->size = n; p->addr = a; p->type = t; for(i=0;idata[i] = d; } c = hex8in(); if( c < 0 ) return -1; chksum += c; if( chksum == 0 ) return 1; else return 0; } void printnibble( int x ) { x &= 0x0F; if( x < 10 ) putch(x+'0'); else putch(x-10+'A'); } void hex8out(int x) { x &= 0xFF; printnibble(x>>4); printnibble(x); } void hex16out(int x) {
41
hex8out(x>>8); hex8out(x); } void hexwriterecord(hexrecord *p) { int i; putch(':'); chksum = 0; hex8out(p->size); chksum += p->size; hex16out(p->addr); chksum += (p->addr&0xFF)+(((p->addr)>>8)&0xFF); hex8out(p->type); chksum += p->type; for(i=0;isize;i++) { hex8out(p->data[i]); chksum += p->data[i]; } hex8out(-chksum); putch('\n'); } int main(void) { int i,rc; hexrecord b; while( (rc=hexreadrecord(&b)) >= 0 ) { putchar('\n'); printf("tamanho = %d (%02XH)\n",b.size,b.size); printf("tipo = %d (%02XH)\n",b.type,b.type); printf("endereco = %04XH\n",b.addr); for(i=0;i
42
APNDICE F
Rotina que envia os dados e comandos para o PIC. // Rotina baseada na Referncia Bibliogrfica [3]. #include #include #include #include #include #define LINHAMAX 100 #ifndef MAXPATH #define MAXPATH 1025 //*************************************** // arquivo proginter.c #define BIT(N) ((1)0; i--) { /* delay between command & data */ for (f = 50000;f>0;f--){}; }; return 0; } //*************************************** static int picprog_write(int x) { PTA_PTA3 = 1; // pino de clock delay(10); PTA_PTA4 = x; // pino de dado
43
delay(10); // valor para tempo de envio PTA_PTA3 = 0; // pino de clock delay(30); // valor para tempo de envio return 0; } //*************************************** int main(void){ BYTE bytes[2]; //quando os dois bytes estiverem completos usa-se a rotina comando(bytes[]); } int comando(BYTE bytes[]){ // int seq; int dados = 0; // manda os dados p/ o pic int indice = 0; // endereo int dadospic; // l os dados do pic int erro; // int tamanho; int aux; for(indice = 0;indice < 2;indice++){ if (indice % 2 == 0) { aux = bytes[indice]; } else {seq = bytes[indice]; seq=seq & 0x3F; seq
44
// program command only, no data cycle delay (10); // 10 ms PIC programming time return 0; } //fim de else if else if ((cmd==LOAD_DATA) || (cmd==LOAD_DATA_DM) || (cmd==LOAD_CONFIG)) { // output 14 bits of data minidelay(200); picprog_write(0); // start bit //add for (i = 0; i < 14; i++) { // 14 data bits, lsb first picprog_write((data & DATABIT)); data >>= 1; } // fim de for picprog_write(0); // stop bit //add return 0; } // fim de else if else if ((cmd==READ_DATA) || (cmd==READ_DATA_DM)) { //read 14 bits from part, lsb first // set bits 001100, clock low, tri state data buffer // picprog_write(0x00); // delay between command & data minidelay(200); picprog_write(0); // start bit data = 0; for (i = 0; i < 14; i++) { // input 14 bits of data, lsb first // shift data for next input bit data >>= 1; picprog_write(DATABIT + 0x00); //databit em 1 para garantir alta impedncia no buffer picprog_write(DATABIT + CLOCKBIT + 0x00); picprog_write(DATABIT + 0x00); if(picprog_write()) data += 0x2000; } // fim de for picprog_write(0); // stop bit // return data; } // fim de else if } else {return PIC_PROG_EROR;} // programmer error { //} // fim de if --> adicionado return PROGMR_ERROR; // command error }
45
8 REFERNCIAS BIBLIOGRFICAS
[1] MC68HC908JB8 - DATASHEET [on line]. Disponvel:
URL: http://www.freescale.com/. [capturado em outubro de 2005].
[2] TB024 - DATASHEET [on line]. Disponvel:
URL: http://www.microchip.com/. [capturado em janeiro de 2006].
[3] PICPROG.ZIP - ROTINA [on line]. Disponvel:
URL: http://www.ele.ufes.br/~hans/. [capturado em dezembro de 2005].
[4] ESPECIFICAO DA PROGRAMAO - PDF [on line]. Disponvel:
URL: http://www.ele.ufes.br/~hans/. [capturado em dezembro de 2005].
[5] LINEAR REGULATORS 7805 - DATASHEET [on line]. Disponvel:
URL: http://www.ti.com/. [capturado em outubro de 2005].
[7] PIC16F873 - DATASHEET [on line].Disponvel:
URL: http://www.microchip.com/. [capturado em dezembro de 2005].
[8] DATASHEETS [on line]. Disponvel:
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=68HC908JB8&nodeId
=016246844976637583. [capturados em outubro de 2005].
[9] URL: MC68HC908QY4 - DATASHEET [on line]. Disponvel:
URL: http://www.freescale.com/. [capturado em outubro de 2005].
[10] URL: http://www.laercio.com.br/. [capturado em outubro de 2005].
[11] URL: http://www.usb.org/home. [capturado em outubro de 2005].
[12] URL: http://www.infowester.com/ usb.php. [capturado em outubro de 2005].
[13] URL: http://www.clubedohardware.com.br/. [capturado em outubro de 2005].