Arduinoで遊ぶページ

Arduinoで遊んだ結果を残すページです。
garretlab
Serial.end()/HardwareSerial::end()

Serial.end()/HardwareSerial::end()

概要

HardwareSerial::end()は、シリアル通信を終了し、RXピンとTXピンを通常の入出力を行うように設定します。リファレンスはこちら

HardwareSerial::end()では、UCSR0Bレジスタを操作します。

ソースコード

HardwareSerial::begin()は、hardware/arduino/cores/arduino/HardwareSerial.cppに定義されています。以下に全ソースコードを示します。

void HardwareSerial::end()
{
  // wait for transmission of outgoing data
  while (_tx_buffer->head != _tx_buffer->tail)
    ;

  cbi(*_ucsrb, _rxen);
  cbi(*_ucsrb, _txen);
  cbi(*_ucsrb, _rxcie);  
  cbi(*_ucsrb, _udrie);
  
  // clear any received data
  _rx_buffer->head = _rx_buffer->tail;
}

入力はありません。戻り値もありません。

void HardwareSerial::end()
{

未送信のデータがある場合は、送信されるのを待ちます。

  while (_tx_buffer->head != _tx_buffer->tail)
    ;

次に、レジスタを設定します。

  cbi(*_ucsrb, _rxen);
  cbi(*_ucsrb, _txen);
  cbi(*_ucsrb, _rxcie);  
  cbi(*_ucsrb, _udrie);

USARTの受信禁止(RXEn)、送信禁止(TXEn)、RXCnフラグの割り込み禁止(RXCIEn)、UDREnの割り込み禁止(UDRIEn)に設定します。

最後に、受信バッファをクリアします。

  _rx_buffer->head = _rx_buffer->tail;
}

バージョン

Arduino 1.0.5



メニューを表示するためにJavaScriptを有効にしてください。

Arduinoで遊ぶページ
Copyright © 2012 garretlab all rights reserved.
inserted by FC2 system