UART recibió información que no fue enviada

0

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;
            }
    
pregunta new

0 respuestas

Lea otras preguntas en las etiquetas