Jump to content
43oh

Tiva 129 Connected Ethernet Write / Print is very slow


Recommended Posts

Hi,

I am using Energia ethernet library for Ti Tiva c 129 Launchpad. I wrote a simple program in Energia that gets a byte from stream and sends back two bytes.

It seems there is lag when I send bytes back from Ti board. Here is my code.

 

byte           mac[] = {0x00, 0x0A, 0xB7, 0x52, 0xBA, 0x16 };
IPAddress      ip(192,168,1,192);
IPAddress      gateway(192,168,1,1);
IPAddress      subnet(255,255,255,0);
EthernetServer server(80);
EthernetClient client;


void setup()
{
   Ethernet.begin(mac, ip, gateway, subnet);
   server.begin();
   Serial.begin(9600);
}


void loop()
{
  byte buf[2];
  buf[0] = 'O';
  buf[1] = 'K';
  client = server.available();
  if (client.available()) {
    char c = client.read();
    if (c == 'S'){
      Serial.print("A");
      client.write(buf, 2);
    }
  }
}
 
And i am sending data from a simple vb program like this

        Dim d As Byte()
        data = New [Byte](2) {}


        d = System.Text.Encoding.ASCII.GetBytes("S")
        stream.Write(d, 0, d.Length)
        While stream.DataAvailable = False
        End While
        stream.Read(data, 0, data.Length)


        d = System.Text.Encoding.ASCII.GetBytes("S")
        stream.Write(d, 0, d.Length)
        While stream.DataAvailable = False
        End While
        stream.Read(data, 0, data.Length)


        d = System.Text.Encoding.ASCII.GetBytes("S")
        stream.Write(d, 0, d.Length)
        While stream.DataAvailable = False
        End While
        stream.Read(data, 0, data.Length)
        MessageBox.Show("Test")
 
It takes more than half a second for "Test" message to appear on the screen using Ti Tiva C129 board and Energia.
If we send data byte by byte like this:
client.write('O');
client.write('K');
It works fine.
 
I tried the same program with Arduino Mega and it works fine regardless of how we send it. When using Arduino Mega it takes less than maybe 50 milliseconds for message to appear on the screen
Link to post
Share on other sites
  • 2 months later...

Hi LRA,

There may be an issue with the energia ethernet library. This is what I ended up doing:

Modify the EthernetClient.cpp file and add a custom write function. It is the same as the one already there but comment out this "if (cs->mode)"

Declare the function in the EthernetClient.h as "virtual size_t write_1(const uint8_t *buf, size_t size);"

 

Or simply modify the the existing write function and replace the code with this

size_t EthernetClient::write_1(const uint8_t *buf, size_t size) {
	uint32_t i = 0, inc = 0;
	boolean stuffed_buffer = false;

	struct tcp_pcb * cpcb = (tcp_pcb*)cs->cpcb; /* cs->cpcb may change to NULL during interrupt servicing */

	if (!cpcb)
		return 0;

	// Attempt to write in 1024-byte increments.
	while (stuffed_buffer == false) {
		err_t err = tcp_write(cpcb, buf, size, (0x01));
		if (err != ERR_MEM) {
            tcp_output(cpcb);
            //delay(1);       //new addition
			stuffed_buffer = true;
		} else {
		    if (stuffed_buffer == false){
                tcp_output(cpcb);
                //delay(1);       //new addition
                stuffed_buffer = false;
		    }else{
               //delay(1);
		    }
		}
		//delay(1);
	}
	return size;
}
Link to post
Share on other sites

Thank you very much @@Kap.

Unfortunately I do not have here the board to test it out and i'm only gonna have it like in the 31st.
I was hopping to reach the 10Mbps or the 8Mbps that I've seen people have in arduino.

I wonder if this speed problem was fixed in other energia versions

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...