Professional Documents
Culture Documents
Allinonechido
Allinonechido
#include "LPC17xx.h"
#endif
#include <cr_section_macros.h>
#include <NXP/crp.h>
#include "lpc17xx_gpio.h"
#include "lpc17xx_timer.h"
#include <math.h>
#include "lpc17xx_adc.h"
#include "lpc17xx_pinsel.h"
#include "lpc17xx_pwm.h"
#include "lpc17xx_dac.h"
void Contador_binario(void);
void Kit(void);
void Contador_RGB(void);
void ADC_A_Binario(void);
void ADC_A_RGB(void);
void Clean (void);
void ADC_A_PWM6(void);
void ADC_A_DAC(void);
char Inputs;
int color
[7]={0x01000000,0x02000000,0x03000000,0x04000000,0x05000000,0x06000000,0x07000000};
int count=0;
int varR=0; // colores rgb
int kitC=1;
uint32_t vkit=0x00000001; //Variables kit
int kitD=1;
uint32_t analog = 0;
int Duty_Cicle=0;
int ADC_Value=0;
int main(void)
{
CONFIG_GPIO ();
INIT_RGB ();
INIT_ADC();
INIT_PWM();
INIT_DAC();
while(1)
{
Inputs= GPIO_ReadValue(2);
switch(Inputs)
{
case 0:
Clean();
break;
case 1:
Contador_binario();
break;
case 2:
Kit();
break;
case 3:
Contador_RGB();
break;
case 4:
ADC_A_Binario();
break;
case 5:
ADC_A_RGB();
break;
case 6:
ADC_A_PWM6();
break;
case 7:
ADC_A_DAC();
break;
default:
Clean();
break;
}
}
}
}
void INIT_PWM (void)
{
PWM_TIMERCFG_Type PWMCfgDat;
PWM_MATCHCFG_Type PWMMatchCfgDat;
PINSEL_CFG_Type PinCfg;
PWMCfgDat.PrescaleOption = PWM_TIMER_PRESCALE_TICKVAL;
PWMCfgDat.PrescaleValue = 1;
PWM_Init(LPC_PWM1, PWM_MODE_TIMER, (void *) &PWMCfgDat);
PinCfg.Funcnum = 1;
PinCfg.OpenDrain = 0;
PinCfg.Pinmode = 0;
PinCfg.Portnum = 2;
PinCfg.Pinnum = 5;
PINSEL_ConfigPin(&PinCfg);
PWM_ChannelConfig(LPC_PWM1, 6, PWM_CHANNEL_SINGLE_EDGE);
void Contador_binario(void)
{
Clean ();
GPIO_SetValue(0,count);
count++;
Timer0_Wait(200);
void Clean(void)
{
GPIO_ClearValue(0,0x000000FF);
GPIO_ClearValue(0,0x0F000000);
}
void Kit(void)
{
Clean();
if(kitC==8 && kitD==8)
{
kitC=1;
kitD=1;
}
if(kitC<8)
{
GPIO_SetValue(0,vkit);
vkit=vkit<<1;
Timer0_Wait(250);
Clean();
kitC++;
}
if(kitD<8 && kitC==8)
{
GPIO_SetValue(0,vkit);
vkit=vkit>>1;
Timer0_Wait(250);
Clean();
kitD++;
}
void Contador_RGB(void)
{
Clean();
if(varR>6)
{
varR=0;
}
GPIO_SetValue (0,color[varR]);
Timer0_Wait(500);
varR++;
}
void ADC_A_PWM6(void)
{
Clean();
ADC_StartCmd(LPC_ADC,ADC_START_NOW);
ADC_Value = ADC_ChannelGetData(LPC_ADC,ADC_CHANNEL_0);
Duty_Cicle = ADC_Value/4;
Timer0_Wait(50);
}
void ADC_A_Binario(void)
{
Clean();
ADC_StartCmd(LPC_ADC,ADC_START_NOW);
analog=ADC_ChannelGetData(LPC_ADC,ADC_CHANNEL_0);
analog=analog/16;
GPIO_SetValue(0,analog);
Timer0_Wait(100);
}
void ADC_A_RGB(void)
{
Clean();
ADC_StartCmd(LPC_ADC,ADC_START_NOW);
analog=ADC_ChannelGetData(LPC_ADC,ADC_CHANNEL_0);
if(analog<585)
{
GPIO_SetValue(0,color[0]);
Timer0_Wait(300);
Clean();
}
if(585<analog && analog<1170)
{
GPIO_SetValue (0,color[1]);
Timer0_Wait(300);
Clean();
}
if(1170<analog && analog<1755)
{
GPIO_SetValue (0,color[2]);
Timer0_Wait(300);
Clean();
}
if(1755<analog && analog<2340)
{
GPIO_SetValue (0,color[3]);
Timer0_Wait(300);
Clean();
}
if(2340<analog && analog<2925)
{
GPIO_SetValue (0,color[4]);
Timer0_Wait(300);
Clean();
}
if(2925<analog && analog<3510)
{
GPIO_SetValue (0,color[5]);
Timer0_Wait(300);
Clean();
}
if(3510<analog && analog<4095)
{
GPIO_SetValue (0,color[6]);
Timer0_Wait(300);
Clean();
}
}
void ADC_A_DAC (void)
{
ADC_StartCmd(LPC_ADC,ADC_START_NOW);
ADC_Value = ADC_ChannelGetData(LPC_ADC,ADC_CHANNEL_0);
ADC_Value = ADC_Value/4;
DAC_UpdateValue ( LPC_DAC,(uint32_t)(ADC_Value));
Timer0_Wait(50);
}
void INIT_DAC(void)
{
PINSEL_CFG_Type PinCfg;
PinCfg.Funcnum = 2;
PinCfg.OpenDrain = 0;
PinCfg.Pinmode = 0;
PinCfg.Pinnum = 26;
PinCfg.Portnum = 0;
PINSEL_ConfigPin(&PinCfg);
DAC_Init(LPC_DAC);
}