« 2007年10月 | トップページ | 2007年12月 »

2007年11月の10件の記事

2007.11.28

100,000超えました

いつもこんな大したネタのないページを見ていただいてありがとうございます。

おかげさまでカウンタ100,000超えました。

どなたがキリ番踏んだんでしょ?

| | コメント (0)

2007.11.25

ロボファイト6行ってきました。

行ってきました。

Robo20071125_1ウチと同じく木製ロボ エコーのりひとさんの新作の多脚ロボと。
名前はまだないそうで、単に「プロトタイプ」と呼ばれているそうです。

レスキューの実験機だそうで、上半身(?)は次期エコーと共用だそうです。

Robo20071125_2当然のように合体!

サイダイゲキファイヤー! バーニングアップ! (嘘)

槍と盾はLIGHTさんからお借りしました。

Robo20071125_3プロトタイプにSS-NANOSの顔、mkIIの顔に自爆ボタンモバイルを付けられました。

下からあおると、竜騎兵って感じでイカス!

Robo20071125_4Kinopyと森の仲間たち。

こういう可愛らしいのを作るセンスは私にはないなぁ。

Robo20071125_9平行リンク足のKさんのアームドールと。
ついに我々平行リンク足の時代が来ましたねぇと談笑。

Robo20071125_5懇親会にて。
i-SOBOTアスリートinくいだおれ。

操作チャネルを1つに揃えて実験。
果たして量産品であるi-SOBOTに固体性能差はあるのか!?

Robo20071125_6各機一斉にスタート!

Robo20071125_7holypong機コースアウト。

Robo20071125_8バラバラ...

優勝は道楽機。 多分。

試合?

ええ、負けました。
直前整備のミスで肩のサーボホーンがバッテリに干渉するため、スリップで転倒後、起き上がれずにタイムアップ。

軽く干渉してただけなので、十分なトルクがあれば押し切っていたかもしれませんが、焼損のため前日に交換したサーボのスペックダウン(9.2kg・cm→4kg・cmくらい?)でそれも適わず。

本番、弱っ。


※今回気が付いたこと※
今回、SRCにはエントリが69名もいたのですが、制御系も含めて全てフルスクラッチなの、私だけ...
いや、HIDEさんもそうかな。
ORCだと人形つかいさんがいるけど。

あと、MicroMGや中国製激安サーボ使いも、Kさん、ルチオさん、私くらい...

もはや絶滅種か。

ちょっとさびしい。

学生さん達にはもう少しがんばって欲しいと思う今日この頃。
強いだけではつまらんぞ。

| | コメント (12)

2007.11.23

明日はロボファイト

Robo20071123_1明日はロボファイトなので準備中。

新コアはやはり間に合わなかったので旧コアでmkIIライトウェイトバージョン。

今日、半年振りに通電しましたが、基盤の通信系が断線してました。
原因究明が難航して結構時間食われました。

現在、軽量化改造対応でモーションの調整していますが、リンクが飛び出したネジに干渉してて知らぬ間に右肩サーボ(JR DSR581)のFETが焼けてました。
うーん、スペアが無い。

しょうがない。 TowerPro SG5010にスペックダウンで。
起き上がりとか、トルク足りるかな?

軽量化した分、歩行速度は格段にアップ。 これなら3mを10秒も射程圏内。

| | コメント (0)

2007.11.17

軽量化

機動力向上を図るためmkIIを軽量化。

Robo20071117_1

苦労の甲斐あって、推定約30%の軽量化を実現。


ロボファイトでは間に合えば新コアのテストベッドにするため、HIROMUは連れて行きません。

| | コメント (0)

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.11.10

もう1つのオチ

AVR Studioをインストールしなおしてシミュレータのtiny861のI/Oレジスタが直ったのはいいのですが、それでもタイマ0は回ってくれません。

何か設定が悪いのか(といってもデバイス選択以外に設定できそうなことも無いのだけども)と思ってシミュレータのHelpを見ていたら、 Known Issues として、


Notes for ATtiny261/461/861

Timer/Counter 0 and Timer/Counter 1 are not simulated.  ←!!

The ADC noise reduction function is not supported. Setting the ADIF flag will not wake the CPU from sleep mode. The initial dummy conversion after enabling ADC is not simulated.

The Watchdog is not simulated.



..... orz.....

いや、実機でちゃんと動いてるからいいんですけどね。
ここ数日いらぬことで悩んでたな。

| | コメント (0)

直りました

AVR Studioのシミュレータの件、AVR Studioをインストールしなおしたら直りました。

