Arduinoで遊ぶページ

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

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

概要

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

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

ソースコード

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

void HardwareSerial::end()
{
  // wait for transmission of outgoing data
  flush();

  cbi(*_ucsrb, RXEN0);
  cbi(*_ucsrb, TXEN0);
  cbi(*_ucsrb, RXCIE0);
  cbi(*_ucsrb, UDRIE0);
  
  // clear any received data
  _rx_buffer_head = _rx_buffer_tail;
}

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

void HardwareSerial::end()
{

flush()を呼び出し、未送信のデータを送信します。

  // wait for transmission of outgoing data
  flush();

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

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

_ucsrb(UCSR0B)のUSARTの受信禁止(RXEn)、送信禁止(TXEn)、RXCnフラグの割り込み禁止(RXCIEn)、UDREnの割り込み禁止(UDRIEn)をcbi()を使ってクリアします。

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

  // clear any received data
  _rx_buffer_head = _rx_buffer_tail;
}

バージョン

Arduino 1.8.2



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

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