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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
12/30/06 12:51
Modified:
  12/30/06 12:59

Read: times


 
#130243 - answer is partially incorrect
Responding to: ???'s previous message
Russel,

I don't want to score your message as incorrect because it has many good points, but the last one about atomicity is incorrect.
    mov a, TX_BUF_HEAD    ;TX_BUF_HEAD is not changed in the ISR
    xrl a, TX_BUF_TAIL    ;this is an atomic read
    JZ TX_BUF_EMPTY_TEST
TX_BUF_NOT_EMPTY: 
    mov R0, TX_BUF_HEAD 
    mov @R0, TX_DB 
    inc TX_BUF_HEAD       ;this is an atomic increment
    anl TX_BUF_HEAD,#31   ;loop around

Only TX_BUF_TAIL is changed in the ISR and thus needs atomic read access in the main thread. Since it is only 1 byte the read is atomic by design.

TX_BUF_HEAD is read in the ISR so updates in the main thread need to be atomic. Since it is also only 1 byte and incremented using inc this is fulfulled too. It will also need an overflow check for buffers <> 256 to make it a ring buffer. If the ISR does this too after the read there is no problem.

Maarten

List of 21 messages in thread
TopicAuthorDate
the nature of the UART/steping through interrupts            01/01/70 00:00      
   Uart is full duplex            01/01/70 00:00      
      Thanks Russell            01/01/70 00:00      
   UART Question Part 2            01/01/70 00:00      
      You can not do both            01/01/70 00:00      
         In response to Neil            01/01/70 00:00      
            go with the bit            01/01/70 00:00      
         In response to Neil            01/01/70 00:00      
         In response to Neil            01/01/70 00:00      
            Sorry for teh tripple post...            01/01/70 00:00      
      More...            01/01/70 00:00      
         Search and Read            01/01/70 00:00      
         Thanks Russell            01/01/70 00:00      
         I hope Russell did not lead you down the garden pa            01/01/70 00:00      
            Erik - garden path indeed!            01/01/70 00:00      
               I'm using interrupts            01/01/70 00:00      
   Question about my interrupt driven UART            01/01/70 00:00      
      You know the answer.            01/01/70 00:00      
         Thanks Russell            01/01/70 00:00      
         answer is partially incorrect            01/01/70 00:00      
   Can't single step on UART            01/01/70 00:00      

Back to Subject List