2004年01月21日

Tiny26Lでシリアル通信

Tiny26で非同期シリアル通信ができた。

tiny26_UART_20040121.zip(ファイル名が違いますがlivedoor blogの仕様ですので自分で変えてください)

注意

  • Timer0を使用している

  • 10MHzのセラロックでは57600bps以上でしか使えない(Timer0のプリスケーラの設定を変えることで変えることができる)



この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/ikehiro/59651
この記事へのコメント
大変参考になりました。これで、ATtiny26も2313などと同様にRS232Cが
使えると感じました。

でも、PB0とPB3 の2つがRXなのは何故でしょうか。
通常なら、RX, TX それぞれ1本あれば間に合うと思うのですが、、。

たった10数本しかないI/Oなので、ちょっともったいないと思っています。
理由をご存知ですか?

Posted by senshu at 2004年02月04日 00:31
大変参考になりました。これで、ATtiny26も2313などと同様にRS232Cが
使えると感じました。

でも、PB0とPB3 の2つがRXなのは何故でしょうか。
通常なら、RX, TX それぞれ1本あれば間に合うと思うのですが、、。

たった10数本しかないI/Oなので、ちょっともったいないと思っています。
理由をご存知ですか?

Posted by senshu at 2004年02月04日 00:31
はじめまして。

>でも、PB0とPB3 の2つがRXなのは何故でしょうか。

ATTiny26のシリアル通信モジュールはシフトレジスタとカウンタがあるだけなので、スタートビット検知等はソフトウェアで行っています。そのために、ピン変化割り込みを用いています。ピン変化割り込みはPB0〜PB3のピン変化を検知しますが、PB0〜PB2はUSIで使われているので、PB3を使っているわけです。

blog本文にも少し書きましたが、Tiny26でUARTを使用するのはいろいろ制約が多いです。Timer0使ってるし、半二重通信しかできないし、ピン3つも使うし。

Tiny26をはじめて見たときは、2313いらないやん!と思いましたが、まだまだ2313は現役ですね。
Posted by IC at 2004年02月04日 01:26
こちらに書いてくれたのですね。

回路図が無かったのではっきりしませんが、

PB1 == TXD
PB3 == RXD

PB0, PB2 はNC(他への利用は厳禁)

ということでしょうか。

これ程の制約があるのなら、USIを使わないソフトウエアUARTでも
同等のことが実現できそうな気がしてきました。

Posted by senshu at 2004年02月04日 09:00
訂正です。

PB1 == TXD
PB3,PB0 == RXD

PB2 はNC(他への利用は厳禁)

かな?
Posted by senshu at 2004年02月04日 09:02
データシートをそれほど精読していないのではっきりとは言えませんが、

>PB2 はNC(他への利用は厳禁)

そうだと思います。データシートによると
<例えば、PB0のピン変化割り込みは2線動作USI、3線動作USIまたはタイマ/カウンタ1反転比較出力が許可されるときに禁止されます。>
だそうなので、PB2も同様でしょう。

>これ程の制約があるのなら、USIを使わないソフトウエアUARTでも
>同等のことが実現できそうな気がしてきました。

そうですね。私もそう思います。Application NotesにUSIを使ったUARTを発見したのでgccに移植したのですが、期待したほどの能力は無かったです。

PWMとUARTを同時に使えないというのがつらいですね。
Posted by IC at 2004年02月04日 11:12
FastAVRや BASCOM-AVR を使えば、たった一行記述するだけで
ソフトウエアUARTが使えます。
FastAVRならこんな感じです。

Open Com=PORTB.0, 9600 For Input As #1
Open Com=PORTB.1, 9600 For Output As #1
Open Com=PORTB.2, 19200, Inv For Output As #2

Do
InputBin #1, a, 3 ' input three bytes thru Com1
Print #1, a; b; c ' print vars on Com1
Print #2, "test" ' print inverted string constant on Com2
Loop

この手軽さを憶えると、USIを採用するのは勇気が要りますね。

Posted by senshu at 2004年02月04日 16:53
本当に楽なんですね。
学生ですので市販のコンパイラを買う余裕が無いです。
Posted by IC at 2004年02月05日 14:40
BASCOM-AVR もFastAVRと類似の機能を持っています。
(しかも、完成度は上かも)

BASCOM-AVR DEMO版は、評価を目的に2kB までは
制限無く利用ができます。(2313, tiny26もサポート
しています)

ぜひ、試してみてください。
AVRとBASICへの評価は激変するかもしれません。

http://www.mcselec.com/download_avr.htm

で入手できます。
Posted by senshu at 2004年02月05日 16:28
uhzdbgj bdtv




Posted by Mothers Day Gifts at 2009年04月11日 06:02
ミリタリーウォッチ
Posted by 漆黒の腕時計 at 2011年09月02日 22:03