Programando a KL05z com Kinetis Design Studio

Kinetis Design Studio

Dando continuidade na série de artigos que tem como base o desenvolvimento de sistemas embarcados baseados na placa KL05Z, será apresentado o Kinetis Design Studio (KDS), a IDE que será utilizada nesta série de artigos. A versão utilizada é a 3.2 e os códigos serão disponibilizados no github do Gabriel Marcatto.

A IDE KDS

O Kinetis Design Studio ( KDS ) é um ambiente de desenvolvimento integrado para microcontroladores Kinetis, que permite uma edição robusta para compilar e depurar seus projetos. Com base no Eclipse IDE, GNU Compiler Collection (GCC) e GNU Debugger (GDB), o Kinetis Design Studio oferece uma ferramenta simples de desenvolvimento que não possui limitação no tamanho do código, fazendo uso de algumas das melhores ferramentes open source disponívels.

A interface do Kinetis Studio é simples e fácil de utilizar, quem possui experiência com o eclipse IDE não enfrentará problemas ao migrar de programa.

KL05z com Kinetis Design Studio: Interface do KDS

Criando um Projeto

Para se criar um novo projeto, clque em File > New > Kinetis SDK 1.x Project. A NXP permite a customização dos SDKs para algumas famílias de microcontroladores, através do NXP SDK Builder.

Escolha o SDK no Kinetis Design Studio

Abrirá uma janela para a escolha do nome do projeto e pasta destino.

Criação de projeto no Kinetis Design Studio

Após escolher o nome, uma janela com os processadores e placas suportados pelo programa irá aparecer. Escolha o processador MKL05Z32xxx4.

Seleção de Device no Kinetis Design Studio

Criado o projeto, ele se encontrará no Project Explorer. O programa cria automaticamente o arquivo main.c com um código simples e pré determinado.

Project Explorer no Kinetis Design Studio

Para testar a placa podemos utilizar um programa simples que faz o acionamento do LED RGB. O código apresentado abaixo faz o uso das configurações mínimas para permitir que a placa seja iniciada corretamente e pisque o led azul, que está conectado no PIN 10 da porta B. Os detalhes do software, bem como as configurações iniciais, serão abordadas em outros artigos.

//Autor: Gabriel Silva Marcatto
//       Rodrigo Almeida


#include "MKL05Z4.h"

#define bitSet(arg,bit) ((arg) |= (1<<bit))
#define bitClr(arg,bit) ((arg) &= ~(1<<bit))

static int i = 0;

void main(void){
//-------------------------Config para boot da placa -------------------------------------------------------
    SIM_BASE_PTR ->SCGC5 |= (SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK); //init clock das portas
    MCG_BASE_PTR ->C4 |= 0x80;           //configura para usar clock interno em 24MHz
    PORTB_PCR(5) = (PORT_PCR_MUX(1) | PORT_PCR_DSE_MASK);   //portb 5, remover o NMI
//-----------------------------------------------------------------------------------------------------------
    PORTB_BASE_PTR ->PCR[10] = (PORT_PCR_MUX(1) | PORT_PCR_DSE_MASK);
    bitSet(PTB_BASE_PTR ->PDDR, 10);
    for(;;){
        bitSet(PTB_BASE_PTR ->PDOR, 10);
        for(float i = 0; i<100000; i++);
        bitClr(PTB_BASE_PTR ->PDOR, 10);
        for(float i = 0; i<100000; i++);
    }
}
build

Para compilar o código, clique em BUILD (). Não havendo nenhum erro, deverá aparecer no console: Build Finished (tempo de gravação).

Console de output no Kinetis Design Studio
debug

Após terminado o build, clique em Debug (). Uma janela irá aparecer para a escolha do modo de depuração (tipo de protocolo/debugger a ser utilizado). Para a Freedom KL05z selecione o _Debug_PNE:

Debug Launch no Kinetis Design Studio

Após a gravação da placa a IDE irá mudar um pouco a interface exibindo o modo de debug: uma mensagem de gravação completa, o código fonte com indicativo da linha atual, informações sobre a stack de chamada de funções, os valores das variáveis locais/globais e uma barra de ferramentas com controle para execução do código.

IDE de debug no Kinetis Design Studio

É importante lembrar que devemos parar a depuração antes de recompilar e regravar a placa. Se a placa não for pausada poderá acontecer um conflito e ocorrer o seguinte erro:

Erro de Debug no Kinetis Design Studio
IDE_C_Debug

