Archive for the ‘ Programação de Microcontroladores ’ Category

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!!!