Olá pessoal!
Já apresentamos a interface da nossa IDE, agora vamos aprender como importar para nosso workspace os códigos exemplo inclusos na IDE para serem utilizados como base para o desenvolvimento de varias placas LPC.
Para trabalhar com esses projetos, selecione "Import project(s)" no painel Quickstart no canto inferior esquerdo da tela.
Figura 1.
A seguinte tela surgirá, conforme figura 2. Na área "Project archive (.zip)" clique em Browse para buscar o arquivo ".zip" contento os projetos exemplos.
Figura 2.
Ao clicar aparecerá a janela de busca. No meu caso o caminho para o diretório onde está os arquivos para importar foi:
C:\nxp\LPCXpresso_5.2.4_2122\lpcxpresso\Examples\NXP\LPC1000\LPC17xx
A figura 3 mostra qual arquivo é destinado a LPC1769. Selecione e clique em Abrir.
Figura 3.
Com o arquivo selecionado, clique em Next.
Figura 4.
Selecione todos os exemplos e clique em Finish, como mostra a figura 5.
Figura 5.
Figura 6.
Pronto, em Project Explorer é possível ver todos os projetos importados, no meu caso o projeto ADC já estava expandido. Como mostra Figura 7.
Figura 7.
Bom pessoal, ficamos por aqui neste tutorial. Nos próximos tutoriais vou explicar o que é o CMSIS, quais os arquivos necessários para um novo projeto e iniciaremos o estudo dos exemplos.
Abraço a todos!
Até o próximo.
BOM DIA EDSON,
ResponderExcluirESTOU PENSANDO EM FAZER UM MEDIDOR DE RPM COM 3 BOTOES
1 LIGA E DESLIGA
2 FAZ UMA INTERRUPÇAO (pausar o valor maximo tela)
3 altera de rpm para radianos
VC PODERIA ME DAR UMA AJUDA?
Bom, eu não conheço esse Edson, mas vamos a resposta.
ExcluirAmigo posso ajuda-lo sim, mas em relação ao hardware já está definido? qual sensor vai usar? qual microcontrolador? essa tela eh um LCD alfanumérico ou TFT?
Ou são nessas decisões que quer ajuda?
e a grande pergunta: quer medir o RPM de que? de um motor qualquer ou de uma roda de bicicleta?
Abraço Marcos,
Aguardo Contato.
seria um sensor de efeito hall para um motor de bancada
Excluirusarei o lpc1769
o lcd 2x16 alpha numerico
tentei fazer assim
/*
===============================================================================
Name : main.c
Author :
Version :
Copyright : Copyright (C)
Description : main definition
===============================================================================
*/
#ifdef __USE_CMSIS
#include "LPC17xx.h"
#endif
#include
#include
#include //biblioteca padrão entrada ou saida
__CRP const unsigned int CRP_WORD = CRP_NO_CRP; //Sem proteção contra leitura
#include "LCD_Lib.h" //Inclui as bibliotecas do autor.
#include "SysTick_Lib.h"
//teste
void Config_EINT0() // interrupçao
{
LPC_PINCON->PINSEL4 = ((LPC_PINCON->PINSEL4&~(0b11<<20)) | (0b01<<20)); //J-51 porta2.10
NVIC_DisableIRQ(EINT0_IRQn);
LPC_SC->EXTMODE |= 1<<0;
LPC_SC->EXTPOLAR |= 1<<0;
NVIC_SetPriority(EINT0_IRQn,1);
LPC_SC->EXTINT |= 1<<0;
NVIC_EnableIRQ(EINT0_IRQn);
}
//void EINT0_IRQHandler();//interrupçao
void Config_QEI(); //PROTÓTIPO DE FUNÇÃO
//UTILIZA LCD 2X16 COMO STREAM DE SAÍDA DA FUNÇÃO PRINTF
extern int __sys_write (int iFileHandle, char *pcBuffer, int iLength);
void QEI_IRQHandler()
{
double v_angular; // VELOCIDADE RPM
double v_radianos; // VELOCIDADE RAD
int v_maxima = 0; // SERIA A VARIÁVEL GLOBAL
//RESOLUÇÃO DO ENCODER = 1 PULSOS/REVOLUÇÃO
//PCLK_QEI = 100.000.000Hz
//CAPMOD = 1:1
v_angular = (3000000000*(float)LPC_QEI->QEICAP)/((float)LPC_QEI->QEILOAD);
v_radianos = (v_angular/0.159);
/*
if (v_angular>v_maxima) //SERIA ISSO PROFESSOR?/ HELP-ME PLEASE
{ // LIGUEI O B1 MAS NAO OBTIVE EXITO AINDA
v_maxima = v_angular;
}
*/
LCD_LIMPA_TELA(); //LIMPA A TELA E COLOCA O CURSOR NA LINHA 1 E COLUNA 1
printf("%06.2f = RPM", v_angular);
LCD_DESLOCA_POSICAO(2,1); //DESLOCA O CURSOR PARA LINHA 1 E COLUNA 1
printf("%06.2f = RAD", v_radianos);
LPC_QEI->QEICLR = 1<<1; //LIMPA O FLAG BIT TIM_int.
}
int main(void)
{
SystemInit(); //CONFIGURA OS RECURSOS BÁSICOS DO MICROCONTROLADOR. C_CLK = 100MHz
NVIC_SetPriorityGrouping(0b010); // DETERMINA O VALOR DO PRIGROUP = 0b010
//CONFIGURA O SysTick Timer para habilitar o uso da função delay_us();
Config_SysTick_us();
LCD_INICIA (0x28, 0x0c, 0x06); //INICIALIZA DO DISPLAY LCD2X16
Config_QEI(); //Configura o módulo QEI
while(1)
{
}
return 0;
}
void Config_QEI()
{
//ATIVA O MÓDULO QEI
LPC_SC->PCONP |= 1<<18;
//PCLK_QEI = C_CLK = 100MHz
LPC_SC->PCLKSEL1 = ((LPC_SC->PCLKSEL1&~(0b11<<0)) | (0b01<<0));
//CONFIGURA OS PINOS P1.20 E P1.23 PARA A FUNÇÃO PhA E PhB, RESPECTIVAMENTE
//LPC_PINCON->PINSEL3=((LPC_PINCON->PINSEL3&~(0B11<<8|0b11<<14)) | (0b01<<8|0b01<<14));
LPC_PINCON->PINSEL3=((LPC_PINCON->PINSEL3&~(0B11<<8))|(0b01<<8));
// SENSOR DE CONTATO MECANINO
//RESOLUÇÃO DO ENCODER = 1 PULSO/ROTAÇÃO
//PCLK_QEI = 100.000.000Hz
//SELECIONA O MODO DE UMA FASE SEM INVERSÃO NA LOGICA INCREMENTO
LPC_QEI->QEICONF =0;// 1<<1;
//VALOR MÁXIMO DE INCREMENTO DO CONTADOR DE POSIÇÃO
LPC_QEI->QEIMAXPOS = 1;//8191; //RESOLUÇÃO DO ENCODER = 2048. 2048*4-1=8191.
//V_MAX = 6.000 RPM
//RESOLUÇÃO DO ENCODER = 2048 PULSOS/ROTAÇÃO
//PCLK QEI = 100.000.000Hz
//FILTER = 60*100.000.000/(4*6.000*2048) ~~ 122
LPC_QEI->FILTER = 122;
//DETERMINA O PERÍODO DE TEMPO USADO PARA O CÁLCULO DA VELOCIDADE
//PERÍODO = 1s
LPC_QEI->QEILOAD = 100000000;
//LIMPA O FLAG BIT DE INTERRUPÇÃO ASSOCIADA A IDENTIFICAÇÃO DO PULSO DE UM CLOCK
LPC_QEI->QEICLR = 1<<1;
//HABILITA A GERAÇÃO DE INTERRUPÇAO POR ESTOURO DO TEMPORIZADOR DE VELOCIDADE
LPC_QEI->QEIIES = 1<<1;
NVIC_SetPriority(QEI_IRQn,22); //DEFINE A PRIORIDADE DA INTERRUPÇÃO QEI
NVIC_EnableIRQ(QEI_IRQn); //HABILITA A INTERRUPÇÃO QEI NO NVCI
}
mas a velocidade fica oscilando nao fica estavel
obrigado