ウチの環境が悪かったようです。
お騒がせしました。

| | コメント (0)

さらに不可解

AVR Studioのシミュレータでのtiny861の続き。

機動モバイル兵器 VAIO-U50 上で動かしてみるとまた状況が違うようだ。

昨日動かしたときはさらにひどくて、主力DELLノートでおかしかったところに加え、タイマ0に関連するところとして、カウンタもおかしかった。

本来、tiny861ではタイマ0に16ビットタイマが使えることから、タイマ0のカウンタは TCNT0H(上位バイト)と TCNT0L(下位バイト)に分かれており、この2つは独立した8ビットカウンタとしても使用できる。

しかし、昨日VAIO-U50で動かしたときには、タイマ0用カウンタとしては、8ビット用カウンタ TCNT0 1本しか存在しなかった。(他にもぱっと見でおかしいところはあったがキリがないので割愛。)

さらにしかし、先ほどその画面のスナップショットを取って注釈入れようとしたら.... VAIO-U50側、正しいじゃん。
昨日言っていた TCCR0AやPCMSK0,PCMSK1のアドレスもデータシート通りだし...
すべてのI/Oレジスタ見たわけじゃないけど、合ってそうな感じ。

Robo20071110_1

ナゼ?

バージョンはどちらも、
AVR Studio Version 4.13 Service Pack 1 Build 557
AVR Simulator 1, 0, 2, 0
WinAVR 20070525


原因が分からず直っても、どういう条件だとおかしくなるか分からないので気持ち悪い。
DELLノートの方は相変わらずダメだし。

もちろん、GCC使わずに Atmel AVR Assembler で新規プロジェクト立てても同様です(GCCは無実)。

| | コメント (3)

2007.11.09

AVR Studioのtiny861の定義

AVR Studioのデバッグ用シミュレータのtiny861のI/Oレジスタ定義って間違ってないっすか?

ここのところ、GCCでtiny861のタイマ割り込みのテストしてるのですが、シミュレータ上でタイマのカウントすら動いてくれません。
まだ実機確認したわけではないのですが、シミュレータのI/Oレジスタのアドレスがどうもデータシートと違うように思います。

たとえば、タイマ0設定関連のTCCR0Aですが、データシートではアドレスが 0x15(0x35) となっているところ、シミュレータでは 0x2A(0x4A)となっています。

シミュレータ上の 0x15(0x35) には ピン変化割り込み関連の PCMSK0とPCMSK1 の2つが張り付いています。
(1つのアドレスに2種類のレジスタが張り付いてること自体もおかしいし。)

データシートではPCMSK0とPCMSK1はそれぞれ、0x23(0x43) , 0x22(0x42) となっています。

実際、GCC上で、

 TCCR0A=0b10000000;

としてコンパイルし、シミュレータでステップ実行すると、TCCR0Aは変化せず、

 PCMSK0=0b10000000
 PCMSK1=0b10000000

と変化します...
コンパイラは TCCR0Aは0x15(0x35)としたマシンコード吐いてるのに、シミュレータが 0x15(0x35)はPCMSK0とPCMSK1だとして処理している結果ですね。


う~ん、この辺、ネット上には転がってなさそうでしたがどなたか情報お持ちじゃないですか?

| | コメント (1)

2007.11.05

ソフトUARTとMMC関数移植完了

やっとAVR GCC用にソフトUARTとMMC関数移植完了しました。

MMCは難航しました。
tiny26でテストしていたのですが、UARTでデバッグ情報を出力してたら、その文字列リテラルでなけなしのRAM(128バイト)が食いつぶされてたり、ループカウンタが最適化の煽りでうまく回ってなかったりで、どうも本質的なことでつまるというより、環境によるものが多かったです。

教訓としては、
・デバッグ用なんかの文字列はめんどくさくてもFLASHのプログラム領域に置くようにする。
・最適化は最初は外してテストすること。容量が許すのであれば最適化は不要。

なんとなくコツも分かってきましたし、とりあえずこれでCでizCOREのメイン部分が組めそうです。

ソフトUARTとMMC周りのコンパイル後のサイズですが、最適化なしで1200バイトくらい食いました。
最適化最大で800バイトくらい。

ちなみにオールアセンブラだと2年前のおよそ同様の実装で600バイト強くらいでした。

こんな感じなのでtiny26はプログラム領域が2Kバイトしかなく、この先苦しそうなので、tiny861買いました。

| | コメント (0)

« 2007年10月 | トップページ | 2007年12月 »