Posts Tagged ‘ Linguagem C ’

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

Kit de desenvolvimento Freescale: Demoqe128

Quando fui aceita na Unicamp para o mestrado, na primeira reunião com o meu orientador, ele me aconselhou a utilizar o kit da Freescale que tínhamos disponíveis em nosso laboratório.

Como 90% do desenvolvimento do meu projeto está sendo desenvolvido fora da universidade, surgiu a necessidade de eu adquirir um dos kits mencionados. Por uma questão de custo X benefício resolvi comprar a Demoqe128.

0000000000173739_2

Este kit vem com dois processadores: um de 8 bits (plaquinha verde) e outra de 32 bits (plaquinha vermelha).

Além disso já vem com alguns periféricos como 8 leds, 4 chaves, um potenciômetro e, entre outros, um dos mais interessantes: um acelerômetro triaxial.

Ela é programada pelo CodeWarrior. Sinceramente tenho apanhado um pouquinho pra aprender a trabalhar com este software. Mas aos poucos estou aprendendo. 🙂

Nos próximos posts estarei falando um pouquinho melhor deste kit e colocando alguns exemplos de programação.

Espero ajudar a todos que estão começando a programar os processadores da Freescale.

Quem quiser saber mais a respeito da plaquinha, pode acessar a página da Freescale clicando aqui.

Um abraço a todos e até os próximos posts.

Utilizando Devcpp para programações em C / C++

Como havia prometido, aqui estou para dar meu parecer a respeito do Devcpp.

Bom, admito que ele me deu nos nervos por horas ontem… rsrsrs… mas agora já o estou amando…

O procurei no Google, baixei e instalei. No começo da instalação ele pede para que você não o instale sobre uma versão já instalada. Na hora pensei: “Nunca instalei esse carinha na minha máquina, então não terei problema”. Estava enganada!!!

A instalação foi simples e rápida. O problema é que, para todos os programas que eu fiz, na hora de compilar, ele apresentava o seguinte erro: “[Build Error] [nomedoprograma.exe] Error1”. Fui ao help, e nada!!! Daí comecei a dar uma olhada em todas as janelinhas dele pra ver se encontrava alguma pista e acabei descobrindo que o safadinho utiliza o MinGW na compilação!!! Isso mesmo… o mesmo compilador do último post que eu fiz sobre programação. Coincidência, né!!!

Foi daí que eu tive a idéia de desinstalar tanto o MinGW quanto o Devcpp e começar tudo de novo. E não é que deu certo!!! Reinstalei o Devcpp, compilei os mesmos programas que tinha feito anteriormente e todos funcionaram redondinho.

Agora, falando do compilador em si, realmente estou muito satisfeita com ele. Sua utilização é bastante intuitiva e a interface é toda em português (BR). Contudo, o help e os erros de compilação são todos dados em inglês, mas, sinceramente, não achei isso um problema.

Outra opção interessante é que quando você cria um projeto novo ele te permite criar um projeto vazio, onde você começa tudo do zero, ou então um com “meio caminho andado”… rsrsrs… Como assim? Vou explicar. Vamos supor que estamos fazendo uma aplicação e queremos que ela rode numa janelinha do Windows. Quando você escolhe a opção “Windows Aplication” na criação do projeto, o Devcpp já te abre a tela com todo o código fonte de criação da telinha já pronto. Achei isso bem interessante.

Outra característica, que eu já estava esquecendo de comentar, é que ele suporta tanto C como C++. Isso você define também na criação do projeto.

Por fim, gostaria de deixar registrado que recomendo o Devcpp para quem programa ou está começando a programar em C, por ser um software eficiente e de simples utilização.

Problemas de compilação utilizando o Turbo C

Depois de quase 6 anos sem programar em C, essa semana, por causa do mestrado, me deparei com a necessidade de ressuscitar meus conhecimentos nessa linguagem.

Na época em que aprendi a Linguagem C eu utilizava o Turbo C como compilador. Então optei por continuar utilizando-o hoje. O instalei no meu PC, fiz meu programa, compilei, gerei o .exe e, para minha surpresa, ao tentar rodar o arquivo executável, foi me dado o seguinte erro: “This example program can only be run from within the IDE”. Na hora pensei que tinha feito algo errado no processo de compilação. Então fui aos meus arquivos da época da faculdade e me certifiquei de que tinha feito tudo corretamente. Daí fui ao Google e tentei encontrar alguma coisa sobre esse erro. E realmente encontrei várias pessoas com o mesmo problema, contudo não encontrei nenhuma solução.

Foi então que me veio a idéia de que o problema estava no compilador. Procurando na internet outros compiladores, encontrei o MinGW e acabei me interessando. Fiz o download dele, instalei e, para minha alegria, deu certo!!! Meus executáveis agora funcionam.

O único inconveniente é que o MinGW roda em MS-Dos. Abaixo explico detalhadamente como utilizar esse compilador. 

  • O primeiro passo é baixá-lo e instalá-lo. Isso não tem segredo. Digitando MinGW no Google você encontra n sites onde ele está disponível para download. Se tiver dúvida, entre em contato comigo.

  • O segundo passo é fazer o seu programa. Eu fiz os meus utilizando o bloco de notas e salvei o arquivo no formato “nomedoarquivo.c”.

  • Daí entra a parte chata!!! Você deve entrar no Prompt do MS-Dos. Para isso vá ao menu iniciar, clique em executar e digite cmd.exe. Uma tela semelhante a esta irá aparecer:   

 22

  

  • A partir daí você deve acessar no MS-Dos a pasta onde está salvo o seu programa com extensão “.c”. Como fazer isso? É fácil!!! Através do comando “cd” no MS-Dos você consegue mover-se entre os seus diretórios. Por exemplo: se eu quiser sair do diretório Camila Soares, que aparece na imagem anterior, eu devo digitar “cd..”. Assim eu entrarei em um nível acima no diretório Documents and Settings. Vamos supor que agora eu queira acessar o diretório All Users que fica dentro do diretório Documents and Settings. Para isso eu devo digitar “cd all users”, e pronto, lá estou eu no diretório All Users.

  • A seguir, verifique onde o MinGW foi instalado. Normalmente ele estará numa pasta chamada MinGW no drive C.

  • Então, finalmente, digite no Prompt “c:\mingw\bin\gcc.exe –o nomedoarquivo.exe nomedoarquivo.c -Wall”. Observe que a palavra “Wall” deve estar com o W maiúsculo e que o endereço do arquivo gcc.exe deve estar de acordo com o drive onde o MinGW foi instalado.

Prontinho. Você já tem o seu programa compilado e seu arquivo .exe gerado.

Mais um inconveniente desse compilador é que ele até indica que existem erros no seu programa mas não diz nem onde estão nem quais são. Fora isso ele atendeu perfeitamente o que eu estava precisando no momento.

Aqui em baixo eu vou deixar um exemplo passo-a-passo pra ajudar você:

 14

 

Um amigo meu me indicou o Devcpp como compilador. Parece uma ferramenta bem interessante. Vou tentar trabalhar com ele e, assim que tiver uma opinião formada sobre ele, escrevo novamente pra vocês.