2013年6月29日土曜日

AVR ATTINY2313のシリアルポートがやっと動いた

ずっと前からうまく動かなくて放置していたのだが、久々に思い立って試してみた。
シリアルポートに0xff=>0x55=>0x00を、それぞれボーレート/10*2回ずつ送信する。
テスターで電圧を計ればHigh=>Mid=>Lowと2秒ごとに電圧が変化するはず。
んで、試したら切り替わりに10秒以上もかかるので、ボーレートクロックの設定誤りと判定。
LowヒューズのCKDIV8で8分周されているためだった。

なぜだか、CPUは1MHzでも、シリアルポートやタイマーは8MHzで動くものと思い込んでしまっていた。
データシートを見てもはっきりした説明が見当たらないのだが、ぬかったなぁ〜。

ちなみにhidspxで以下の操作をした。
Lowヒューズへ0xe4を書き込み
% hidspx -phu -fl0xe4
確認する
% hidspx -phu -rf
Detected device is ATtiny2313.

Low: 11100100
     ||||++++-- CKSEL[3:0] システムクロック選択
     ||++-- SUT[1:0] 起動時間
     |+-- CKOUT (0:PD2にシステムクロックを出力)
     +-- CKDIV8 クロック分周初期値 (1:1/1, 0:1/8)

High:11-11111
     |||||||+-- RSTDISBL (RESETピン 1:有効, 0:無効(PA2))
     ||||+++-- BODLEVEL[2:0] (111:Off, 110:1.8, 101:2.7, 100:4.3)
     |||+-- WDTON (WDT 0:常時ON, 1:通常)
     ||+-- SPIEN (1:ISP禁止, 0:ISP許可) ※Parallel時のみ
     |+-- EESAVE (消去でEEPROMを 1:消去, 0:保持)
     +-- DWEN (On-Chipデバッグ 1:無効, 0:有効)

Ext: -------1
            +-- SPMEN (SPM命令 1:無効, 0:有効)

Cal: 89 87

0 件のコメント:

コメントを投稿