Busque no blog

domingo, 7 de julho de 2013

Zilog - ZDSII a IDE de programação free em C. - 1ª Parte

Zilog - Acendendo um LED com Z8 encore XP! - Parte 1 




_________________________________________________________________________________
Abrindo e programando com o ZDSII
_________________________________________________________________________________

           Neste artigo vamos nos concentrar na IDE da Zilog, o ZDSII que tem versão para a linha Z8 encore e ZNEO, além das demais linhas desta empresa. Vamos começar um programa para ligar e fazer piscar um LED além de outras funcionalidades que o programa e a IDE permitirem. Espero que venha a ser muito útil aos nossos leitores e ficamos aguardando seus comentários.
          Em www.zilog.com, na aba da figura a seguir é possível adquirir a IDE diretamente no site do fabricante e sempre nas versões atualizadas.


          Depois de fazer o download, instalar e abrir o programa, vamos por a mão na massa. Na figura a seguir temos o programa aberto, se conseguiu acompanhar o último post, deve saber como abrir e usar o ZDSII, então vamos lá.


          A partir de agora vamos nos concentrar no programa partindo do esquemático do projeto, este consiste no desenho a seguir que mostra a ligação dos LEDs ao Z8F0822 e valores dos resistores.



          Não vamos discorrer sobre o circuito completo, o mesmo se chama um150.pdf e pode ser encontrado no site da Zilog em www.zilog.com e pode ser baixado gratuitamente. Se o fez, vamos comentar o código e fazer o led acender conforme.
          Com o ZDSII aberto, vamos criar um projeto no local de instalação do programa na pasta samples.
          Nesta pasta, vamos criar uma nova pasta ou subpasta de nome "projeto_novo" e vamos dar um nome ao projeto como sendo "novo_projeto", conforme imagem a seguir e os passos descritos.


          Logo depois, sua pasta ficara como a figura seguinte descreve.


          E temos nossa nova pasta de projetos que vamos criar do zero.


          Depois clicamos em "Select" e temos nossa nova pasta, prontinha para ser usada e abusada. Agora vamos começar a fazer nosso projeto e ver o led funcionar.

Criando um projeto executável. 


  • No MENU selecione "File" -> "New Project". (Na caixa que se abre, deixe como na figura a seguir, porém deve dar um nome ao projeto que foi escolhido como sendo "novo_projeto" clicando no quadradinho a direita com pontinhos dentro do lado de "Project Name").
  • Na janela que se abre, conforme a figura abaixo, deixe como está e clique em "Next".



  • Na figura que se abre, marque ou com final KIT ou KITG. Em "Setup" marque a frequência do seu cristal. Em "Debug Tool" selecione "SerialSmartCable" e no seu "Setup", marque "Baud Rate - 57600" e o "Port" vai depender da sua porta serial ou física ou emulada com cabo USB - SERIAL. Clique em "Next" depois "Next" novamente e finalmente em "Finish".

          O ZDSII criou um arquivo de projeto "novo_projeto.zdsproj" e é nesse projeto que vamos trabalhar, criando nosso programa para ser compilado e rodar na placa que estiver a MCU Z8F0822 da zilog.

Adicionando um arquivo fonte ao projeto.

  • No Menu, clique em "File" -> "New File". Abre uma janela em branco dentro da IDE e é nessa janela que vamos escrever nosso programa e fazer o led funcionar. Antes vamos fazer uma brincadeira para que se possa fixar a real maneira de trabalhar com esses microcontroladores.
  • Agora vamos salvar o arquivo, mesmo vazio, para ter um nome e podermos acrescentar ao projeto. Para isso, podemos pressionar "ctrl-s", clicar na figura "Save As" ou no menu em "File" -> "New File". Ao abrir a janela "Save As" edite um nome para o arquivo. Aqui, vamos trabalhar com C inicialmente, para que o arquivo fique menor e mais compreensível aos programadores de outros microcontroladores. Posteriormente, o mesmo arquivo poderá ser em asm. No nosso caso é "novo_projeto.c".
  • No menu e em "Project" -> "Add Files", escolha o arquivo que acaba de criar, ou seja, novo_projeto.c . Clique em Add e pronto.
          Agora temos um arquivo fonte no projeto atual, vamos incluir algumas linhas de código e fazer a compilação para ver o que ocorre. Escreva, na parte em branco que se abriu, ou o arquivo novo_projeto.c o texto a seguir :
          Salve o arquivo e clique em "Build" no Menu e em "Build" ou pressione F7 para compilar e montar o projeto. Aguarde um pouco e verá na aba de baixo o texto "Build Succeeded", indicando que a compilação foi bem sucedida, conforme texto abaixo : 

