Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
12/26/07 22:20
Read: times


 
#148750 - single, double and ring buffer
Responding to: ???'s previous message
a ring buffer is just the recipe.

As you always say, ring buffer is heavy.
Then, depending on the protocol on the RS232, simpler buffering, like single buffer or double buffer, is applied.

For example,
The PC doesn't send next command packet until the device returns acknowledge over RS232. In this case, a single buffer of the max command packet size is enough to handle the UART RX.
When the device receives the entire packet on the buffer, the ISR sets a flag to notify it to the main-loop task. The main-loop task handles the packet, clears the buffer index and the flag, and returns acknowledge to the PC.

Another example,
The PC sends data packets of fixed length to the device continuously.
A double buffer of the packet length each will handle this data stream.
While the main-loop task handles the last packet in one buffer, the ISR receives current packet into another buffer. When the entire packet is received, the ISR swaps the buffer and notify it to the main-loop task.

Tsuneo

List of 34 messages in thread
TopicAuthorDate
Having problem on using interrupt            01/01/70 00:00      
   Answers            01/01/70 00:00      
      not so fast, Cristoph and to Ragu            01/01/70 00:00      
         Serial comm is slow.            01/01/70 00:00      
            if you read the OP            01/01/70 00:00      
               good interupts            01/01/70 00:00      
                  AAAAAARGH            01/01/70 00:00      
                     not AAAAAAAARGH            01/01/70 00:00      
                        OH YES            01/01/70 00:00      
                           do You ever avoid "non-debuggable"?            01/01/70 00:00      
                              always            01/01/70 00:00      
                                 nice            01/01/70 00:00      
                                    a trick for "long ISRs" better than a RTOS            01/01/70 00:00      
         Buffered RX            01/01/70 00:00      
            not much difference            01/01/70 00:00      
               You are right            01/01/70 00:00      
   Sucess with interrupts            01/01/70 00:00      
      Isn't it too short?            01/01/70 00:00      
         the reason for circular buffers            01/01/70 00:00      
            Worst case, instead of average            01/01/70 00:00      
               absolutely, just worst case is not as bad            01/01/70 00:00      
                  single, double and ring buffer            01/01/70 00:00      
                     single, double and ring buffer app dependent            01/01/70 00:00      
         and some more reasons to use (circular) buffers            01/01/70 00:00      
            buffer overflow error            01/01/70 00:00      
               Buffer overflow handling            01/01/70 00:00      
                  Buffering options            01/01/70 00:00      
                     Beauty contest !            01/01/70 00:00      
                        flexible is the best?            01/01/70 00:00      
                        Simplicity is always better            01/01/70 00:00      
                           simple is another word for            01/01/70 00:00      
                              Where is the borderline to stumble on            01/01/70 00:00      
                                 Copper Oxide            01/01/70 00:00      
               please exclude me from the 'we'            01/01/70 00:00      

Back to Subject List