This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Serial communication

Hi, I tried communication between two uC. Steps are
1) uC1 sends a request (1 byte) to uC2.
2) On receiving this byte, uC2 sends three bytes of data to uC1.
3) uC1 waits for completion of the data reception and stores the data in an array.

All the three steps works ( I am able to display the received bytes correctly using LEDs)
But the problem is I need to add about 1sec delay before every time request is sent from uC1.

(I set a flag to low before sending the request, this flag (global bit) is set to one by the UART ISR when 3 bytes are received. After sending the request, the main program waits for this bit to become high, and then proceeds.Without the additional delay, this bit does not seem to change.)

Is there anything wrong in my method? Why this delay becomes necessary?

Parents
  • But you do need a delay since it takes more time to send 3 characters than it takes to send 1 character. So the processor sending 1 character have to spend some time waiting until 3 characters have been received before starting a new request -
    This could misinterpreted.
    you need to wait till the 3 characters are received, but that would be wrong to do by a delay, rarther count the bytes and do not send till 3 are received. It would be prudent to run a timeout on this so that some error handling would take place if the bytes were not recieved before time x.

    Erik

Reply
  • But you do need a delay since it takes more time to send 3 characters than it takes to send 1 character. So the processor sending 1 character have to spend some time waiting until 3 characters have been received before starting a new request -
    This could misinterpreted.
    you need to wait till the 3 characters are received, but that would be wrong to do by a delay, rarther count the bytes and do not send till 3 are received. It would be prudent to run a timeout on this so that some error handling would take place if the bytes were not recieved before time x.

    Erik

Children