カテゴリー「備忘録」の4件の記事

2007.11.11

■備忘録■tiny26 と tiny261/461/861の違い

GCCを使ってtiny861でタイマ割り込みによる一定間隔でAD変換を行い、UARTでPCに送るところまでテスト完了。

これまで tiny26で組んでいたものを tiny861に移植するにあたって、その違いにより少しハマったところをざっと記しておく。
(従来のアセンブラソース→Cへの違いを除いたプロセッサ仕様上の違い。)

ATtiny261/461/861はATtiny26の機能強化版。ATtiny261/461/861はそれぞれ、メモリ容量が
 ATtiny261: 2KB , 128B , 128B
 ATtiny461: 4KB , 256B , 256B
 ATtiny861: 8KB , 512B , 512B
と違っている他の仕様は同じ。
(左からプログラム領域のFLASH, SRAM , EEPROM)

ちなみにATtiny26 は
 ATtiny26 : 2KB , 128B , 128B

機能上の主な強化点は タイマ関連とADC関連、あと新機能として外部からの供給クロックを分周してシステムクロックとする機能。
このあたりの微妙な違いによってtiny26のソースがそのままでは意図どおり動作してくれなくなる。

■システムクロックを外部供給された物から分周
 外部クロックで動かす場合、クロック分周はI/OレジスタCLKPRのCLKPS0~3で分周無しから最大256分周の範囲で設定できるようになったようだが、その初期値はヒューズビット CKDIV8 によって決まってくる。
 CKDIV8 がプログラム(0)されると起動時はこれが8分周される設定となる。
 つまり、10MHz与えてもシステムクロックは1.25MHzとして動作する。
 非プログラム(1)の場合は分周なしで起動。 即ち10MHz与えたら最初から10MHzで駆動する。

 出荷時設定はヒューズビットCKDIV8 はプログラム(0)となっているようなので、注意が必要。
 最初、こんなのが追加されていることを知らなかったのでうまく通信が出来なくてハマりました。

Robo20071111_1AVR Studioのライタで見た場合は、[Fuses]タブで "Devide clock by 8 internally; [CKDIV8=0]" にチェックが入った状態で出荷されている。

このチェックが入っていると、供給クロックを8分周したものが起動時のシステムクロックとなる。
外せば起動時で分周なし。

分周値は動的に変更可能なので、チェックが入ったままで起動時に分周値を1に変更してやってもいい。

余談となるが、この動的なシステムクロック分周変更をうまく使えば、システムクロック256分周、タイマ0前置分周1024として16ビットタイマのオーバフロー割り込みとすれば、10MHzの外部クロックでも最大1718秒もの長周期のタイマ割り込みが使えることになる。
処理のときはシステムクロックを1/1にしてやればいいので、処理時のプロセッサパワーと待機時の低消費電力を両立できる。

■タイマ0が16ビット化(または8ビットx2)されている。
 機能拡張に伴い、従来とタイマ関連のI/Oレジスタ名等が変更されている。

■ADCで内部基準電圧を使う場合、これまでのソースコードのままだと1.1Vが基準になってしまう。
 ATtiny26の場合内部基準電圧は2.56Vのみだったが、ATtiny861では2.56Vと1.1Vが選択可能となっており、その切り替えは新設されたI/OレジスタADCSRBのREFS2ビットで行われる(デフォルトは1.1V)。
 そのため、内部基準電圧2.56Vの従来通りのソースをそのまま動かす(ADCSRレジスタはADCSRAに変更が必要)と、1.1Vが内部基準電圧として使われることとなり、取得値も当然違ってくる。

およそこんなところか。

必要に応じてデータシートを見比べる必要があります。
HERO'S Downloadで日本語訳されたデータシートで比較するとATtiny26とATtiny261/461/861で1.5倍ほどのボリューム差があります...

| | コメント (0)

2007.10.05

■備忘録■VAIO-U50のPXEブートその2

VAIO-U50のPXEブートの続き。

成功したので備忘録として手順を記しておく。

使用したのはライブCDの部屋版の KNOPPIX 5.1.1/CD(高速起動版)

結論から言うと、これであれば特に迷うことなくあっさり起動する。
やはり産総研版では駄目なようでした。

以下、手順。

ネットワーク構成として、今回は親機(KNOPPIX Terminal Serverを提供)と子機(VAIO-U50)をクロスケーブルで直結した。

もちろん既設のLANに繋いだままでもPXEブートは可能なのだが、仕掛け上、子機は親機からDHCPでアドレスやブートローダダウンロード用のTFTPサーバやファイル情報などをもらったりするので、他にブロードバンドルータ等でDHCPが動いてると、そちらが子機からのDHCPブロードキャストに先に反応したりしてうまくいかない。
また、DHCPブロードキャストが子機から親機に届かないといけないので、ルータ等の設定も必要だろう。

まずは親機の起動。

これはダウンロードしたisoファイルをCDに焼いてそれで起動すればよし。
BIOS設定での起動順に注意するくらいで特に迷うことはない。

KNOPPIXが上がったら、あとは以下の通り。
Robo20071005_1Start KNOPPIX Terminal Serverを選択。

Robo20071005_2[OK]。

Robo20071005_3一番上の setup (Re)configure server and (re)start を選択して[OK]

