Estoy trabajando en un proyecto (desarrollo de código para el coche DIY RC) utilizando PIC16F887 MCU. Por ahora esto es solo un prototipo, solo estoy probando las funciones de UART en el simulador de Proteus y encontré un problema.
Tengo dos potenciómetros (uno para el eje X y otro para el eje Y) para controlar dos motores a través de UART. Cuando comienzo la simulación, el eje Y funciona bien y hace lo que se supone que debe hacer (el motor comienza a girar cuando se mueve el potenciómetro y se detiene cuando está en la "zona de no ir").
Sin embargo, el segundo motor continúa girando si muevo el potenciómetro o no. El motor no responde en absoluto al potenciómetro, simplemente sigue girando y no puedo encontrar el problema. No puedo ver dónde me equivoco, así que estoy pidiendo ayuda.
Agregué código de ejemplo del receptor y el código completo del transmisor. Gracias de antemano.
TRANSMISOR
#define _XTAL_FREQ 8000000
#include<xc.h>
#include "ADC.h"
#include "UART.h"
int x_Axis, y_Axis;
void main(void){
initADC();
initUART(9600);
while(1)
{
x_Axis = readADC(0);
y_Axis = readADC(1);
/*Y */
if(((y_Axis >= 601) && (y_Axis <= 878)))
{
UART_Write('g'); // LOW SPEED
__delay_ms(100);
}
else if(((y_Axis >= 879) && (y_Axis <= 1023)))
{
UART_Write('f'); //FULL SPEED
__delay_ms(100);
}
else if((y_Axis <= 449) && (y_Axis >= 0))
{
UART_Write('b'); // REVERSE
__delay_ms(100);
}
else // STOP
{
UART_Write('s');
__delay_ms(100);
}
/*X */
if((x_Axis >= 601) && (x_Axis <= 1023))
{
UART_Write('l'); // LEFT
__delay_ms(100);
}
else if((x_Axis <= 449) && (x_Axis >= 0))
{
UART_Write('r'); // RGHT
__delay_ms(100);
}
else
UART_Write('c'); // STOP
__delay_ms(100);
}
}
RECEPTOR
while(1){
if(UART_Data_Ready())
{
while(UART_Data_Ready())
{
rxData = UART_Read();
if(rxData == 'g')
{
RB1 = 1;
}
else if(rxData == 'f')
{
RB1 = 1;
}
else if(rxData == 'b')
{
RB1 = 1;
}