ESP8266 pierde algunos datos enviados por UART (Interfaz con AVR ATmega32)

0

En primer lugar, me disculpo en caso de cometer algunos errores al publicar esta pregunta. Estoy escribiendo desde Argentina y estoy tratando de enviar datos desde ATmega32 (a través de UART) a ESP8266, y ESP8266 vuelve a transmitir estos datos en el aire (a través de WiFi).

El problema es que a algunos datos les faltan ALGUNAS VECES, y algunas veces se envían OK.

Por ejemplo, si envío valores de voltaje, frecuencia y corriente, me gustaría recibir en mi computadora estos datos en una secuencia cíclica, como la siguiente

"220.00" [V]
"10.000" [A]
"50.00" [Hz]
"220.00" [V]
"10.000" [A]
"50.00" [Hz]
"220.00" [V]
"10.000" [A]
"50.00" [Hz]

Sin embargo, veo algo como esto

"220.00" [V]
"50.00" [Hz]
"220.00" [V]
"10.000" [A]
"50.00" [Hz]
"220.00" [V]
"50.00" [Hz]

Como ve, faltan algunos datos (no siempre el mismo campo, ni todo el tiempo).

El código es el siguiente.

        int main(void)
{

    char _buffer[150];
    uint8_t Connect_Status;


    USART_Init();           /* Initiate USART with 115200 baud rate */
    sei();                  /* Start global interrupt */

    while(!ESP8266_Begin());
    ESP8266_WIFIMode(BOTH_STATION_AND_ACCESPOINT);/* 3 = Both (AP and STA) */
    ESP8266_ConnectionMode(SINGLE);     /* 0 = Single; 1 = Multi */
    ESP8266_ApplicationMode(NORMAL);    /* 0 = Normal Mode; 1 = Transperant Mode*/

    if(ESP8266_connected() == ESP8266_NOT_CONNECTED_TO_AP)
    ESP8266_JoinAccessPoint(SSID, PASSWORD);
    ESP8266_Start(0, DOMAIN, PORT);
    while(1)
    {
        Connect_Status = ESP8266_connected();
        if(Connect_Status == ESP8266_NOT_CONNECTED_TO_AP)
        ESP8266_JoinAccessPoint(SSID, PASSWORD);
        if(Connect_Status == ESP8266_TRANSMISSION_DISCONNECTED)
        ESP8266_Start(0, DOMAIN, PORT);


        switch (counter)

        {

        case 0: memset(_buffer, 0, 150);
                sprintf(_buffer,"220.00");
                ESP8266_Send(_buffer);
                counter++;
                _delay_ms (500); /* Thingspeak server delay */
        break;

        case 1: memset(_buffer, 0, 150);
                sprintf(_buffer,"10.000");
                ESP8266_Send(_buffer);
                counter++;
                _delay_ms(500); /* Thingspeak server delay */
        break;


        case 2: memset(_buffer, 0, 150);
                sprintf(_buffer,"50.00");
                ESP8266_Send(_buffer);
                counter++;
                _delay_ms(500); /* Thingspeak server delay */
        break;

        }

    }
}

Gracias por cualquier ayuda.

    
pregunta Leon_Suburbano

0 respuestas

Lea otras preguntas en las etiquetas