Tengo un PIC32 starter Kit
& %código%. IO Expansion Board
tiene 3 LEDs en baord PIC32 Starter Kit
. He creado un programa de uart tal que si alguien presiona 1 en el teclado, este 1 se enviará en serie a PIC32 y LED1 LED2 LED3
estará ENCENDIDO y si alguien presiona 4, LED1
estará APAGADO. De la misma manera, 2 & 5 será LED1
turn ON & OFF
& 3 & 6 para LED2
. El programa se está ejecutando bien y LED3
está respondiendo correctamente, pero LED1 & LED3
siempre se enciende si presiono el 2 o no. No sé por qué sucede esto con este LED2. ¿Hay algo que me esté perdiendo? Sé que los LED están funcionando pero no sé qué está sucediendo en este caso. ¿Alguien tiene alguna idea sobre esto? Por favor ayuda.
CÓDIGO:
#include <plib.h>
#include <string.h>
#pragma config FNOSC = PRIPLL, POSCMOD = HS, FPLLMUL = MUL_18, FPLLIDIV = DIV_2, FPBDIV = DIV_2, FPLLODIV = DIV_1
#pragma config FWDTEN = OFF
#define SYSTEM_FREQUENCY 72000000L
#define BAUDRATE 57600
int main()
{
int pbFreq;
TRISDbits.TRISD0 = 0; //output
TRISDbits.TRISD1 = 0; //output
TRISDbits.TRISD2 = 0; //output
char RxBuffer[5];
pbFreq=SYSTEMConfigPerformance(SYSTEM_FREQUENCY);
OpenUART2( UART_EN | UART_NO_PAR_8BIT | UART_1STOPBIT, UART_RX_ENABLE | UART_TX_ENABLE, (pbFreq/16/BAUDRATE)-1);
while(1)
{
if((U2STAbits.URXDA)!=0)
{
getsUART2(5,RxBuffer , 123);
U2STAbits.URXDA = 0;
U2STAbits.OERR = 0;
}
if(RxBuffer[0] == '1')
{
PORTDbits.RD0 = 1;
putsUART2(">>LED: 1 ON");
memset(RxBuffer,0,5*sizeof(char));
}
else if(RxBuffer[0] == '4')
{
PORTDbits.RD0 = 0;
putsUART2(">>LED: 1 OFF");
memset(RxBuffer,0,5*sizeof(char));
}
if(RxBuffer[0] == '2')
{
PORTDbits.RD1 = 1;
putsUART2(">>LED: 2 ON");
memset(RxBuffer,0,5*sizeof(char));
}
else if(RxBuffer[0] == '5')
{
PORTDbits.RD0 = 0;
putsUART2(">>LED: 2 OFF");
memset(RxBuffer,0,5*sizeof(char));
}
if(RxBuffer[0] == '3')
{
PORTDbits.RD2 = 1;
putsUART2(">>LED: 3 ON");
memset(RxBuffer,0,5*sizeof(char));
}
else if(RxBuffer[0] == '6')
{
PORTDbits.RD2 = 0;
putsUART2(">>LED: 3 OFF");
memset(RxBuffer,0,5*sizeof(char));
}
}
}