OUTPUT CHECKSUM
=============== 
novo_projeto.hex 8452 
novo_projeto.lod 8452 
Build succeeded.
    Aqui, vamos mostrar como configurar o PORT ou pinos do microcontrolador conforme desejarmos, como estamos usando um LED, configuraremos os pinos para "High Drive output", colocar os bits dos pinos em nível alto ou baixo ou o PORT todo, caso seja desejado. Fazer com que cada pino ou bit funcione independente dos outros do mesmo port, fazer operações lógicas e aritméticas e criar funções que agreguem mais recursos ao programa.
          
Acessando os pinos do PORTx (  x = A~C )        

          Para acessar os PORTS ou pinos do microcontrolador da linha Z8 ENCORE, acessamos de fato os registros de memórias mapeadas, isso quer dizer que podemos escrever ou ler dados dessas regiões de memórias onde os dados podem ser transferidos de ou para registros especiais que exercem funções específicas. Esses registros estão conectados de alguma forma aos pinos ou PORTs e alteram suas operações ou comportamento. Vamos acessar um PORT ou pinos que consigam drenar muita corrente elétrica e colocar este em modo saída, pois vamos acionar um LED ou LEDs e faremos isso em linguagem de programação C ou ASM. No programa anterior, criamos um arquivo e o compilamos e montamos, agora é incluir trechos de código que correspondam com a ação que queremos, no nosso caso o arquivo , que contem informações sobre o mnemônico do código e permitirá que este compile sem erro. Inclua no topo do código este a chamada deste arquivo como se segue : 

#include 
void main(void)                    // Função principal do programa
                  {
                   PAOUT = 0xFF; // nome do PORT em maiúsculo.
                   PAOUT = 0x00 ; // Toda linha termina em ; se não for função. 
                   PAOUT = 0xFF ; // 0xFF =11111111 e 0x00 = 00000000 em binário.
                   return ; // não é nome de registro, por isso é minúsculo.
                   }

O arquivo de cabeçalho ez8.h

          Arquivo de cabeçalho, quando apropriadamente usados em linguagem C são fundamentais para gerar interfaces entre os registros e dar nomes aos operandos e registros. São fundamentais para definir o hardware e o software para um funcionamento perfeito, pois permitem que longas extensões de programas fiquem em um arquivo em separado e apenas chamado pelo programa principal com "#include". Para o nosso caso, estamos definindo o PORTA com valor 0xFF que é 1 nos oito bits e 0x00, que é zero, em todos os 8 pinos do microcontrolador no PORTA. Isso é definido dentro do arquivo ez8.h como é mostrado neste trecho de código: 

#define PAOUT  (*(unsigned char volatile far*)0xFD3)

          O endereço do registro de saída do PORTA é, em hexadecimal, FD3 e por isso não precisamos definir este endereço no nosso código, uma vez que já é pre definido no arquivo de cabeçalho ez8.h. Quando escrevemos PAOUT = 0x00, estamos, de fato, escrevendo (*(unsigned char volatile far*)0xFD3) = 0x00. Observe como seria mais dispendioso escrever isso em um código complexo. Por este motivo, o arquivo de cabeçalho já o fez, deixando que a gente apenas referencie o que ele definiu em "#define", que é "PAOUT=0x00".
          Agora vamos compilar o programa e montar com F7 e teremos como resposta no quadro do rodapé, "Build succeeded" indicando que o arquivo foi compilado e montado com sucesso. 
          Se você executar o programa em modo DEBUG, vai perceber que o programa roda normalmente com as mudanças de valores nos registros do PORTA, porém se baixar o código gerado para o microcontrolador,os LEDs continuarão apagados. Isso foi de propósito. Antes de acender os LEDs, vamos a mais lições, para compreender como funcionam as outras opções de registros em modo propósito geral e função alternativa, pois cada pino pode exercer mais de uma função mas nem sempre ao mesmo tempo. 
          
                                                                     Continua .... 

Nenhum comentário:

Postar um comentário