Introdução ao CodeWarrior IDE V6.3 – Mais básico impossível!

Infelizmente sempre fui uma péssima autodidata. Mas, depois de ingressar no mestrado, não tive outra alternativa; a maior parte do conhecimento adquirido durante a pós-graduação é mérito único e exclusivo seu. Então o negócio é arregaçar as mangas e ir a luta.

A minha batalha no momento tem sido aprender a programar os micros da Freescale. Mais especificamente os da família Flexis. Para isso, como já comentei com vocês em outros posts, eu acabei adquirindo o kit de desenvolvimento DEMOQE128.

Quando procuramos informações à respeito do processador que esse kit possui, percebemos que para alguém que está engatinhando no assunto o começo é bem complicado!

Pensando nisso e, como sempre, com aquela ânsia de disseminar meus conhecimentos, decidi a partir de hoje ir colocando passo-a-passo minhas descobertas e avanços com este kit. Meu intuito é ajudar aqueles que, assim como eu, estão partindo do zero.

Bom, então vamos lá.

O que é mais trivial do que apertarmos um botãozinho e um led acender?!!! Vamos aprender a fazer isso então?

A DEMOQE128 dispõe de 7 leds e 4 chavinhas que podemos habilitar ou não no hardware via alguns jumpers. Mas não vou ficar me atentando à parte física da minha placa. Quero focar no CodeWarrior para que assim, seja qual for o seu processador ou kit, você consiga reproduzir a programação descrita aqui.

O primeiro passo é iniciarmos um novo projeto. Para isso, ao abrirmos o CodeWarrior IDE aparecerá a seguinte tela. Caso você não consiga visualizar esta tela basta acessar o menu “File” e em seguida a opção “Startup Dialog…” e então ela aparecerá.:

clip_image002

Nela clique em “Create New Project”. A seguinte tela aparecerá:

clip_image004

Nela você deve escolher o processador que está utilizando. No meu caso tenho um MC9S08QE128. Escolho também o modo de comunicação. Como estou utilizando a interface USB do meu kit, escolho a opção “P&E Multilink / Cyclone Pro” e dou “Avançar”. A próxima tela será a seguinte:

clip_image006

Nela damos um nome ao nosso projeto (por pura falta de criatividade o chamei de ChaveLed.mcp) e através do botão “Set…” dizemos onde queremos que ele seja salvo. E mais uma vez, damos “Avançar”.

Na tela seguinte, o CodeWarrior nos dá a possibilidade de adicionarmos ao nosso projeto algum arquivo que queiramos com uma função já existente, por exemplo. Como não tenho nenhum arquivo à acrescentar, vou apenas dar “Avançar”.

clip_image008

A próxima tela é essa mostrada abaixo. Ela é bastante importante. Nela escolheremos a opção “Device Initialization” que é uma ferramenta do CodeWarrior que torna mais simples a inicialização do micro e seus periféricos. E desta vez, substituímos o avançar por “Concluir”.

clip_image010

O software criará todo o básico para o seu projeto. A seguinte tela deverá se abrir:

clip_image012

Vamos então ao botão “Select CPU Package” para definir o processador quanto ao seu encapsulamento. No meu caso é um MC9S08QE128CLH.

Bom, a chavinha que eu usarei no meu programa está ligada à porta PTA2 do processador. Então precisamos configurar o bit 2 da porta A como entrada. Apertando o botão “PTA” que está desenhado dentro do esquema do nosso processador como mostra a imagem acima, a seguinte tela de configuração da porta será apresentada:

clip_image014

Devemos apertar o botãozinho roxo que fica ao lado de “Entire I/O port” para que possamos configurar cada bit separadamente. A seguinte tela será mostrada:

clip_image016

Clique no “+” ao lado de “Pin2”. Abrirão algumas opções:

clip_image018

Habilite o bit 2 da porta clicando no botãozinho roxo que fica ao lado de “Disabled”. Verifique se em “Direction” está dizendo que este pino é de entrada (Input) e dê “Ok”. A tela de configurações deverá estar assim antes do Ok:

image

