chottoshitahanashi’s diary

基本的に間違ったことばかり書いてるブログ。検索ひっかかるな

ATTiny85でソフトウェアシリアル

できた。

スケッチでは

void setup() {
  mySerial.begin(9600);
}

とし、puttyではSpeed 1200にしないといけなかった。
これはおそらくt85のFUSEはデフォルトで内部クロック8MHzを8分周した1MHz駆動しているのに対し、
ATTinyCoreはFUSEを書き換えた8MHz駆動を想定しているため(もしUNOのコードを変えないでそのまま使ってるならUNOが16MHzなので9600/16でSpeed 600にしないといけないはず、だと思うけどそんな単純な話ではないかも)。


追記:正解。ATTinyCoreでクロック数を指定できるオプションがあった。

ウォッチドッグはまた別のタイマーなので影響受けない。


その他注意点:

  • FTDI USBシリアル変換アダプタ―は電源も供給してくれる(知らんかった)
  • COMはデバイスマネージャのポート(COMとLPT)で番号確認、puttyで接続時に使用
  • FTDI USBシリアル変換アダプタ―のTx, RxはPC側のものソフトウェアシリアルで設定したT85のTx, Rx対応ピンとは逆につなげる。
  • FTDIアダプターもバッファがあるみたいでputtyで読み込んであげないと出力されなくなる。


テストコード。Arduinoの関数に頼りまくり。

#include <SoftwareSerial.h>

#define RX_PIN 0
#define TX_PIN 1

SoftwareSerial mySerial(RX_PIN, TX_PIN);

void setup() {
  mySerial.begin(9600);
}

void loop() {
    mySerial.println("HELLO from ATTiny85");
    delay(1000);
}