Robo20071005_4使用するLANポートを選択して[OK]

Robo20071005_5これは[NO]を選択。
今回の環境ではこの親機に対してDHCPでアドレスを与えてくれる者はいない。

Robo20071005_6ここから親機自身のTCP/IP設定。
ネットワークの構成によってはここ以降各自の環境で適宜変更が必要だが、クロスで直結してて他に繋がってる物が無ければ全てデフォルトでOK。

Robo20071005_7

Robo20071005_8

Robo20071005_9

Robo20071005_10ここまでが親機自身のTCP/IP設定。

Robo20071005_11子機向けのDHCP設定。
これもクロスで直結なら触る必要なし。[OK]。

Robo20071005_12子機のLANアダプタのドライバを選択。
VAIO-U50は IntelのPRO/100 なのでこれが有効になっていることを確認して[OK]。

Robo20071005_13子機でroot権限での作業が必要な時は、secure: Disable root on client(s) を無効にする。[OK]。

Robo20071005_14[OK]。
(子機でのbootオプションを指定したいときは入力。)

Robo20071005_15[Yes]。

DHCP、TFTP、NFSのサービスが起動するのでCDがおとなしくなるまでしばらく待ち。
これで親機の準備は完了。

子機側は、BIOS設定でPXEブート(ネットワークブート)の優先順位をHDD等より上げておく。

VAIO-U50の場合は、
1. 電源投入時、F2でBIOS設定画面へ
2. Advancedメニューで Network boot を Enabled に
3. Bootメニューで Network の優先順位を上に持っていく
4. 保存して終了


Robo20071005_16これでめでたく立ち上がる。

ライブCDの部屋の管理人さんに感謝。

| | コメント (0)

2007.04.16

■備忘録■AT90S2313をAVRISPmkIIで使えるようにする

AVRISPmkII非対応の旧デバイスAT90S2313をAVRISPmkIIで使えるようにします。

C:\Program Files\Atmel\AVR Tools\Partdescriptionfiles
(AVRStudio4のインストール先がデフォルトのままの場合)
にある AT90S2313.xml を開きます。
このファイルの最後の方、
------------------------
      :
    </STK500_2>
  </ICE_SETTINGS>
</AVRPART>
------------------------
となっているところを
------------------------
      :
    </STK500_2>
    <AVRISPmkII/>
  </ICE_SETTINGS>
</AVRPART>
------------------------
とします。 ("<AVRISPmkII/>"を追加。)Robo20070416_2拡大

Robo20070416_3これでめでたく AVRStudio4 - AVRISPmkII -AT90S2313の組み合わせで使用できます。

読み・書きとも問題なく動くことを確認しました。

ただしAT90S2313の場合、ヒューズビットやロックビット変更はパラレルライタが必要で、ISPは使えませんので注意。
(AT90S2313の場合はあまり使わないと思いますが、AT90S1200等を同様にして対応させてもクロック元の内部/外部切り替えの設定変更は出来ないと思います。)


■背景■
これまではizCOREに使用しているAVRマイコンの書き込みには、パラレルポート直結の自作プログラマ(ライタ)を使用していましたが、現在のメインPC(DELLノート)にはパラレルポートがありません。

残念ながらこの手のレガシーポートを直駆動するタイプのアプリケーションはUSBからの変換などでは動かないことが多く、仕方なく旧デスクトップが巨大なマイコン書き込み機として残っていました。

Robo20070416_1USBでも利用できるプログラマとして、自作事例やキット等もあるのですが、この際なのでATMELの純正プログラマ AVRISPmkIIを購入してみました。

しかし、残念なことにAVRISPmkIIでは現行izCOREで使用しているAT90S2313のような旧デバイス(名前にTinyとかMegaとかついてないやつ)はサポート対象外です。

このこと自体は購入前から分かっていたことなのですが、この『サポート対象外』は「サポートしないけど繋げば動くんじゃないかなぁ」くらいに楽観的に考えて購入しました。

で、試しに繋いでAVRStudio4からAVRISPmkIIでAT90S2313に書き込もうとしてみましたが、ホントに動きません...○| ̄|_

いや、今後AT90S2313使わなければいいのですが、現izCORE等、まだまだウチでは現役です。
(秋月で安かったのでスペアにいっぱい買っちゃいました。)

このままでは旧デスクトップも相変わらず書き込み機として現役続投させる必要があります。 困りましたね。
ってことで調べてみました。

ネタ元は2chのAVRマイコン総合スレです。

| | コメント (0)

2007.02.26

■備忘録■サーボホーン互換性

サーボホーンの互換表です。いつも迷うので備忘録としてまとめてみました。
あちこちググった結果をまとめました。 MicroMG , NARO+BB , S3103は自分で確認したものです。

メーカスプライン歯数
GWS(MicroMG , NARO+BB) , Futaba(S3103)21
KO , SANWA , JR23
HITEC24
Futaba , TowerPro , MiniStudio , BlueBird , GWS25

同じ枠内にあるものは互換性があり交換可能。
とりあえず標準サイズ+MicroMGと互換性のあるマイクロサーボだけ。
(メーカ名だけのやつは標準サイズです。)

間違いがあればご指摘ください。

HITEC、他メーカで合うホーン無いのね...

| | コメント (0)