Para resolver esse problema basta desconectar/reconectar a placar ou reseta-la. A modificação e recompilação do código pode ocorrer tanto no modo de depuração quanto no modo C/C++ de exibição da IDE. Para alterar entre ambos vá ao canto superior direito e selecione o modo desejado:  .

SoftPWM para exibição de cores

Para testar todas as cores de um LED RGB podemos utilizar o código abaixo. Ele vai simular um soft PWM para cada um dos leds e ao longo do tempo vai alterar o valor de R, G e B, percorrendo grande parte das cores disponíveis. Este código pode ser facilmente adaptado para testar leds em outras placas.

//Autor : Gabriel Silva Marcatto
// e Rodrigo Almeida

#include "MKL05Z4.h"

#define LigaR()    (PTB_BASE_PTR->PDDR |= 1 << 8)
#define DesligaR() (PTB_BASE_PTR->PDDR &= ~(1 << 8))
#define LigaG()    (PTB_BASE_PTR->PDDR |= 1 << 9)
#define DesligaG() (PTB_BASE_PTR->PDDR &= ~(1 << 9))
#define LigaB()    (PTB_BASE_PTR->PDDR |= 1 << 10)
#define DesligaB() (PTB_BASE_PTR->PDDR &= ~(1 << 10))

void main(void) {
	//-------------------------Básico para fazer a placa funcionar------------------------------------------------------------------------
	SIM_BASE_PTR->SCGC5 |= (SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK); //init clock das portas
	MCG_BASE_PTR->C4 |= 0x80;   //configura para usar clock interno em 24MHz
	PORTB_PCR(5) = (PORT_PCR_MUX(1) | PORT_PCR_DSE_MASK);  //portb 5, remover o NMI
	//--------------------------------------------------------------------------------------------------------------------------------------
	//config R8 G9 B10
	PORTB_BASE_PTR->PCR[8] = (PORT_PCR_MUX(1) | PORT_PCR_DSE_MASK); &nbsp;&nbsp; //configura PortB 8 como Output
	PORTB_BASE_PTR->PCR[9] = (PORT_PCR_MUX(1) | PORT_PCR_DSE_MASK); &nbsp;&nbsp; //configura PortB 9 como Output
	PORTB_BASE_PTR->PCR[10] = (PORT_PCR_MUX(1) | PORT_PCR_DSE_MASK); &nbsp; //configura PortB 10 como Output

	int valorR = 0;
	int valorG = 0;
	int valorB = 0;

	int tempo = 0;
	int valor= 0;
	int cor=1;
	for (;;){
		LigaR();
		LigaG();
		LigaB();

		//liga g e b
		for (int i = 0; i < 256; i++){
			if (i > valorR){
				DesligaR();
			}
			if (i > valorG){
				DesligaG();
			}
			if (i > valorB){
				DesligaB();
			}
		}
		tempo++;

		if (tempo >= 10){
			//criando a rampa
			valor++;
			if (valor == 255){
				valor = 0;
				//rampa no maximo, troca a cor
				cor++;
				if (cor>0b111){
					cor = 0b1;
				}
			}

			//qual cor  acompanha a rampa;
			if (cor & 0b001){
				valorR = valor;
			}else{
				valorR = 0;
			}
			if (cor & 0b010){
				valorG = valor;
			}else{
				valorG = 0;
			}
			if (cor & 0b100){
				valorB = valor;
			}else{
				valorB = 0;
			}
			tempo = 0;
		}
	}
}

O vídeo abaixo demostra o funcionamento do LED RGB com o código apresentado. Na primeira parte do vídeo foi utilizado um papel branco como filtro difusor para facilitar a percepção das cores.

​Desenvolvimento de sistemas embarcados com ​a ​KL05z

Conhecendo a KL05Z Configurando o microcontrolador KL05z
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
3 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Alexandre
Alexandre
25/03/2019 21:21

Comprei o seu livro sobre embarcados, que se baseia na KL05Z. Porém, infelizmente, no site da NXP, não existe o sdk da 05z. Absurdamente tem o sdk da 02, 03, 06 ….. mas não tem o da 05
https://mcuxpresso.nxp.com/en/select
Sabe me informar onde eu consigo esse SDK?

Angel
Angel
14/11/2017 11:08

Legal! Ansiosa para aprender sobre os detalhes do software e as configurações iniciais.

Filipe Coelho
Filipe Coelho
22/04/2016 21:40

muito bom. esperando o proximo

Home » Software » Programando a KL05z com Kinetis Design Studio

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: