2010年11月30日火曜日

秋月でTiny861が増えてた。

秋月って、新製品情報欄以外で、勝手に増えるんですね。TQFP32変換基板も・・・いつの間にって感じでしたが・・前から有った、Tiny26 の置き換えみたいですが・・200円は微妙か・・

結構完璧みたい。

T2313のFastLoadを作り、MikroBasic Pro AVRで作ったシリアル通信のHEXを転送したら、ターミナルとシリアル通信出来ました。
Fastloadの方は、ソフトシリアルですが、T2313にTX/RXに割り当て、MikroBasicからは、UARTとの通信と言うアプリを作って、アップロードしたんですが、無事に通信できました。

動作は、ワザと遅くしただけあって、トロいです。T13 T45 T2313ともに、RESETはI/Oに指定してあるので、アプリから利用出来るはずです。

MikroBasicから転送出来るなら、同じHEXですから・・Arduinoからでも行けるでしょう。

計画通り、電源切断で、Bootloaderが立ち上がり、5秒くらいほっとくと、入ってるアプリが動作します。

接続は、FTDIで試しました。

若干接続エラーが出るのは、どうやら、OSXの上のVMだからと、WINの悪癖っぽいから問題無いのではと思います。

先日作った電源切断機を入れてみたけど、それはダメみたい。あまりに瞬間的すぎるのか・・切れてないのかも知れません。Arduinoのコンデンサのパルスで、TRを動かしてるだけなんですが・・落ちてないのかもね。
しょうがないから、途中に、T13でも入れて、それを、Arduinoみたいにリセットさせて、リセット後、0.1秒位電源切るような感じにします。
まあ、元々の計画が、Nゲージとかの小さなストラクチャに、個別にマイコン入れて、外からコードを書き込みたい。(マイコンはほぼ空中配線だと思う)なので、付加回路を出来るかぎりシリアル変換機に入れたいので・・別に問題無いでしょう。

思ったより簡単だった。

Tiny45とTiny13のFastloadと言う、結構古いブートローダーを作った。
想像以上に簡単だった。
これが、Windows DOSプロンプトでのロード画面、下がt13A上がt45で、t13は9.6MHz t45は8MHzで動いてる。・・動かなかったのは最初の一回だけだった。(それも配線ミスかも)
コード入れてみないと解らないが、たぶん問題無いと思う。
これは起動時に、ブートローダーが、規定秒数立ち上がるタイプ(リセットが有るならリセットでもいいが)このt13/t45は、Reset を I/Oにしてるから、リセット出来ない。
ソースでは、0.33秒待つ設定だったが・・もうちょっとトロい方が操作しやすいので、1秒にした。
先日作った、TRを入れた、Arduino用電源Reset回路を応用すれば、オートリセットが可能なはずだ。Arduinoへの組み込みは・・必要なのは、ポートとHEX名位だから、簡単なんじゃないかとも思ってる。今の所、デフォルトの転送速度で送れてるし・・

2007年とか言う、割と古いバーションの、asmから作った。win-gccのコードのが、2010台のなのだが、これはコンパイルすると結構こけるので、目的を達成すればいいので・・バグが無ければこの古いままでもいいと思ってる。

まだ1ワイヤでの流れは出来てないが、どうやら・・PC側ソフトの問題っぽいので、後回し。
調べてたら、でんし研氏のとこにも、1ワイヤシリアルでの、ライターソフトなど有ったから、割と難しく無いっぽい。・・それと電源式のリセットが通用すれば、3本通せば良い事になる。通信用はたったの一本で済むと・・そうゆう事になる。

Fastboot(load)のサイトは、ほとんど、絵も無いサイトなので・・・回路図は1個しか無かったし、なんたって、ドイツ語だし・・予測で読むしか無いけど、どれでも出来たんだから立派かも。

t84 t2313も作っちゃおう・・Linux(OSX)用のアップローダーのソースも有ったから、一応Arduinoの守備範囲はカバーする事になる。

ちょこちょこっとArduinoで書いてみて、アップロードさせて見るか・・

PIC用のブートローダーも一日でなんとかしたんだけど・・一番小さいのが、18ピンの、PIC16F88だったから、8ピンとかにISPしないでいいと言うのは、私の中では結構新しいです。
その上SOPですから・・豆サイズですね。

8PIN AVRのブートローダー作り始めました。

何を一番最初に作ったかと言えば・・フューズ失敗した時のリセッターでした。

でんし研さんのとこで、公開してるこれです。

RESET端子とか、FUSE設定のミスは、何度も痛い目見てて、ついこないだ、試作のOptibootのT45用を入れて、2個しか無い、T45を2個ともノーファンクションにしてたんです。

使おうとしてるFastBootは、なんとReset Pinを、RXに使います。リセッタ作らなかったら、大変やばい仕様なので、とりあえずここからです。t85は、一個DIP変換基板を付けたので、t13が、3個(一個リセッタに据え置きしてる)t45が2個、t85が一個で始めます。(SOPでいきなり組んじゃって、リセットなんて嫌ですからね)

OSは何にしろ、とりあえず動くはずなので・・動くまではそれほどでも無いと思いますが、OSのローダーの方と、(うちは意地でもOSX)Arduinoのバイナリが動くか・Arduino IDEに組み込めるか・・(t45とt85だけの予定)・・t13は、簡易I/Oの組み込みに使えればいいので(どっちかと言えば、PIC10と、低次元PIC12の代用)配線数の縮小(3本)と言うのがネタです。
Arduinoで使えるとしたら、サイズが、512BでOptibootと同じなので、結構な事は出来るのでは無いかと期待してます。私のこのサイズのマイコンの機種統一の計画も含むので・・選択は、t13とt85か、t45のみかのどっちかになると思います。値段も重要なファクターですから。

ついでなので、手持ちの、t84 t2313の試験もやってしまおうと考えてます。あと、全く違う構成のArduinoとして、一杯有る、mega8Lに搭載する価値も考えて見ます。(接続線が、3本なら、コンパクトな組み込みが出来るので・・価値は有ると思ってます・・私の場合、t2313より、m8Lの方が安かったし・・性能差は、凄いですからね。)

リセッタを作って、一時動かなくて、動揺しましたが・・電源を、外付けHDD用の、5V GND GND 12Vの物を使って、二電源を省略した手抜きの結果か・・安定しないが、ぐちゃぐちゃやってる内になんとかなるのを発見したので、これで行っちゃいます。
電源のとこにコンデンサ付けて平滑化したら、安定するかも・・そんな感じになっちゃいました。(動作用の、t13のリセット端子にスイッチ付けるのも手なのかも知れません)

2010年11月29日月曜日

何処にも書いて無かった、OSXへのdfu-programmerの導入

makeが通らなくて、思いっきり苦労して、AVR8_SDK.dmgって言うのをダウンロードして、その中に、Make済みのが入ってるから、マウントして、付属のコンソールで使ってたのですが・・

mac ports で簡単に導入出来ました。・・なーんだと言う感じでした。
avrdudeもこれで導入してたのですが、Ubuntuのapt-getみたいなもんです。

Xcodeを入れて・・
mac ports をインストールし
コンソールから

sudo port install dfu-programmer

と打ったら自動で入れてくれます。
ただまあ、このバージョンだと、m8u2もm32u2もサポートしてないように見えます。
結局はソースコード直して、マイコンを追加して、makeしないとダメかも。
dfu-programmerのバグフィクスが出てるみたいなので、それで解消出来るのかも知れませんが、OSX上で、make出来なかったので・・困ってます。

そんなにマイナーなマイコン使っちゃったのかなーーと、ちょっと心配してるとこです。
Arduino UNOに搭載されてる事だし、いずれもっと情報が出て来るんだろうと期待しています。

でけた

avrdudeの書き直しと、usbtiny ISPで書き込み出来ました。
結局8KB丸ごと書き換えて使えると・・そうゆう事ですね。

DFUモードで接続すると、Arduino UNO DFUと出ました。普通に接続すると、Arduino UNOでした。

Avrdude.confを、この前の書き込みの状態に、変更し、ライターを変えたらOKだったので、ISPライターの問題も有ったようです。
Mac AVR Fuseの方は、xmlも、AT90USB82と、AT90USB162を、ATmega8u2 ATmega32u2 / ATmega16u2と言う名前でコピーしてみたのですが。32u2の記載に矛盾がまだ有るみたいですが、なんとなく動いてます。
usbtinyの動作不良が多いので苦労しましたが、それはまあ、私の作り方が悪いんでしょうねきっと。回路は一番簡単なやつでこれでした。

