lynxeyed-atsu/eXodusino — pull request #3 by nucho (2012-03-18 13:05:18+00:00)
Title: Added SoftwareSerial

Arduino1.0の中のSoftwareSerialを移植しました.
以下のプログラムで,コンソールで打ち込んだものが3pinから出力され,2pinに入力した値がコンソールに表示されます.

#include "ibmary.h"
#include "SoftwareSerial.h"

SoftwareSerial mySerial(2, 3);//rx:2 tx:3

void dummyfunc(void) {
}

void setup() {
//一回attachMicrosecondsをしないとdelayMicrosecondsが動かない
attachMicroseconds(dummyfunc, 1000000);
detachMicroseconds(); //割り込みを停止

Serial.begin(9600);
Serial.println("Goodnight moon!");

// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
mySerial.println("Hello, world?");
}

void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}

本家と比べて以下の問題点を持っています.
1.現状だと負論理のシリアル通信ができない(RXに使っているIOのプルアップ,プルダウンの処理を入れていない)
2.ボーレートは4800bpsと9600bpsのみしか対応していない
3.以下のような書き方をすると,コンパイルできない(コードが肥大化してる?)

void setup() {
attachMicroseconds(dummyfunc, 1000000);
detachMicroseconds(); //割り込みを停止

SoftwareSerial mySerial(2, 3);//rx:2 tx:3
mySerial.begin(9600);
mySerial.println("Hello, world?");
}

普通に使う分には問題なく使えると思ったのでコミットしてみたのですが,どうでしょうか….