Agora vamos configurar o led. O que eu vou utilizar está ligado ao bit 0 da porta PTC. Então, da mesma maneira que já fizemos antes, clicamos no botão PTC do processador esquematizado na tela principal, e novamente clicaremos no botãozinho roxo que fica ao lado de “Entire I/O port” para que possamos configurar cada bit separadamente. Em seguida clicamos no “+” ao lado de “Pin0”. Habilite o pino clicando no botãozinho roxo que fica ao lado de “Disabled”. Em “Direction” mude Input para “Output” e em “Pull resistor” selecione a opção “Pull up” e dê “Ok”. A tela de configurações deverá estar assim antes do Ok:

image

Feito isso, as configurações já estão prontas. Basta agora gerarmos os códigos em C. Para isso, basta clicarmos no botão “Generate Code”.

A seguinte tela aparecerá. Então, clique em “Generate”.

image

Na tela seguinte basta clicar em “Ok”.

image

Bom, olhando o manual do processador, veremos que o “nome” do registrador referente a chavinha é PTAD_PTAD2 e o referente ao led é PTCD_PTCD0.

Na árvore que fica do lado esquerdo da tela principal, dentro da pasta “Sources” estará um arquivo chamado main.c. Você deve abrí-lo. É nele que você colocará o seu programa principal e definiremos uma variável para cada um dos registradores que citei no parágrafo anterior.

O código já existente em main.c é:

#include <hidef.h> /* for EnableInterrupts macro */

#include “derivative.h” /* include peripheral declarations */

#ifdef __cplusplus

extern “C”

#endif

void MCU_init(void); /* Device initialization function declaration */

void main(void)

{

MCU_init(); /* call Device Initialization */

/* include your code here */

for(;;)

{

/* __RESET_WATCHDOG(); by default, COP is disabled with device init. When enabling, also reset the watchdog. */

} /* loop forever */

/* please make sure that you never leave main */

}

Você deverá então acrescentar as linhas em vermelho:

#include <hidef.h> /* for EnableInterrupts macro */

#include “derivative.h” /* include peripheral declarations */

#define CHAVE PTAD_PTAD2 /* Chama de “CHAVE” o bit 2 da porta PTA*/

#define LED PTCD_PTCD0 /* Chama de “LED” o bit 0 da porta PTC*/

#ifdef __cplusplus

extern “C”

#endif

void MCU_init(void); /* Device initialization function declaration */

void main(void)

{

MCU_init(); /* call Device Initialization */

/* include your code here */

for(;;)

{

LED = CHAVE; /* Toda mudança na porta PTA2 será transferida para a porta PTC0*/

/* __RESET_WATCHDOG(); by default, COP is disabled with device init. When enabling, also reset the watchdog. */

} /* loop forever */

/* please make sure that you never leave main */

}

Pronto. Nosso programa está feito.

Para compilá-lo e carregá-lo no seu processador aperte a tecla “F5” do teclado. A seguinte tela aparecerá:

image

Com o kit devidamente ligado e conectado ao PC, clique em “Conect (Reset)”.

Na próxima tela clique em “Yes”. (Observe que clicando em “Yes” você estará autorizando o reset da memória do seu processador. Vai apagar tudo, hem… :))

image

Na tela que abrir, na barra de ferramentas na parte de cima da tela tem um botão com uma seta verde. É ele que coloca a CPU em RUN. Clique nele e pronto!!! É só sair apertando o seu botãozinho para o led acender!!!😉

image

Bom, antes de encerrar gostaria de agradecer publicamente a três pessoas que me ajudaram e ainda têm me ajudado muito nessa minha jornada!!! São eles os professores Marcelo Barros, Henrique Del Bianco e Roberto Quini. Meninos, muito obrigada mesmo por todo apoio, paciência e tempo despendido em me ajudar. Sempre serei grata a vocês.

Bom pessoal, por hoje é só. Espero ter ajudado.

