Multi Program Ad Or

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].