KL25Z
KIT NXP FREEDOM FRDM – KL25Z
PSI 3212 – LABORATÓRIO DE CIRCUITOS ELÉTRICOS AUTOR : LUCAS DE ANDRADE BOTH
• Este manual tem como objetivo mostrar aos alunos todas as etapas necessárias para a programação do microcontrolador FRDM - KL25Z.
• Existem diversas plataformas de desenvolvimento de programas para o FRDM – KL25Z. Este manual terá como foco o acesso ao MBED, plataforma projetada pela ARM.
• O MBED foi escolhido por ser de simples acesso e gratuito. As pré-configurações necessárias para o desenvolvimento de programas são mínimas, o que facilita a aprendizagem e o trabalho.
• Ao final deste documento o aluno deverá saber como entrar na plataforma MBED e utilizar a sua estrutura de programação.
MANUAL DE PRIMEIROS PASSOS PARA PROGRAMAÇÃO DO FRDM -KL25Z
1.1 Plataforma de desenvolvimento
• O MBED é um compilador virtual, exigindo assim que o usuário tenha acesso a internet enquanto constrói o código do programa.
• A sua linguagem de programação é basicamente C/C++, com pequenas variações. • Seu esquema de programação assemelha-se ao CodeBlocks.
• Para ter acesso ao MBED, acesse o site abaixo:
• O link anterior dá acesso a seguinte página.
• Após o cadastro, o sistema entrará automaticamente na conta do usuário.
• Caso isso não ocorra, verifique na caixa de entrada do e-mail cadastrado a mensagem do site do MBED, como a mostrada abaixo.
• Clique no link indicado pela seta, e o sistema entrará automaticamente na conta cadastrada.
• Antes de criar qualquer programa, é necessário selecionar o dispositivo correto para o qual o programa será baixado.
• Na aba “Boards”, selecione o respectivo microcontrolador. No nosso caso, é FRDM-KL25Z.
• O site dará a resposta “Platform FRDM-KL25Z is now added to your account!”. • Clique em “Open mbed Compiler”.
• O site abrirá uma nova aba e sugerirá a criação de um novo programa.
• Escolha o nome do programa em “Program Name” e, em seguida, clique em “OK”.
• Perceba que na aba “My Programs” aparecerá o novo programa criado.
• Perceba que, a princípio, já existe um código pronto como mostra a figura abaixo. Esse programa faz com que o “LED1” (neste caso o led vermelho) pisque em um intervalo de 0.2 segundos.
• Com o cabo USB-Mini, conecte uma das extremidades ao computador e a outra à entrada OpenSDA do microcontrolador, como mostrado na figura abaixo.
• Lembrete: Para evitar possíveis confusões, lembre-se que a entrada que oferece comunicação serial entre o microcontrolador e o computador é a mais próxima ao LED (indicado na figura com a seta).
• Na pasta “downloads”, clique com o botão direito sobre o programa baixado. Clique em “Enviar para” e selecione FRDM-KL25Z, como mostrado na figura.
• Reinicie o microcontrolador através do botão localizado entre os conectores USB.
• Após todos esses processos, você verá que o led vermelho do microcontrolador ficará piscando, como era esperado.
1.2 Como usar os pinos do FRDM-KL25Z e o MBED
• O FRDM-KL25Z possui vários pinos com diversas funcionalidades, como pode ser visto abaixo.
• A mais importante, e que será muito utilizada no projeto da disciplina, é classificada como “Analog In”.
• Ela é responsável por receber sinais analógicos, na faixa de 0 até 3.3V, e convertê-los em sinais digitais que podem ser interpretados pelo microcontrolador.
• Para declarar um pino como entrada “Analog In” basta seguir o exemplo da figura.
• O usuário deve digitar “AnalogIn”, declarar um nome para esta entrada (no caso do exemplo é ain0) e declarar qual o respectivo pino, sendo este último entre parêntesis.
• Atenção: Nunca esqueça de incluir a biblioteca “mbed.h”. Ela é responsável pelo reconhecimento dos pinos de entrada e saída.
e o “GND”.
• O “P3V3” funciona como uma fonte de tensão contínua, fornecendo 3.3V de saída para o circuito.
• O “GND” é o terra/ground do microcontrolador, que realiza a referência do circuito. • Tanto para o “P3V3” quanto para o “GND” não é necessário fazer a declaração no script
do programa, como foi feito para as entradas “Analog In”.
• ATENÇÃO: é extremamente importante que durante a construção e testes do projeto, o grupo coloque na mesma referência todos os equipamentos, como microcontrolador, gerador de funções e fonte de tensão contínua. Conecte todos os “GNDs” em um único ponto.
GND P3V3
1.3 Funções importantes da biblioteca “mbed.h”
• O ambiente do MBED também proporciona algumas facilidades que não são muito usadas em compiladores de C/C++, como CodeBlocks e Eclipse.
• A primeira delas é a função “wait”. Quando o usuário chama esta função a CPU do microcontrolador entrará em um loop esperando o tempo requerido, em segundos, para realizar a próxima linha de código.
• Abaixo segue um exemplo de como usar esse artifício. Perceba que toda a vez que o programa realiza a função “wait(0.5)”, o led vermelho ficará acesso ou apagado por 0.5 segundos.
é usado para configurar uma interrupção recorrente para chamar uma outra função definida pelo usuário repetidamente a uma taxa específica.
• Além disso, o “Ticker” não entra em um loop como o “wait”, mas permite que dois processos ocorram concomitantemente dentro do microcontrolador.
• Abaixo é mostrado como o “Ticker” pode ser usado.
• Perceba que é necessário declarar um objeto do tipo “Ticker” (linha 3).
• Na linha 13, o “Ticker” é ativado por meio de “.attach” e os respectivos parâmetros. Veja que a função “void flip” será executada a cada 2.0 segundos, mudando a variável “led2”.
• Uma forma de imprimir um vetor ou variável, por meio do emulador serial, é seguindo o exemplo abaixo.
• É necessário criar um objeto do tipo “Serial” com os referidos parâmetros, como mostrado na linha 3.
• Para que a informação seja impressa é necessário seguir a linha 9. O objeto vem acompanhado de “.printf” e dentro do parêntesis a informação.
• Nas linhas 10, 11 e 12 são mostradas as formas de como imprimir valores do tipo “int”, “float” e “double”, respectivamente.
• Para que os valores sejam impressos de forma a facilitar a visualização, usa-se “\n\r”. • “\n” serve para que a próxima informação que será impressa venha na linha abaixo. • “\r” serve para que a próxima informação que será impressa venha alinhada à
esquerda.
• ATENÇÃO: Para que a comunicação serial funcione adequadamente é necessário instalar certos Drivers. Para isso, vide arquivo “Comunicação Serial”.
// Mede dois sinais #include "mbed.h"
//#include "math.h" // Descomente esta linha caso queira usar funções como sin(x) Ticker flipper;
AnalogIn ain0(PTB0); AnalogIn ain1(PTB1); DigitalOut myled(LED1);
int aux2 = 0; // Variavel auxiliar, para indicar quando realizar uma amostragem void flip() {
aux2 = !aux2; }
int main()
{ // valor mínimo de ts: ~0.0001 (10 kHz)
int contador = 0, tamanho=1000; // Tamanho dos vetores de amostras. float ts = 0.0001, sinal0[tamanho], sinal1[tamanho];
myled = 0; // Acende led
flipper.attach(&flip, ts); // chama a funcao flip apos ts segundos while(contador<tamanho) {
if(aux2 == 1){
sinal0[contador] = ain0; // lê sinais analógicos de dois canais sinal1[contador] = ain1;
aux2 = 0; contador++; }
}
flipper.detach(); /* para o ticker */ myled = 1; // Apaga led quando termina
// Coloque aqui o seu programa para tratamento dos dados. }
Nascimento.
• Ele utiliza todas as funções e artifícios descritos anteriormente para fazer a aquisição de dois sinais analógicos a cada 100 µs.