Abraços!!!

    • Fabiano
    • 2 janeiro, 2010

    Ola Camila, perguntinha básica, em seu mestrado vc disse ter sido orientada a realizar a aquisição do kit freescale. Bem gostaria de saber o porque dessa indicação, ouvi boatos sobre o melhor desempenho dos micros da freescale (motorola) em relação aos pic´s (microchip). Isse tem algun fundamento? Prefiro acreditar que sim pois ha uma diferença de preço significativo entre kit´s dessas marcas, além do mais o set de instruções para pressionar um botão e acender um led fica mmmuuuiiitttto menor qndo programado para os micros da microchip

      • camilasoares
      • 2 janeiro, 2010

      Oi Fabiano.
      Nossa… que complicada a sua pergunta, hem… rsrsrs
      Bom, eu acredito que o segredo está na aplicação. Só trabalhei com o PIC uma vez e foi no projeto de um inversor de freqüência escalar. Na época ele me atendeu muito bem principalmente porque era um chip próprio para gerar PWM. Ele tinha três canais de saída para PWM. Depois desse projeto nunca mais programei os PICs.
      A indicação do meu orientador quanto a Freescale se deve ao fato da Freescale ter um “convênio” com a Unicamp. Para você ter uma idéia, as pontes H que vou utilizar no meu projeto foram todas enviadas como amostra gratis pela Freescale direto para o meu orientador. Outro ponto decisivo foi com relação aos acelerometros SCI que eles fabricam. Sem contar com o domínio que o meu orientados tem com os dispositivos da Freescale. Foi isso que me levou a adquirir o kit de desenvolvimento deles.
      Mas por diversas vezes já ouvi alguns amigos meus comentando que realmente os micros da Freescale são mais rápidos e consomem menos energia do que o de alguns concorrentes.
      Depois do seu comentário, faço questão de me aprofundar neste assunto e escrever um post sobre ele… Adorei essa idéia!
      Muito obrigada pelo seu comentário! Espero que vc visite o Engenheirando mais vezes!
      Um abração e um excelente 2010 pra você.

    • Fabiano
    • 2 janeiro, 2010

    Muito obrigado Camila, kkkk sempre visito e engenheirando, otimo 2010 pra vc!

    • Waldemar de Souza Neto
    • 28 janeiro, 2010

    Olá Camila,
    tenho 19 anos e ganhei um kit da freescale que é composto dos modulos MCF51CN Module (TWR-MCF51CN),Elevator Modules e Serial Modules, tive um curso relampago sobre este kit 6 horas e não tive a sorte de conseguir explorar muito bessas aulas nem fizemos exercícios apenas utilizamos exemplos pronts e não deu para fixar nada, gostaria mesmo de aprender como utilizar este kit, mas tive problemas de comunicação entre o PC e O MCF51CN128, não sei o que fazer.
    Por favor me ajude.
    Obrigado pela atenção, parabens pelo Site e boa sorte com o seu mestrado.

    • Danilo
    • 29 abril, 2010

    Waldemar, tive o mesmo problema, só que não tive curso… Peguei o tower e estou tentando fazer algo…Os demos é tranquilo pra gravar, mas como faz para criar a sua propria aplicação??? Eis a questão… Se conseguir a resposta, me ajude… Camila, vc também…

    Abraços
    Danilo

    • Kaciane
    • 9 junho, 2014

    Olá.

    Sou nova no assunto, estou começando a conhecer o microcontrolador…
    Gostaria de saber como eu configuro a porta serial RS-232 do MC9S08QE128 para conectá-la ao computador?
    Desde já agradeço! Abraços!

    • Rafael
    • 9 julho, 2014

    Olá, gostei muito do teu tutorial e queria saber umas coisas, estou fazendo um programa que recebe um controle 299Mhz externo, (quero fazer uma placa de portão de garagem) tenho osciloscópio e fiz o timer do HC908qy4a pulsar em 300us e entrar na interrupção do timer, até ai beleza coloquei na interrupção alguns IFs e quando chegou a hora de eu guardar os bit que estavam chegando comecei a observar um problema que o timer sozinho aumentava o seu tempo, eu fiz um switch que quando a variavel for 3 guarda o valor do pino quando for 6 guarda outro valor e assim sucessivamente, com isso vi que quando colocava a rafa[0]=PTB_PTB0, (a forma de escrever todo o programa está certo pois testei separado cada parte do programa),consegui fazer este programa em PIC e funcionou perfeitamente e o código é quase o mesmo(só muda escrita de um compilador para o outro) , fiz o tempo com o processor expert e o prog estou escrevendo em c!! tens uma dica para me dar????

  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: