]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
bugfix: previously two bytes were written to the U0TXBUF register before one was...
authorjanhauer <janhauer>
Mon, 16 Jun 2008 07:31:21 +0000 (07:31 +0000)
committerjanhauer <janhauer>
Mon, 16 Jun 2008 07:31:21 +0000 (07:31 +0000)
tos/chips/msp430/usart/Msp430SpiNoDmaP.nc

index 9409ecba120d3ab518a52458fe16948465ee3f5c..3fc9d9a7067b07b8353fa2959ff38b21679c3e1b 100644 (file)
@@ -31,6 +31,7 @@
 
 /**
  * @author Jonathan Hui <jhui@archedrock.com>
+ * @author Jan Hauer <hauer@tkn.tu-berlin.de> (bugfix in continueOp())
  * @version $Revision$ $Date$
  */
 
@@ -119,27 +120,24 @@ implementation {
 
   void continueOp() {
 
-    uint8_t end;
-    uint8_t tmp;
-
-    atomic {
-      call Usart.tx( m_tx_buf ? m_tx_buf[ m_pos ] : 0 );
-
-      end = m_pos + SPI_ATOMIC_SIZE;
-      if ( end > m_len )
-        end = m_len;
-
-      while ( ++m_pos < end ) {
-        while( !call Usart.isTxIntrPending() );
-        call Usart.clrTxIntr();
-        call Usart.tx( m_tx_buf ? m_tx_buf[ m_pos ] : 0 );
-        while( !call Usart.isRxIntrPending() );
-        call Usart.clrRxIntr();
-        tmp = call Usart.rx();
-        if ( m_rx_buf )
-          m_rx_buf[ m_pos - 1 ] = tmp;
-      }
-    }
+   uint8_t end;
+   uint8_t tmp;
+
+   atomic {
+     call Usart.tx( m_tx_buf ? m_tx_buf[ m_pos ] : 0 );
+
+     end = m_pos + SPI_ATOMIC_SIZE;
+     if ( end > m_len )
+       end = m_len;
+
+     while ( ++m_pos < end ) {
+       while( !call Usart.isRxIntrPending() );
+       tmp = call Usart.rx();
+       if ( m_rx_buf )
+         m_rx_buf[ m_pos - 1 ] = tmp;
+       call Usart.tx( m_tx_buf ? m_tx_buf[ m_pos ] : 0 );
+     }
+   }
 
   }