マックだと、なんだかんだusbtinyが便利みたい。

Arduinoの8u2のファームウエアのReadmeに有る、コマンドラインを、自分のライターに変更して、コピペして実行しました。
usbtinyだとこれ

avrdude -p m8u2 -F -c usbtiny -U flash:w:UNO-dfu_and_usbserial_combined.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

LUFAの仕様のはずなので、LUFA系のサンプルが動くのかな・・


国内で、AVRのUSBチップが、異様に高いのも有ってか、日本語情報が無いですねーー特にLUFAの日本語情報はほぼ無いですね。DFU関係もほとんど無いし。

後は、LUFAのCDCブートローダーとか入れたり、サンプルプロジェクトやってみる気になりました。あとはTeensyですね。とりあえず、atmega8u2/32u2の見通しが立ってきました。

LUFA入れると、今度はATMELのFLIPが使えそうに無いので、もう一苦労必要そうです。


結論的に言うと・・LUFA使うか、ATMELのDFU使うか・・更にその上に乗る、CDC Bootloader使うかとか二段重ね的な処理が必要って事と・・
mega8u2は、これで既にパンパンなので。。あんまり凄い事は出来ないかも知れないって所ですかね。

使い勝手は圧倒的に、32u2でした。

8u2は、もうちょっとサンプルとか見てみないと解らないが・・私の手に入った価格から見ると、シリアルコンバーター作るには、最安値で作れると思いました。(変換基板を考えると、最も安いのは、PIC18F14K50のDIPですが・・・でかい・・の気にしないならの話し・・mega8u2の変換基板内に全部組み込めてしまう人ならば大きさは、8u2の方が小さく仕上がるでしょう。

Arduino UNO互換機を試しに作る。

※以下の内容は、Arduino UNOのVIDPIDを使い、LUFAのライセンスを持つコードを使うので、自己責任で行って下さい。

私は一切保証しません。


とりあえす、m8u2 m32u2が動くと、適当なリソース探しだが、やってみたくなるのは、Arduino-021に含まれる,m8u2のバイナリが動くかだった。

結論から言うと、のバイナリは8KB有る。

m32u2にはDFU出来て、そのまんま使えてしまった。問題はm8u2を使って、同じシリアルに出来るかって言う話し。これは、実際DFUだと4KBしか無いのでDFUできないって事になった。ISPしなければいけない。

ここで、問題が複雑になる。

ATmega8u2と、AT90USB82はバイナリー互換だけど、シグニチャーが違うって言う問題が発生した。で、ATmega8u2は、avrdudeは対応しておらず、AT90USB82なら有るが、USB82で指定すると、シグニチャが違うと言うのだ。

avrdude: Device signature = 0x000000

と出るので、シグニチャが帰って来ていないのかも知れない。対応出来るライターを探すか、avrdudeのインデックスをちょっと改造しなきゃいけない臭い。マック用のdfu-programmerも、m8u2に対応していない。LinuxかWindowsのFLIPを使う必要が有る。

そうゆう意味で、ATmegaXXu2系を、Arduino UNOのHEXも含んで、DFUしながら多目的に使いたい場合、m8u2は適さない。

まだうちでもm8u2は、UNOのシリアル互換に持って行けて無い。avrdudeの改造をするか何かしないとダメだって事になる。

逆に、ソースコードが有る物は、(ATMELのサンプルとか)は、m8u2でコンパイルすれば何の問題も無く入る。

基本的に大きさの問題だけで、AT90USB162 AT90USB82 ATmega8u2 ATmega32u2は、DFU式のアプリなら、容量がはみ出ない限り互換になってる。

m32u2に入れた、UNOのシリアル部は、m8u2にLUFAのDFUブートローダーも含んでるっぽいが,その部分は使われていないっぽい。

とりあえず、動作確認も含みつつ、プログラムの構造も含んで、いじってみたいので、m8u2のISP方法を探る事になるみたいです。

今のところ、何処が対応出来て無いのか解らないが、avrdudeがまずシグニチャーで対応出来ないのは解った。

Avrdude.conf にこれだけ書き足してみた

#------------------------------------------------------------
# ATmega32u2
#------------------------------------------------------------

part
    id               = "m32u2";
    desc             = "ATmega32u2";
    has_jtag         = no;
    has_debugwire    = yes;
    signature        = 0x1e 0x95 0x8a;
    chip_erase_delay = 9000;
    reset            = io;
    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
                       "x x x x  x x x x    x x x x  x x x x";
    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
                       "x x x x  x x x x    x x x x  x x x x";
    pagel            = 0xD7;
    bs2              = 0xC6;

    timeout = 200;
    stabdelay = 100;
    cmdexedelay = 25;
    synchloops = 32;
    bytedelay = 0;
    pollindex = 3;
    pollvalue = 0x53;
    predelay = 1;
    postdelay = 1;
    pollmethod = 1;
    pp_controlstack     =
        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
    hventerstabdelay    = 100;
    progmodedelay       = 0;
    latchcycles         = 5;
    togglevtg           = 1;
    poweroffdelay       = 15;
    resetdelayms        = 1;
    resetdelayus        = 0;
    hvleavestabdelay    = 15;
    chiperasepulsewidth = 0;
    chiperasepolltimeout = 10;
    programfusepulsewidth = 0;
    programfusepolltimeout = 5;
    programlockpulsewidth = 0;
    programlockpolltimeout = 5;

    memory "eeprom"
        paged           = no; /* leave this "no" */
        page_size       = 4;  /* for parallel programming */
        size            = 1024;
        num_pages       = 256;
        min_write_delay = 9000;
        max_write_delay = 9000;
        readback_p1     = 0x00;
        readback_p2     = 0x00;
        read            = "  1   0   1   0      0   0   0   0",
                          "  0   0   0   0    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        write           = "  1   1   0   0      0   0   0   0",
                          "  0   0   0   0    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

loadpage_lo = "  1   1   0   0      0   0   0   1",
 "  0   0   0   0      0   0   0   0",
 "  0   0   0   0      0   0  a1  a0",
 "  i   i   i   i      i   i   i   i";

writepage = "  1   1   0   0      0   0   1   0",
                          "  0   0   0   0    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2   0   0",
 "  x   x   x   x      x   x   x   x";

mode = 0x41;
delay = 20;
blocksize = 4;
readsize = 256;
      ;

    memory "flash"
        paged           = yes;
        size            = 32768;
        page_size       = 128;
        num_pages       = 256;
        min_write_delay = 4500;
        max_write_delay = 4500;
        readback_p1     = 0x00;
        readback_p2     = 0x00;
        read_lo         = "  0   0   1   0      0   0   0   0",
                          "a15 a14 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        read_hi         = "  0   0   1   0      1   0   0   0",
                          "a15 a14 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        loadpage_lo     = "  0   1   0   0      0   0   0   0",
                          "  x   x   x   x      x   x   x   x",
                          "  x   x  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        loadpage_hi     = "  0   1   0   0      1   0   0   0",
                          "  x   x   x   x      x   x   x   x",
                          "  x   x  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        writepage       = "  0   1   0   0      1   1   0   0",
                          "a15 a14 a13 a12    a11 a10  a9  a8",
                          " a7  a6   x   x      x   x   x   x",
                          "  x   x   x   x      x   x   x   x";

mode = 0x41;
delay = 6;
blocksize = 128;
readsize = 256;
      ;

    memory "lfuse"
        size            = 1;
        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
                          "x x x x  x x x x  i i i i  i i i i";

        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
                          "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "hfuse"
        size            = 1;
        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
                          "x x x x  x x x x  i i i i  i i i i";

        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
                          "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "efuse"
        size            = 1;
        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
                          "x x x x  x x x x  i i i i  i i i i";

        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
                          "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "lock"
        size            = 1;
        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
                          "x x x x  x x x x   x x o o  o o o o";

        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
                          "x x x x  x x x x   1 1 i i  i i i i";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "calibration"
        size            = 1;
        read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
      ;
    memory "signature"
        size            = 3;
        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
      ;
  ;

#------------------------------------------------------------
# ATmega16u2
#------------------------------------------------------------

part
    id               = "m16u2";
    desc             = "ATmega16u2";
    has_jtag         = no;
    has_debugwire    = yes;
    signature        = 0x1e 0x94 0x89;
    chip_erase_delay = 9000;
    reset            = io;
    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
                       "x x x x  x x x x    x x x x  x x x x";
    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
                       "x x x x  x x x x    x x x x  x x x x";
    pagel            = 0xD7;
    bs2              = 0xC6;

    timeout = 200;
    stabdelay = 100;
    cmdexedelay = 25;
    synchloops = 32;
    bytedelay = 0;
    pollindex = 3;
    pollvalue = 0x53;
    predelay = 1;
    postdelay = 1;
    pollmethod = 1;
    pp_controlstack     =
        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
    hventerstabdelay    = 100;
    progmodedelay       = 0;
    latchcycles         = 5;
    togglevtg           = 1;
    poweroffdelay       = 15;
    resetdelayms        = 1;
    resetdelayus        = 0;
    hvleavestabdelay    = 15;
    chiperasepulsewidth = 0;
    chiperasepolltimeout = 10;
    programfusepulsewidth = 0;
    programfusepolltimeout = 5;
    programlockpulsewidth = 0;
    programlockpolltimeout = 5;

    memory "eeprom"
        paged           = no; /* leave this "no" */
        page_size       = 4;  /* for parallel programming */
        size            = 512;
        num_pages       = 128;
        min_write_delay = 9000;
        max_write_delay = 9000;
        readback_p1     = 0x00;
        readback_p2     = 0x00;
        read            = "  1   0   1   0      0   0   0   0",
                          "  0   0   0   0    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        write           = "  1   1   0   0      0   0   0   0",
                          "  0   0   0   0    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

loadpage_lo = "  1   1   0   0      0   0   0   1",
 "  0   0   0   0      0   0   0   0",
 "  0   0   0   0      0   0  a1  a0",
 "  i   i   i   i      i   i   i   i";

writepage = "  1   1   0   0      0   0   1   0",
                          "  0   0   0   0    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2   0   0",
 "  x   x   x   x      x   x   x   x";

mode = 0x41;
delay = 20;
blocksize = 4;
readsize = 256;
      ;

    memory "flash"
        paged           = yes;
        size            = 16384;
        page_size       = 128;
        num_pages       = 128;
        min_write_delay = 4500;
        max_write_delay = 4500;
        readback_p1     = 0x00;
        readback_p2     = 0x00;
        read_lo         = "  0   0   1   0      0   0   0   0",
                          "a15 a14 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        read_hi         = "  0   0   1   0      1   0   0   0",
                          "a15 a14 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        loadpage_lo     = "  0   1   0   0      0   0   0   0",
                          "  x   x   x   x      x   x   x   x",
                          "  x   x  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        loadpage_hi     = "  0   1   0   0      1   0   0   0",
                          "  x   x   x   x      x   x   x   x",
                          "  x   x  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        writepage       = "  0   1   0   0      1   1   0   0",
                          "a15 a14 a13 a12    a11 a10  a9  a8",
                          " a7  a6   x   x      x   x   x   x",
                          "  x   x   x   x      x   x   x   x";

mode = 0x41;
delay = 6;
blocksize = 128;
readsize = 256;
      ;

    memory "lfuse"
        size            = 1;
        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
                          "x x x x  x x x x  i i i i  i i i i";

        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
                          "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "hfuse"
        size            = 1;
        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
                          "x x x x  x x x x  i i i i  i i i i";

        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
                          "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "efuse"
        size            = 1;
        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
                          "x x x x  x x x x  i i i i  i i i i";

        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
                          "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "lock"
        size            = 1;
        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
                          "x x x x  x x x x   x x o o  o o o o";

        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
                          "x x x x  x x x x   1 1 i i  i i i i";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "calibration"
        size            = 1;
        read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
      ;
    memory "signature"
        size            = 3;
        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
      ;
  ;


#------------------------------------------------------------
# ATmega8u2
#------------------------------------------------------------
# Changes against AT90USB162 (beside IDs)
#    memory "flash"
#        size            = 8192;
#        num_pages       = 64;

part
    id               = "m8u2";
    desc             = "ATmega8u2";
    has_jtag         = no;
    has_debugwire    = yes;
    signature        = 0x1e 0x93 0x89;
    chip_erase_delay = 9000;
    reset            = io;
    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
                       "x x x x  x x x x    x x x x  x x x x";
    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
                       "x x x x  x x x x    x x x x  x x x x";
    pagel            = 0xD7;
    bs2              = 0xC6;

    timeout = 200;
    stabdelay = 100;
    cmdexedelay = 25;
    synchloops = 32;
    bytedelay = 0;
    pollindex = 3;
    pollvalue = 0x53;
    predelay = 1;
    postdelay = 1;
    pollmethod = 1;
    pp_controlstack     =
        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
    hventerstabdelay    = 100;
    progmodedelay       = 0;
    latchcycles         = 5;
    togglevtg           = 1;
    poweroffdelay       = 15;
    resetdelayms        = 1;
    resetdelayus        = 0;
    hvleavestabdelay    = 15;
    chiperasepulsewidth = 0;
    chiperasepolltimeout = 10;
    programfusepulsewidth = 0;
    programfusepolltimeout = 5;
    programlockpulsewidth = 0;
    programlockpolltimeout = 5;

    memory "eeprom"
        paged           = no; /* leave this "no" */
        page_size       = 4;  /* for parallel programming */
        size            = 512;
        num_pages       = 128;
        min_write_delay = 9000;
        max_write_delay = 9000;
        readback_p1     = 0x00;
        readback_p2     = 0x00;
        read            = "  1   0   1   0      0   0   0   0",
                          "  0   0   0   0    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        write           = "  1   1   0   0      0   0   0   0",
                          "  0   0   0   0    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

loadpage_lo = "  1   1   0   0      0   0   0   1",
 "  0   0   0   0      0   0   0   0",
 "  0   0   0   0      0   0  a1  a0",
 "  i   i   i   i      i   i   i   i";

writepage = "  1   1   0   0      0   0   1   0",
                          "  0   0   0   0    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2   0   0",
 "  x   x   x   x      x   x   x   x";

mode = 0x41;
delay = 20;
blocksize = 4;
readsize = 256;
      ;

    memory "flash"
        paged           = yes;
        size            = 8192;
        page_size       = 128;
        num_pages       = 64;
        min_write_delay = 4500;
        max_write_delay = 4500;
        readback_p1     = 0x00;
        readback_p2     = 0x00;
        read_lo         = "  0   0   1   0      0   0   0   0",
                          "a15 a14 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        read_hi         = "  0   0   1   0      1   0   0   0",
                          "a15 a14 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        loadpage_lo     = "  0   1   0   0      0   0   0   0",
                          "  x   x   x   x      x   x   x   x",
                          "  x   x  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        loadpage_hi     = "  0   1   0   0      1   0   0   0",
                          "  x   x   x   x      x   x   x   x",
                          "  x   x  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        writepage       = "  0   1   0   0      1   1   0   0",
                          "a15 a14 a13 a12    a11 a10  a9  a8",
                          " a7  a6   x   x      x   x   x   x",
                          "  x   x   x   x      x   x   x   x";

mode = 0x41;
delay = 6;
blocksize = 128;
readsize = 256;
      ;

    memory "lfuse"
        size            = 1;
        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
                          "x x x x  x x x x  i i i i  i i i i";

        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
                          "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "hfuse"
        size            = 1;
        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
                          "x x x x  x x x x  i i i i  i i i i";

        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
                          "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "efuse"
        size            = 1;
        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
                          "x x x x  x x x x  i i i i  i i i i";

        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
                          "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "lock"
        size            = 1;
        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
                          "x x x x  x x x x   x x o o  o o o o";

        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
                          "x x x x  x x x x   1 1 i i  i i i i";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "calibration"
        size            = 1;
        read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
      ;
    memory "signature"
        size            = 3;
        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
      ;
  ;


とりあえずこれでやってみる。

※成功したので、書き直した、avrdude.confをここに保存しました。


書き込もうとした環境が、ちょっといい加減なので、まだ完全な結論にはなってません。

書き込み環境
OSX avrdude  Arduino ISP
WIN 共立AVRWRT
このどちらも、AT90USB82は存在するがダメだった。
Arduinoのコードは、AT90USB82でコンパイルされてて、m32u2は動いてるから、コードは大丈夫なんだろう。HEXのサイズは、8KB丸ごと有り、4KBの辺りに少しだけ空白は有るから、DFU+アプリになってる。・・4KBで切って、DFUしてみたが、色々エラーになってしまった。

Arduino ccのフォーラムのコメントに、個人が、ライセンスが有るのを知っていて、自分用に入れて見るのを、追いかけて、法廷に呼ぶようなつもりは無い・・つもり・・的な事は書いて有るから、まあ、それ位の次元で入れて見る価値は有りそうに思う。


で、私の実験した限りでは・・m32u2か、AT90USB162の方が、ずっと簡単だろうと思った。

dfu-programmerを使う場合、ソース配布はされてるから自分で改変するか、アップデートも待たないと使えないかも知れない。
dfu-programmerをまだ、32u2で試してないが・・PS3のハッキングの所では、dfu-programmerで書き込めるような事書いてあるので、コンパチビリティが有る物が有るのかも知れない。

今のところ確実に、スパッとDFU出来るのは、ATMEL製の、FLIPだけになってる。

(そんなに新しいチップなんですかね?)

とりあえず、リソースの入れ方と、バイナリーの構造やコンパチビリティの関係は解った。UNOのシリアルコードも使えなくは無い。

FastBootのコンパイル出来た。

やむなくWinodwsの AVR Studioに入れたらコンパイル出来た。
512bit以下だから。Optibootと同じ位、転送速度はどうでもいいのと、これはやっぱりResetボタンを必要としない。つまり、tiny13とかtiny85だと、6pin 使える。
と言う事は、普通、AVRの8ピン系で、6ピンをI/Oで使おうと思うと、高電圧プログラミングが必要なのだが、このbootloaderを入れれば使えるっぽい。RX/TXのピンの制限は受けるが・・4ピンは完全にフリーに出来る。
電源の瞬間切断で、Bootloaderが起動するなら、先日作った、Arduino式のDTR+コンデンサに、プルアップ+トランジスタを接続した回路で、電源を一瞬切れるから、オートリスタートが出来る事になる。
これと、FirstBootの特徴の、RXだけ有ればいい(TXは設定してあっても接続しなくても平気)付加部品は、ダイオード2個と、抵抗1個らしいが、それを外付けすれば、ほぼ直結で済む。これだと端子はオーディオ端子で良く、オーディオ端子特有の、センスキーを使えれば、RX端子の回路切断も出来るはずだ。
内部電源式の場合、VCCのとこに、やはりTRをくっつけて、リセットにしてしまえばいい訳だ。(内部電源を切るTRを付ければいい・・・電源内蔵したら、どうせデカイのでTR一個位増えても問題無いと思うし)

HEXは出たから、ISPして動作試験しすればいい。

Arduinoへの対応がラッパーとかで処理出来れば良さそう。最悪コンパイルだけして、HEXを送ればいいわけだしね。


ともかく、単独ででも動けば、tiny13のSOP版を、100個ばかり注文しておけば、PIC10/12の問題を解消出来る可能性が有る。512Bしか残らない問題は否定しないが・・(256命令しか書けない訳か)・・PIC10も512Bなので、あんまり気にして無いが・・
最も安い、PIC10/PIC12が、60円で、うちで普通に使ってるのが、秋月で@100円なので、100円以下で入って来るなら、全面採用出来ると思う。(DIP版が秋月で120円だが)tiny85は、私の手に入ってる値段だと、ちょっと高い・・ただ、100個買えばいいかと言うほど、使いそうも無いので微妙で、tiny45かなんかで考えて見るかな。この辺りもやっぱりコスト問題は有る。
tiny85辺りが、@150円位で入って来るといいのだが・・

これもまた微妙な話で、8KBも有ると、Arduino IDEだし、もうちょっとピン数って言うので、tiny84も試験し始めるから、8KB機の8ピン仕様は必要無いのかも知れない。
(AD 変換して、シリアルに送るとかや、V-USBでもtiny45で動いちゃうから・・)


うーん、こうなると、試験にプライオリティは・・

tiny13 (秋月で買った、DIPなら10個位有るはず)
tiny2313(これは一杯有るDIP)
tiny45 (DIP有るんだけど、フューズをミスったまんまなので、一回リセットしなくちゃ)
tiny85  こないだ買った在庫10個SOP

tiny84 optibootで、Ardhino IDEで動くって書いて有るから・・試験の必要性は今無い。SOP

 導かなければ行けない結論は・・
tiny13 / 45 / 85 での動作確認と、単体価格の確認で、機種統一出来るか、最も安い方法論
tiny2313 SOP版が安い場合の対応
tiny84 はとりあえず、使えればOKだ。(使用頻度不明だし)

この8ピンのPICは、なんだかんだ、年に100個近く消費してるので(60-100円だから・・全部でも1万円以下)ここの代替え機種選択は、結構私にとって重要なんです。

同時に、模型への組み込み用のスタンスが、回路実験だけで、突っ込んでしまい、外から書き換えして、実物を動かしながらイメージ掴めるなら、凄く楽になりますからねーー(組み込んだらどうなるか想像しながら、回路もプログラムも完成してから、初めて模型が出来るのとは違う訳です)

HEX書けたから、結構楽しみ!

追記

ついでに、mac Avr-fuse のDeviceに、3個のマイコンを足す。これは単なる、Avrdudeのコマンドラインラッパーなので、マイコン名が、Avrdude.confと同じなら動作するので、追記した。うまく行けば、このまんま使えるはず。
これでダメだとしたら、ライターを変える必要が出て来る。どうなんでしょうね?

電子タバコ

私はタバコ吸いなのですが、さすがの値上げとかもあり、電子タバコを買ってみました。

結論から言うと結構いい・・廻りの理解も有るから、昔ながらの銜え電子タバコで、禁煙エリアで仕事してても大丈夫だし。・・実は作業効率は上がった。

結局は、人体に悪いと言われる、部分なんか、どうでも良くて、夜店のハッカパイプに、電熱器付けて、水蒸気で、暖かい空気を入れてるだけで・・落ちついちゃう問題なんだなーーと実感してしまった。

ホット。ハッカパイプの、ニコチン味みたいなもんです。


まるっきり禁煙出来たかと言うとそうでも無く、日に、4−5本は吸ってるんですが・・主な理由は、電子タバコの電池切れと言う悲しい問題か・・

銜えタバコでスパスパやっちゃうと、1時間そこそこしか保たないんですねこれ・・

そりゃあまあ、電池で、水蒸気を発生するほど、液体を温めてる訳だから、小型とは言え電熱器だからねえーーー

最初1本買った時は、なんか一生懸命押さえてたが、電池の充電が、1時間以上かかりーーその間に吸っちゃう訳で・・やむなく、こないだ2本追加しました。


まあ。吸っちゃいけないとこで、スパーーっと出来るのは、一種快感でも有るんですが・・(今度電車の中でやってみようか・・・)・・・昔は、それでも吸っていた訳ですけどね。

先日、嫌煙派の友人を会合してる時に、吸ってたら・・変に好意的に見て貰え、「それだったら、当然、事務所の何処で吸っててもいいよーー、銜えタバコでも、チェーンスモークでm何でもしていいから」って言うお墨付きは貰ったんですが・・

中国製の電池を口に銜えてる訳で・・破裂したら、構造上・・即死かなーー(後ろは、電熱器ねじ止めだから、前に行くかなあ・・それとも爆弾状態か・・)なんて事は思ってますが・・そうなったら、新聞に名が残るだろうなあと、笑ってはいます。


ただまあ、出来悪いですねーーこれ。同じ製品なのに、部品合わないから、交換不能だし、充電器さえ共通に出来ないし・・

どうも充電器は、DC5Vの変圧器って書いて有るから、充電保護機能とか内蔵してるかさえ怪しいし・・


でもまあ、少なくとも、これのお陰で・・1時間も仕事してたら、喫煙室に行ってたのが、4時間くらいほっといても平気にはなりました。・・昼食後のコーヒー一杯の時の一本とかは有ってもいいんじゃないのーーとか思ってはいますし。
このままほっとけば、その内やめるかも・・とも思って居ます。

少なくとも、タバコの量が、4分の1以下には減ったから・・節約にもなってます。

とりあえず、ブートローダーかーー

最近、ブートローダーの自分用の最適化には凝ってる・・まだ残ってる、PIC16F8XX系 PIC18系のブートローダーは、大体なんとか自分の仕様に変更出来るのを見つけ出して使ってる。


でもって、このブートローダーをリコンパイルしたいのだ・・

FastBoot

まだ開発も止まって無いし、電源VCC/GND とプラス1本のワンワイヤーモードを持ってるから、3本で済む訳だ。

元々tiny13は、1KBのマイコンなので、Arduinoには全く適さない。出来て、LEDチカチカ止まりのはずだ。


うちに有るArduino以外の言語はこれ・・

AVR Simulator IDE

これもお勧め。WINなのが問題だが・・軽くて小さい、BasicとアセンブラのIDEで、1万円位出すと、AVR PIC10 PIC16 PIC18 Z80 8085の全部が買える。アップデートが、年2−3回で、かれこれ10年くらいお金払ってない。(たぶんライフタイムワランティで、アップデート無料だ)
これ一セット、1万円払っておくと、とりあえず、大体のマイコンはコーディング出来る。

それ以前に買っちゃったこれ

MikroBasic Pro PIC

が有り。これもアップデート無料なので、やっぱかれこれ、10年近く、アップデートされてる。ここのAVR版は、Tiny2313とか2KWord = 4096Bitまで無料なはずなので、入れてる・・ベータテスト入れてから、その制限も無くなってる気がするが・・
AVR Simulatorのサポートマイコンの種類が一般的な物(それでも秋月レベルの種類なら、フルカバーしてるが)なので、XMAGAまでサポートしてる便利、実際、ATmega8u2や、32u2もサポートしてる。今ならドル安いから、買っておくのも手ではある。

これらの言語が有るので、Arduino IDEで動きそうも無い、1KBクラスのマイコンとかは、これらで書けばいい訳だ。


アマチア的に言うと、AVR Simulatorを、目を瞑って、フルセット買っておくのがお勧め。Arduinoでも、HEXを読み込んで、グラフィカルにシュミレーションを表示してくれるので・・エラーが出た時の確認なんかにも使える。

ツールみたいな、ウインドーで、画面占有しないので、ISPや、ローダーを起動して、シュミレートしたら、ダウンロードして、実物で試験したりーーと言う真似が出来る。

言語形式が一緒なので、PICもAVRもあんまり関係無いのもいい。(どっちのIDEでも)


コードの大きさとか、真剣には考えてないが、AVR Simulatorとかは、中間ファイルを残すのでBASICからアセンブラに変換されて、HEXになるまでの中間ファイルも得られるから、学習用には適してると思う。


これらと、Arduinoの環境を持ってれば、容量に余裕が有るのは、Arduino、容量が小さい物は、Basic環境に出来るから、全部にブートローダで入れて、どれでも同じような環境で動かしたいのだ。


余談だけど、秋月のこれってちょっと気に入っちゃった・・
ブレッドボードの配線をコピーするって言う、賢いような、無意味なような基板だけど、こうゆう風にプリントする概念は面白い。
こんな感じで、配線図が書いて有る、Arduinoとか有ったら面白いよね。
こうゆうプリントって出来るんだ・・って事に、かなり影響を受けそうだ。
10枚は要らない気がするが、一枚くらい今度買おう。

あと、私が良く使うツールの新製品が出てた。

これの、GND側に、1KΩを並べて、GNDに接続するピン付けて、Arduinoのポートに刺すと、何が起こってるか見やすいから、うちでは結構多用してます。空中配線やら、抵抗アレイでも作れるし、結構便利ですよ。


来週秋月まで行くかなあ・・実は友人から、原付電気自動車のヘッドライト・メーターの加工を頼まれてるから買い出しに・・・

2010年11月28日日曜日

Optiboot

USBシリアルから、一瞬電源を切るのは、TR付けただけに近い状態で簡単だったのだが・・Optobootって、Reset信号が入った時だけ動作するみたい。電源投入時に作動しない。だからすぐ動く訳か・・結果Resetピンが無ければいけなくて・・・電源断でブートローダーを起動してと言うアイディアが崩れてしまった。

研究してる理由が、tiny85のArduino仕様で、それのReset PINのI/O化なので、ブートローダーを変えないとダメっぽいって事だ。前のArduinoブートローダーみたいに、起動後しばらくブートローダーモードになってるタイプなら、一度電源を落とせばいいから、Resetピンを省略出来る。
元々6本しか無い、I/0を、TX RX RESETと3本食われるのは嫌だったのだが・それと、ちゃんとパッケージングするために、I/Oと電源用に、USB-MINI-B端子を使いたかった訳だ。(電源は、USB準拠にし、TX RX を、D- D+のピンに配置する事で・・同じコネクタにすると、逆接続や、電圧の間違いから逃れられる。ACアダプタに依存しないし、単三のUSB電源ボックスとかも使える事になる。(当然PCも使えるし、USB-ACアダプタは、最近結構有るし、非常に安いから、マイコンの電源に使いたかった訳だ。・・シガライター電源なんかも、100円ショップで売ってる訳だし)

maga8用だったら、元々大きいので、PIC10かなんかで、リセット信号出させれば(起動直後に、一回、Reset信号を出させればいいが)小さいの作りたいからやってる、tiny85に更に、PICなりくっつけるのは、意味不明になるし、Resetピンの節約にならない。

ブートローダーから、やらねば、ダメみたいだ。OptibootのMakeオプションに有るかも知れないが・・

目標が、プラモデルとか、小さな物に組み込んで、外から、プログラム更新出来る事・・ピン数を極力減らして・・なので理想は3本・・とりあえず4本となってる。通常接続してる、電源のVCC/GND に、1本か二本でなんとかならんかと言う課題な訳です。

やらせたい事は、そんなに凄い事じゃない・・シークエンス通り、LEDを点灯したり、PWMでゆっくり、モーターを廻したりとかその程度、目標ロジックサイズが、10x10mm位、条件によれば、全て空中配線にして、プラスチックに一緒に混ぜて整形しちゃうようなイメージなんですわ。3−4本リード線を出して、Arduino IDEから、変更したスケッチを流し込めるようにしたい訳です。・・4本中、2本が電源線で、TX RXも実行中は、I/Oに使う感じで・

PIC10やPIC12はISPつながないといけないから、5本も必要になる、Tiny13 45 85などもISPにしたら、6本も使う、Arduinoのシリアルが、5本、これをなんとか4本にすればPICより、引き出す線は減る訳だ。

USBのブートローダーが使えるなら、それは手で・・Tiny2313とかでも有ったような記憶もある、

ソフトシリアル式のOptibootで・・いけるかなーーと思ってたのだが。

別件で、見つけた、RS485でも動くブートローダー'(Tiny13用まで有る)を確認してみて、それを、Arduino IDEに最適化すればいいのかな・・転送速度の遅さとか、起動時のトロさとは、まるで気にして無い。起動時に5秒くらい、ブートローダー待ちして、全然問題無いハードなんですわ。(前のArduinoブートローダーみたいに)

ちょっと研究しなきゃだめみたいだ。

Mega8l Arduino 二枚目


秋月のTQFP32基板に慣れてきたのも有り、貼り付けて有ったMega8Lをそのまま使って、Arduinoに使える配線をもう一度してみた。32u2 8u2を作った効果がそれなりに出てて、割と最小限で出来てると思う。DIP穴を使わないで、パターンの上を削って銅面をだして、そこに半田付けしてく感じで考えて見ると、かなりスッキリした。
途中で迷い穴空けてしまったのが、ちょっと心残り、おかしいなと思ったら、ワンサイズドリルが大きく、僅かな揺れで、パターンの縁に引っかかってしまったので、通電するとまずいので、放棄した穴がいつくか有る、(あんまり細いドリルだと、無駄に折るだけだし)

パターン削って、その上に、表面実装の抵抗って言うのは新技 RESETのプルアップとかD13のLEDにしてみました。用抵抗なんかはそれでやったら、スッキリした。

これで、この基板改造の、CPUボードは、4枚目だけれど、徐々に賢くなるもんだなあとは思った。

一応削って貼るやりかた。

削る

一回半田を盛ってみる。半田メッキ状態にする。

メッキ線乗せて半田付けする。
切ってから、ドライバで押さえつけて、もう一回くらい溶かしておく

そんなこんなで二本目
最初から計画的にやれば、配線を潜った先でもう一回ジャンプして違うところに飛ばすみたいな事や、コンデンサ乗せるなんて真似も簡単。削った場所とかは通電してるから、注意は必要。

ゆびでグイグイすると、取れる程度にしかくっつかないから接触面が長いとこからくっけて、ドライバで曲げてから切って整える感じにする。UEW線でやれば絶縁しとく事も出来る。

ずーっと細い、メッキ線が欲しくなったら、リード線をばらして使うと、細い線が一杯出て来るから、それでやるともっと繊細な構造にも出来る。

この方がお勧めみたい。ATmega32u2






穴空けた部分は、VCCと、GNDを後ろ半分に送ってるだけです。
後は、ランド削って接触させた程度、裏に貼ったXtalは表面実装用ですが、下駄を外して高さ下げてます。
スイッチは写真で言う上から、RESET / HWB の順番です。8u2は、なんか、真ん中にXtalを貼ろうとしすぎました。裏に入れると厚くて、引っかかりやすいのと、組み込み時に丸ピン付けないのが、私式なので、裏に厚い物付けるのはポリシーに若干反するんで・・(今の位置に横に寝かすって言う手も有る事はあります・・実はXtalのピン間と差が有るので、一個、Xtalが犠牲になりました)
表面実装のスイッチ関係は、ランドも無いようなとこに単に、角をくっつけて並べて有るだけなので、引っ張ると取れちゃう可能性は有りますが・3カ所ずつは、位置決めで半田付けしてありますが、押す分には問題有りません。
動作確認用LEDは、後で付けようと・・保留状態のままです。(ピンによっては付かないかも)


たぶんこれが最も簡単に、秋月の変換基板上で、ATmega32u2等を組む方法かも知れません。
USB用の、22Ωと、1uFも、このまま積めそうな気はしてます。どっちみちUSBコネクタは乗りそうも無いので、前作のケーブル流用にしました。


電源LEDをちょっと明るくしすぎたのと、このLEDだけ、平面に置けなかったので、抵抗の縁と、ワイヤーの上にくっつけると言う、空中配線になってます。(1608だと小さくて付けるのが面倒だったんで、2012にした結果・・これしか無かったんで)


今回はGNDをミスったりしてないので・・


一発で認識しました。


単なる板みたいな、簡易USB-Aコネクタ→DIP 4PINみたいなのが有れば、一体化出来るし・・なんか、ATmega32u2で検索すると、一杯出て来るSONYのプレステ3のハッキング用のアダプタ作るにはいいかも知れません。


自分なりに総額だと・・500円はしてません。(mega32u2を10個買いした場合)Madoca Electronicaで購入しました。
制作時間は、だらだらやって2時間強位で済みました。(前回をえらく違いました)


まあ、この手の回路って、やってるうちに配線覚えちゃうし・・こことここ繋ぐんだが・・と言うのが見えて来ると、まとめやすくなるもんです。




同じような物を作る方は、こっちの配線をお勧めします。

どひゃーーmega8u2 dfu-programmerで使えないみたい。

最新版入れてるはずなんだけど、リストに、mega8u2が出てこない。

コンパイラは、avr-gcc (UNIX OSX)でmage8u2にセットして、Makeすれば動く事が解ったが、どうもWin GCCだとエラーが出る。(同じコードなのに)

mega8u2もmega32u2も確実に、DFU出来るのは、ATMEL のFlipみたいだ。

枯れてるチップの、AT90USB162とかは、普通に、dfu-programmerで書き込めるらしく、OSXのArduino IDEからのラッパーも有るので、一発で行けるらしいが・・


となると、うちに有る環境で、普通に一元処理出来るのは・・ubuntuかもです。

2010年11月27日土曜日

DFUしてみた。

一応出来たが・・・
VMのXP上の、FLIPで(私はGUIが好き)やり始めたのが、ちょいと裏目に・・コンパイルとかは、OSX上の、avr-gccだと出来て、何故だかWin-gccだと出来ない・・ちゅうことは・・Macか、Ubuntuでやった方が楽って感じだ。

こんな感じになった。DFU用のスイッチは意地で付けた感じ。(ちゃんと機能した)スイッチの足を二本切って、基板に一個穴を開け。D7の足に半田付けして、GNDに落ちるようにした、プルアップはスイッチの下に有り100KΩ付いてる。
解ったのは、DFUのスイッチを押し、RESETし、DFUのスイッチを離す・・のだが、電源OFFじゃダメで・・ブレッドボードでジャンパでRESETしたら簡単に動いた。

mac ubuntu用の方の、DFUを入れないと(入れた記憶は有る) Linux用の、FlipがATMELで出てたけどどうなんだろうかと思う。macで動かないかなーと、ちょっと期待してるが・・

試しに、Arduino 021に入ってる、UNOのシリアルを入れようとしたんだけど・・サイズが大きすぎると出る。これってもしかして、ISPしないとダメなのかも・・ブートローダーの部分に入ってる感じ?(まだ理解してない)

AT90USB162のCDCサンプルコードをのCPUのターゲットの所を、atmega8u2に変えて、makeして、WINに持ってって、DFUしたら、「通信装置(モデム)」と出て、macのネットワーク機器として認識したから、DFU自体は成功したみたいだ。・・・面倒臭いからMACからのDFUを覚えよう。

配線をミスった、GNDは、穴あけて無理矢理通したが、DFUのスイッチへの配線は、諦めて裏側にUEWで通した。

Arduinoでコーディング出来るはずだし(DFU用のコードはの意味)ちょっと確認したら、無料で使えるBASICの、MikroBasic AVRの最新版でも2KW=4096B書けるって事は、フルに使えるって事でした。(うちは、PICは、MikroBasicの人なので・・便利かも)

スイッチのあたり付け焼き刃だけど・・とりあえず動きました。

この基板上に、USB mini-Bをくっつけて、一体化出来るかと言えば、出来そう。うちのmega8L基板みたいに、一枚ドーターボート乗せて、そこに付けるにしろ。外部部品点数はそんなに多く無い。

コネクタ部に外付けした、パーツは、
3.3V ZD x2
22Ω抵抗 x2
1uF 1個

リセットスイッチも必要かも知れない。Xtalを裏側に移すとかして、上面の高さを抑えれば、もうちょっと簡単かも知れない。UGNDとGNDの結線のし忘れは完全にミスだからその辺は、上面適当に通過させるべきだったと思うし、クロック用の穴を3個明けて、真ん中にグランド通して、下両側から、22pFを渡した方が綺麗だったろうとは思う。3.3V VCAP用の、コンデンサとかRESETのプルアップとかの配置が今一っぽく感じてる。(なまじ、ブレッドボードに対応させるために、全ピンにソケット付けなければもうちょっと簡潔に作れそうな気がする。)

1−3番ピンが、 Xtal1/Xtal2/GNDなので、そこにクリスタルを付けて、配線を2本入れ替えて、Xtal1/GND/Xtal2にすれば、穴空けなくてもクリスタルは付けられるのは、最初に気付いたが・・・真ん中につけようとしたのは、・・・格好の問題を気にしたかも・・

まあ、一番簡単なのは、上面に一枚、ユニバーサル基板を貼っちゃって、それに配線する方が簡単だろうとは思う。

秋月の、TQFP32基板は、実質片面基板だから・・裏側全面に、ユニバーサル基板を重ね貼りって言う手も有るが・・
と言うか・・ハードウエアに実装する時は、この手の物にピン付けないで、メッキ線で繋いじゃう人なので(薄くしたいから)・・それは実用基板作る時ようにとっとこうと思う。

USB I/Oなら今回の状態の方が使いやすい事になると思う。

シリアル変換としての組み立ての難易度は・・
当然、FTDIが一番簡単、PIC18F14K50と、mega8u2はどっちもどっち・
変換基板を使わなかった場合の、スペースの問題は、 FTDIを、mega8u2は、双璧でPICは、大きいが半田付けは楽ではある。

USBマイコンとしての柔軟さは微妙で、PIC18F14K50は、国内でリソースがそれなりに有るが、海外リソースが少なく感じる、mega8u2は、国内リソースはあまり無いが、海外リソースはArduini UNOがらみも含んで、結構有るし、増える傾向に有ると思う。

一番安く、簡単な物なら、変換基板が必要無い、DIPのPIC18F14K50だろうと思うが、大きくなるのはしょうがないと思う。



とりあえずTeensyのDFUツールで認識は出来なかった。

100円ショップ部品収集

うちの部品収集は、秋月と、北海道のMadoca Electronicaさんと、ヤフオクと100円ショップ。うちの近所のは、割とマイナーそうなのだが、電子部品が含まれてるのは、ダイソーより安いんですわ。昇圧回路にもなる、シガライターソケットとか、100円で山積みだし・・最近ダイソーとか、これはって思うと、100円じゃ無かったりするので、近所の方に専念してる。パッケージに使えそうな物も豊富だし、SDメモリーのリーダーなんかも100円、乾電池式のUSB電源なんかも100円なので、電源ケースに困らない。ダイソーなんかだと、携帯電話のUSBケーブルなんかも100円じゃ無かったりするからね。
 結構凄いなあと思うのは、iPhoneとか、iPodのケーブルなんかも100円なので色々活用してる。
 この近所の100円ショップで、100円以外の商品をほとんど見た事無いのですわ。
 最近ダイソーに行くと、赤い札で、300円とか、酷いのになると、600円とか書いて有り、そんなのオークションで、200円位で売ってたりで、微妙なんで、部品調達に行ってガッカリする場合も多い。


 まあ、これらで手に入らないと、やむなく、他を探し・・どうしてもダメだと秋葉原とか、横浜の僅かに残った電子街とかに行くか、辺鄙なとこに一軒だけ有る、電子屋に行くかになってる。(有名らしいが)


 100円ショップの昇圧回路は結構便利なんだけど、ちょっとコイルが心配だったのだが・・こないだオークションで、良さそうなコイルが、100個300円で出てたのを、買ったし(相変わらず落札では無い)mega8u2 mega32u2用や、Arduinoに使える、16Mhzのクリスタル探してたら、秋月で、5個200円のが、200個で1000円で買えたし(これも落札したんでは無い)12MHzが、いくつか足りないのだが、これもまあ、一個20円でオシュレーターを、40個ばかり・・やっぱり落札しないで、手に入れてしまったから、フューズ設定の違いだけカバーすれば済む問題になってる。
 後はマイコン本体だが、これもまあ・・Madoca Electronicaさんにお世話になってます。


 一番無くて困るのは、0.32mmのメッキ線で・・・こんなの高くても200円だから・・落札とか送料払うのもイヤだし、秋月で売って無いししで、これが尽きて来ると、どーしようかといつも思う。(件の100円ショップに、0.4mmの針金なら何故か売ってるんだが・・まだ試してない)


 Madoca Electronicaさんに、お願いだから、仕入れてよ・・と言いまくってたりします。




 北海道から、200円位の物を送ってもらうのは、なんだが・・定形外郵便で、中一日で届き、送料150円とかだから・ウロウロ買いに行くより全然安いとも思う。
 
 LEDは、横浜のジャンク屋に言って、探してもらうと、1個2円位で、山ほど出て来るのでそこで買うし。(300個とかで買うから、年に一回くらいしか行かないし)


 どのみち、部品はずいぶん安くなったもんだと思ってる。




 あと、Arduinoで良く使う、ピンヘッダとか、ピンソケットは、aitendoで良く買うのだが・・最近、Arduinoのブランク基板なんかも置いてる・・ただしこれ、一個買ってみたが、どうやら、中国製のコピーもんだから・・気分的にはちょっと・・あんまり賛同したくない。実際これの完成品なら、ebayで、1個、10ドル台で、香港から買えそうで、(冗談抜きで、FTDIも乗った、Arduino 2009互換品・・そう考えると、ブランク基板500円は充分に高い・・現在$10だと、800円だし・・ebayは慣れてるから、得意の「これ、30枚でいくらにする?」なんて聞くと、呆れた金額になりそうだしねえ・・Arduinoって書いてなかったら、逆に買ってたかも知れない。)






 とはいえ、今回の、m8u2のコネクタ用のケーブルの色じゃないが、使いにくい場合も有るし、お気に入りの、昇圧回路も、数ヶ月に一回位2個ずつ位買うが、毎回組み方が違うわ、部品違うわ・・とりあえず動いてるけど、中国製は凄いもんだとも思う。・・半田が完全にはみ出てたり。
 Arduino UNOが今回、シリアルに、ATmrga8u2を積んで、VIDとか、付けてる理由って、このebayに氾濫してる、中国製の、偽Arduinoの問題なんじゃないかな・・実際、UNOが出て、大慌てで在庫処分してる感じの値段になってるし。
 ヤフオクで、売ってる、一部もそれだし(さすがに名前消してるが)Arduinoの場合、名前さえ変えれば、いくらコピーしてもいいって言う理念だったから、名前さえシルクで書かなければ、立派な製品な訳だから・・なんでこんな事するかなーーとは思う。
 
 製造元探して、名前消して、1000枚作ってって言えば、たぶん一枚700円位だから・・(FTDIも付いてだ)それはそれで別に正しいんだけどねーーなぜそうしないで、そのまんま売ろうとするのか・・中国の製造元や販売元、国内で売ってる人も、ちょっと疑っちゃうのはある。(金儲けと考えるなら、余計・・その方が長期的なのにね。・・・私にならそっちを選ぶ・・700円位で製造させて、1400円位で、長期的に売った方が確実にいいからね)
 なんかの仕事で中国にでも言ったら聞いてみるかな。


 私も、Arduinoを一個組んでみたくて、Aitendoから一枚買って、外部電源無しの、Duemilanove互換機は組んでみたが・・本物のDuemilanoveも持ってるつもり(本物かどうか不安になるが)物が物だけに大差無いが・・裏側のイタリア地図書かなかったのは、ファイルに無かっただけかな??
 こんなもんまで無意味にコピーするんですねーー彼れらは。


 Freedunoも中国製だけど(Fusion PCBが作ってるらしい)あの方がまだまともに感じたりしてる。


 まあ、日本も、勝ち組って言う、DOCOMOでさえ、ぱっと見、iPhoneとか売ってるから、その方が、もうちょっと悪いと思うけどね。(どっちみち、作ってる人、売ってる人のプライドの持ち方だろうね)


 私も、Arduino互換機作ろうかと思ってるのは有るのだけど・・目標は、本家が「いいじゃんこれ」って言いそうなもんを狙ってるんですけどね。


 個人的に言えば、1を考えた人に、1.5を作って見せて、2に繋げるのが、人間の進化や、商品を良くするピンポンなんだけど、1を真似して、0.8を作って、1の値段を下げてしまうのは、2に繋がらないから、退化なんですよね。
 Androidが、0.8だとは、思わないんだけど、iPhoneそっくりの形状に入れちゃうと、iPhone x0.8になっちゃう。色々な仕事してるから、知ってるけど・・結局承認出す、年寄りが・・そうゆうもんだと言う、既成概念持ったら頑固で・・そっくりな物しか通らないんだろうなあと・・実は某社の自動車のインパネを見てそう思ったのでした。


 イタリアの車とかが、新車で出たとき、「なんだこれ?」って思われつつ、生産の半ばくらいで、「いいじゃんあのデザイン」になる、設計って、テクノロジー無視して、凄いと思ってる。(イタリア車の生産の参ったチャンもよく知ってるが)・・少なくとも3年先を見ようとする概念は凄いと思うし、それは見習いたいと思うから・・Arduino x 1.5が作れないか、いつも考えてます。(テクノロジーは無視してね・・思想としてね)


 自分で作る以上、デッドコピーはイヤだもんね!(私なりの意地かも)

ATmega8u2配線ミス発覚・・あう!

こコネクタは出来て、接続してもウンともスンとも言わないからどうしたのかなで、配線チェックしたら、なんと、GNDが、接続されてなかった。ブレッドボード上で、UGNDと接続したら、MACでも、VM上のWIN XPでも認識し、FLIPでも確認出来たが、PD7を、プルアップした上に、HWBのスイッチ付けなければいけないのね・・あう・・
丸ピンを貼ってしまったから、後手処理になるが・・最悪UEWで引っ張ればいいと思う。

HWBを押しながら電源投入か、RESRTすると書き込める訳か・・いやあ、スイッチってなんだかんだでかいしーー感じから言って、スイッチって言うよりは、ジャンパだろうなあ。

プルアップは、すぐそばに、LED用のVCCが通ってるから貼るだけ。

HWBを、外付けに考えれば、GNDの接続と、プルアップだけの問題っぽい。後から引っ張る、GNDの方が問題だから・・これは忘れてはいかんなーと今更ながら思ってしまった。まあ空間は有るから、ドリルで穴空けるが、裏に、4x4穴基板がくっついてるから、先にやっとけば良かったに尽きる。
躓いたのはどっちかって言うとこれ・・100円ショップで買った、USB携帯電話接続ケーブルの端子色で・・USBケーブルの中身って、赤・緑・白・黒だったと思ったが・・なんじゃこりゃ・・
結局
赤 UVCC
白 D-
黒 D+
透明 GND
だった。こうゆう下らないとこで心配になるのは、イヤだな・・

てなこんなで、出来たケーブル。

装着図はこんな感じ


美しくは無いな・・・

この構造にしたのは、この後、32u2の基板も作るので、ケーブルを共用するため、コネクタ付けとくと、重いし・・って言う結論。後で、基板に組み込んじゃっても使えるから。
見えないけど、裏に、3.3Vのツエナーダイオードで、3V台での通信に落としてる。コンデンサは、1uF ・・・

 とりあえず・・ここまでで、全部で400円はしていないはずなので・・連結丸ピンも、オークションで激安で、大人買いしたもだし・・40本で1000円とかそんな感じ・・クリスタル200個で1000円だったし・・秋月の基板は、10枚で、800円・・

これは、実験機だから、全ピンを、連結で繋いでるけど、組み込んでしまう場合それも無いし、0.8mmのTQFP32の特定のピンだけ接続すればいいだけなら、ちょっと無理すれば、手配線で出来るから・・小型化の目処も立ちそうだ。

V-USBのBootloaderを入れた、mega328Pなんてのも、ワンチップArduinoを作るにはいい素材には、なるんだけど・・問題はそれだと、PCと通信するアプリだとそうは行かない辺りか・・スタンドアロンなら別に問題無い訳だが。V-USB仕様の、Sirial Wraiteとか出来ると話は変わるからどうなんだろう。(Arduinoの開発は、人数が多い分、凄い勢いだから、もう有るのかも知れないな)HIDを利用するのも手だけど、結果的に、PC等の方で、ドライバとか、アプリとかで対応が必要になっちゃうから、マウス、キーボード、ジョイスティックとかに化けさせてやれば、プログラムから制御出来るようになる訳だ。(MIDIでやってる人は居るみたいだが)
でも、PCアプリで一番簡単なのはやはり、RS232Cのシリアル通信だろうなーーと思う。ドライバも要らないし。
V-USBベースで作ると、そこが問題だとは思ってる。

シリアルコンバーター用のサンプルは、ATMELに有るらしいので、それでも入れておけば、とりあえず、PIC18F14K50のシリアル通信とは良い勝負か。
ATmega32u4辺りで、ワンチップArduinoを作ったらいくらくらいになるか、ちょっと気になってる。

あとはまあ、8Mhzまでしか上がらない、mega8Lだけじゃなく、普通のmega8のTQFPが何処かで放出されないかなーーと言う期待はしてます。(V-USB仕様にして、組み込んじゃって平気なら、結構面白い、ためしに、mega8Lを 12MHzでオーバークロックさせて見るか・・たぶん動くけど)


2010年11月26日金曜日

頑張ってみた。ATmega8u2










頑張ったとは思う。(写真が行程と逆になってるが・・)

まだUSB部が、迷ってて出来てない。mini-Bを付けかけたんだけど・・今後の汎用性を考えると、取り外し式の、ブタの尻尾型のが良さそうなので仕様変更したからまだ出来てない。
回路的にはこれの回路図で初めて・・最終的には・・これになってる感じ。
  D5 D6に付けちゃったLEDが・・あうーーな目的なのは・・どうしたもんだろう。
変換基板のXtalの配線はカットしてあってVCCが出てる。3.3Vにするときこの辺に接続出来るようになってるが、5VをAVCCにジャンパしてしまったのでとりあえず5Vから用だとすると、D+ D-に、ZD付けないとダメなはず。
裏に付けた、4x4穴基板に空中配線が多いが、最初の一個なのでしょうがないか・・

これ作るには、リューターで、0.5ミリの穴空けが結構必要。0.32ミリの、メッキ線でやってます。
通電確認中の写真は、UVCCと、UGNDに接続してる。VCC/GNDでも同じ結果だった。
Teensydunoのシート貼ってはいるが、入れられたとして、2KBしか残らないはず。

とりあえず、この上に、ドーターボード形式か何かで、USBコネクタを付け、いつくかのCRと抵抗付ければ動くと思う。

取り付けるか迷ってるmini-B細かい物を裏面に表面実装(裏面実装)したら取り付けスペースがはみでた。
基板は、秋月が、たぶん失敗して作った、8x8穴基板・・私は結構これが好きで、100枚単位で買ってる。SOT23物を付けるのに、実はぴったりで・・(うちは、PICもやってるから言うが、PIC10と、FET二三個乗せてメインロジックにするの結構楽しい、ISP程度のピン数なら、1.27mmピッチ用の、ソケットとかが使えるtiny84とかに、そのサイズのパッケージが有ったら楽しそうなのだが・・1cmx1cmのArduino IDE互換機作れるかも・・1.27のSOPでも穴3PINまでなら、無理矢理なんとかなる。)

1.27mmピッチ基板が、想像以上に使いにくいので今のところ、1.27mmのSOPは、片面のユニバーサル基板のランドを、プラスチックカッターで割って使ってる。


今回の、mega8u2の基板改造方法を、maga32u2に応用して、teensydunoみたいなの作る予定です。それで問題無ければ、基板発注しちゃいたいなと思ってる。

片面基板で出来るかどうか・・秋月のは片面だけど・・AVRに特化させて28PINに収まるように整理し、USBとかは枠外に配置かなあ・・
ZD3.3vの表面実装部品が無いからどうしようかなあ・・無くても動く事は動きそうだが・・Arduino UNOには付いてた。5V駆動なら要らないが、3.3V駆動もカバーすると必要なはずだ。

今回は、撮影しながら作ったので・・近いうちに順序立てて説明したいと思う。USBまで付いてからになると思う。

2010年11月24日水曜日

昨日Arduinoがらみで面白い事を思いついた・・

まだ、あんまり書けないし、実現しないかも知れないが、Arduinoがらみで、ちょっと面白い事を思いついた。

実は新しい、プロトタイプシールドを企画してます。(これは商品としてね)
かなり面白いはずのボードなんですが・・

とてもキット化するのに便利なボードで、メッキ線で配線する事が可能な両面基板です。

色々と研究してる人の作例を、記事の著作権として、キットに添加して販売ってどう思います?

つまり、WEBの記事のように自分の作品を発表し、そのキットは、某社で作り・・その売り上げから、著作権を貰うと言うシステムを考えてる。

かなり特殊なシールドなので、そのシールドが無いと作れない物も有ると思うので・・その上に付くって行くだけで、実物配線図(いわゆる絵か写真)裏表、可能なら裏表合成したの・・と、機能紹介、作り方、試験用のサンプル・スケッチまでを、著作権者は作ればいい。
ショップとしては、その特殊なシールドと、必要な部品を袋に詰めて、通販するだけだ。
自作キットのQ&Aとかは、著者にやってもらう。

つまり、PCB代も、部品代も出さないでいい。自分のを一個作って見せて、その課程をレポートして、著者としての最低限の責任を果たせばいい。

これで、キット価格の10−15%位の、著作権料を支払うと言う形。

集計するのに時間かかるのと、物売りの方は現金動かすから、売れた月の月末集計、翌月末か、翌々月10日とかに現金を振り込むと言う形式。

これだったら、キット化したいけど、資本が無いから・・って言う諦めは要らないし、売れるか売れないか考える必要も無いでしょう。
ちょっと面白いシールドに最適化すればいいだけの話です。
(この面白いシールドは、まだ発表できないけど・・こうゆう形なら電子キットを出したい人は居ないかな?)

収入は、ポイント化して、現金にでも、物品支給でも、いいとか・・考えようは有るかな。


シールドは、僕の商品として考えてるけれど、キットを製造してみたい人に、最初は一個買って貰う、フォーラムにキットを展示し、ショップでキット形体で買えるバスケットが出来たら、換えのシールドは無料で送る・・位に考えてる。(全然売れなかった場合の謝礼でもあるが)


え・・嘘・・

って言うシールドにはなると思うのでお楽しみに。
電子業界に居ない人だから、「こうじゃダメなの?」って言う・・常識無視が有って、専門家に見せたら、「これで大丈夫じゃん・・これ凄く無い?」って言う感じで・・現在商品化考えてる。
今のところ、500円とか1000円でなら生産出来そうだけど、200−250円以上にしたくないと言う、私の理想が有って(たぶん、世界一安い、Arduino シールドにしたいんで)まだちょっと時間がかかるかも知れないけど、こうゆうキットをどう思うか?


キットを、著作権料と考えるのを、どう思うか・・意見が有ったら聞かせて欲しい。

或いは、基板代も部品代も用意しないで、キットが出せるなら参加したいとかでもいいですよ。(ただし、あまりに特殊な部品使ってる物は、そのパーツはなんとかしてね・・秋月か某社で手に入る程度の物にしてね・・って事)


実は私は雑誌の仕事もしてるのだけど・・

フォーラム全体を、無料の雑誌と考え、そこに置かれる作例が、キットとして通販で売れる関係と言うのを考えてる。こうゆうの作ってって言うリクエスト掲示板とかも作りたいしね。

聞いたままだと、無理が有る話に聞こえると思う(ユニバーサルな、プロト・シールド上で誰でもキットを組めるはずが無いから)・・だから、その部分を解消した、プロトシールドな訳だ。(私が、ある構造を作りにくいから考えたシールドなんだけど、なんとか生産したいと思ってるのです)

本気で聞きたい人はメールでもどうぞ。