WinAVRを使うのがよさそう。 http://akiba.geocities.jp/atmel_avr_atros/20070603.html
ただしATtiny10はCではコンパイルできない。 http://www-ice.yamagata-cit.ac.jp/forum/viewtopic.php?t=776
AVR Stuioならいけそう http://morecatlab.akiba.coocan.jp/lab/index.php/2011/10/attiny10/
またはアセンブラでいくか http://d.hatena.ne.jp/pcm1723/20111218/1324230430 http://s.webry.info/sp/sfukuda.at.webry.info/201205/article_12.html http://weepro.blogspot.jp/
上のほうのWidthやDiameter欄に手動で数値を入力してEnterを押すと、その寸法で描ける。
http://webos-goodies.jp/archives/51277893.html
constをつければいい雰囲気。たしかに*.lstをみるとそうなっている。
const BYTE a[3] = {0, 1, 2};
冒頭のMコードでインチ/ミリを指定するなど。
http://www.excellon.com/manuals/program.htm
ちなみにEagleが吐くExcellonドリルデータはこんな感じ。
% M48 ←ヘッダ M72 ←インチ系(M71:ミリ系) T01C0.300 ←ドリルリスト。この例ではT01が0.3[inch] ... % T01 ←T01を選択 X???Y??? ←穴を開ける位置 ... M30 ←おしまい
http://nonnno.hobby-web.net/GCORD/nc.html
ATtiny4/10シリーズ。AVRstudioでいけそう。AVRISPmkIIではTPIという接続方式で書き込み可。
http://stastaka.wordpress.com/2011/10/12/attiny10/ http://blog.toshnet.com/article/54058773.html http://blog.goo.ne.jp/toko0131/e/7f81080511571d7cf8765c4b7819fb77
iMallというところを発見。FusionPCBと価格は同じくらい?こっちのほうがデータのやりとりなどが体系立っているっぽい印象。 http://imall.iteadstudio.com/open-pcb/pcb-prototyping.html
左手でショートカット、右手でマウス、というのが便利なので、左手でだいたい操作ができるショートカットをつくってみた。個人的にはこれで統一しようかと思う。 (2012/12/07: DisplayとLayerとSplitを追加。添付のdot.eaglercは未更新)
Ctrl+A | Fit | 基板全体を表示 |
Ctrl+B | Split | 配線を分割(曲げる) |
Ctrl+D | Delete | 削除 |
Ctrl+E | Ripup | リップアップ(未配線に戻す) |
Ctrl+F | Mirror | 左右反転(SMDは表裏切替) |
Ctrl+G | Display | 表示レイヤ設定 |
Ctrl+J | Grid | Grid設定 |
Ctrl+L | Layer | レイヤ変更 |
Ctrl+Q | DRC | DRCをかける |
Ctrl+R | Route | 配線 |
Ctrl+S | Move | 移動 |
Ctrl+T | Text | テキスト |
Ctrl+W | Wire | ワイヤ(手動で配線をひく) |
Ctrl+X | Smash | スマッシュ(部品のシルクなどを分解) |
Alt+Z | Window x2 | x2倍に拡大 |
Ctrl+Alt+Z | Window x0.5 | x0.5に縮小 |
Ctrl+1 | Topレイヤに | |
Ctrl+2 | Bottomレイヤに |
その定義ファイル(のBrd用ショートカットキー部分のみ)
#ref(): File not found: "dot.eaglerc" at page "akita/2012"
グリッドは0.05inch、Altグリッドが0.025inchあたりが順当か。よく使うのは、Move, Route, Ripup, DRCなので、これらをショートカットにすると便利。あとはText。
Ripupは、選ぶ場所によって、折れ線の一部だけ戻ったり、折れ線全体が戻ったり、そのネットがすべて戻ったりするが、法則はあるけど場合分けで書きにくいのでなれるほうが早いか。
Routeで配線の途中で、左上のレイヤ選択で表/裏パターンを切り替えると、あとで変わるところにVIAが置かれる(その寸法は右上のほうで穴のサイズなどを指定)。※レイヤ切り替えを行うショートカットor操作はないのかな・・・ありそうな気がする。
ルールファイル(*.dru)を直接いじってもいいが、Board→DRCで、個別にGUI的にルールを編集できる。 [#i84f68e7] http://gaussmarkov.net/eagle/padsize.html
AutoCAD形式。Illustratorとかは対応しているしDXFとの変換も可能。Inkscapeでも扱える模様(書き出しだけ?)
http://ja.wikipedia.org/wiki/DWG http://helpx.adobe.com/jp/illustrator/kb/223949.html http://oshiete.goo.ne.jp/qa/1921974.html http://www.inkscapeforum.com/viewtopic.php?f=5&t=4059
http://www.magfine.co.jp/magnetjapan/
後閑さんのEagle本を一通り読んで、メモ。
※change→font→vector、とすると、印刷で作成したPDFが検索可能テキストになる?と思ったけどダメっぽい。
http://www.koka-in.org/~kensyu/handicraft/diary/20040630.html
すぐ忘れるので備忘録。 http://www42.atwiki.jp/narec/pages/21.html
いつも忘れるので備忘録。 印刷(プリンタとして)するときは、左側の手差しトレイに、用紙の上を手前、用紙の表面を表面にして差す。 (手差しコピーの時は上下が逆だったような気がする:未確認)
http://ofnisiki.blog.fc2.com/blog-entry-40.html
まあ基本的に、Eagleはこまったらスクリプト(ulp)を探せ、という感じ?
http://www.asahi-net.or.jp/~aa4t-nngk/awk.html#inputdelimiterfs
よく使う、千石では「2550コネクタ」という名前のコネクタ。JSTでも「REコネクタ」という類似品(同じもの?)がある。 http://www.jst-mfg.com/product/detail.php?series=209
I2C通信中にバッテリ電源電圧が下がってPORがかかった場合、PSoCのほうはリセットがかかるが、当然ながらI2C Slave側はリセットがかからない(POR機能がなければ)。 つまりI2C通信中でI2Cトランザクションが止まって、マスタ側のPSoCは最初からやろうとするが、スレーブ側はトランザクションの途中、ということがありうる。この現象は、POR後にSDAがLに落ちている、という現象として現れる。 強制的にI2CモジュールではなくI/Oポートトグルでダミークロックを9発送る、という対策をうってみたが、どうもうまくいかない(SDAがHに戻ることも、戻らなずにLのままのこともある)。ちょっと怖いが、SDAとSCLをいずれもStrongモードの出力ピンにして一度Hを出力し、その後I2Cピン(駆動モードはOpenDrainLow)に戻してみたら、SDAもHにあがってI2Cバスがidle状態にできるようだ。再現性というか汎用性のほどは謎だけど備忘録。
PSoC TRFのGlobal I/Oの項によると、P1.7/P1.5などのI2C信号ピンになりうるピンは、"I2C Enable=1"のときにI2C信号ピンになる(のでDrive ModeをOpenDrainLowにしないといけない)、と書いてあるが、その"I2C Enable"という信号(フラグ)がどこにあるか書いていない。
よーく読んでみると、I2Cの項で、I2C_CFGのEnableMaster/EnableSlave=0/0の場合はP1.7/P1.5等のI/OピンがI2CHWから切り離される、と書いてある。つまり、このどちらかのフラグを1にすると、"I2C Enable=1"という意味、ということになる。
わかりにくい。
この現象がおこるケースをまだ多くは経験していないのだけど、そんなに大きくないプログラムなのに、text領域(プログラム本体)が足りない、というリンカーのエラーが出ることがある。
"{linker} area 'text' not large enough."
Project->Settings->Compilerの中で、Compressionをチェックすると、最適化をしてくれてこのエラーを回避できる(ことがある)。 http://microcontrollers.2385.n7.nabble.com/area-text-not-large-enough-td158733.html
VisualC#でシリアルポートで連続してやってくるデータを受信する際の注意点のメモ。 まずシリアル受信時のイベントでserialPort.DataReceived()が呼ばれるが、スレッドセーフではないので別スレッドにしないといけない。昔の.NET Frameworkではdelegateを使うようだが、最近のはこんな方法でできる模様。http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/e412787f-586b-40ea-aa60-e6857aa44d68
ちなみにserialPort.dataReceived()は、1バイト(Threshold設定値)以上の受信で呼ばれるが、実際に受信されたバイト数は1以上のバラバラの値なので、BytesToReadで実際に受信されたバイト数を確認してすべて読み出す。(akitaの作業日誌「11/01/17: VisualC#のserialPortでの受信」を参照)
// こっちは別スレッドの受信処理関数 private void ReceiveByte(byte[] buf, int n){ char c; if (this.InvokeRequired == true){ this.Invoke(new Action<byte[], int>(this.ReceiveByte), buf, n); return; } // 以下、受信データbuf[]に対する処理(nバイト分まとめて) }
// シリアル受信イベント関数 private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e){ byte[] buf = new byte[4096]; // 受信バッファ(最大で4096バイト:serialPortのプロパティで設定した値 int n = serialPort.BytesToRead; // 実際に受信されたバイト数 serialPort.Read(buf, 0, n); // 受信バッファの内容をぜんぶ読み出し this.ReceiveByte(buf, n); // 受信データに対する処理(上記の関数) }
ちなみに、最後の
this.ReceiveByte(buf, n); // 受信データに対する処理(上記の関数)
のところを、次のように1バイトずつ処理すると、オーバーヘッドが大きいようで高速連続受信では間に合わない模様。
for (int i = 0; i < n; i++) this.ReceiveByte(buf[i]);
どうも動作がおかしいような気がしていたんだけど、やっと理解ができた。 TX8のTX8_COMPLETEフラグは、送信中のデータのStopビット送信後に立つが、この送信中データは、TX8_BUFFER_REGではなく、TX8_Shift_REGなので、連続して送信するときは、タイミングがけっこう理解しにくい。
TX8_BUFFER_REG----->TX8_Shift_REG
という構成になっていて、このTX8_BUFFER_REGに送信したいデータを書き込むわけだが、通常はその前にそれがFullでないかをTX8_BUFFER_EMPTYフラグでチェックする。つまり2バイト連続して送信するときのタイミングはこんな感じ。
TX8_BUFFER_REG TX8_Shift_REG <1バイト目送信> <2バイト目送信> TX8_BUFFER_EMPTY ~_~~~____________~~~~~~~~~~~~~~~~~~ TX8_COMPLETE ________________~_______________~~~ ↑1バイト目書き込み(*) ↑2バイト目書き込み(**) ↑1バイト目送信おわり ↑2バイト目送信おわり
つまり、
while(!(TX8_bReadTxStatus() & TX8_BUFFER_EMPTY)); TX8_PutChar(d);
のようにして、送信する(=TX8_BUFFER_REGに書き込む)前にTX8_BUFFER_EMPTYフラグをチェックするようにしても、このタイミングで実際の送信が始まる(TX8_Shift_REGに転送される)わけではないのがポイント。
上記の例では、(*)で1バイト目を書き込んだ直後に、BUFFER_EMPTYとなるので、(**)で2バイト目を書き込めるが、この時点ではまだ1バイト目が送信中なので、この後に立つTX8_COMPLETEフラグは、1バイト目の送信が終わったとき。 つまり
while(!(TX8_bReadTxStatus() & TX8_BUFFER_EMPTY)); TX8_PutChar(d1); while(!(TX8_bReadTxStatus() & TX8_BUFFER_EMPTY)); TX8_PutChar(d2); while(!(TX8_bReadTxStatus() & TX8_COMPLETE));
のように続けて2バイト送信して、2バイト目の送信が終わったかをチェックするつもりでも、2つ目のTX8_PutChar(d2)とそのあとのwhileの間に1バイト送信分ぐらいの時間の処理がない限りは、1バイト目の送信がおわったところで最後のwhileは抜けてしまう。(このタイミングでは実際には2バイト目の送信が始まったばかり) (※デバッグなどでTX8_PutChar(d2)のあとに観測用の処理を入れているとその間に1バイト目の送信が終わってしまって、2バイト目の送信が終わってから最後のwhileを抜ける、という現象も起こりうるので、なお見つけにくい)
したがって、このようなケースで確実に2バイト目の送信終了を検知したければ、1バイト目のTX8_PutChar(d1)のあとでTX8_COMPLETEフラグが立つまで待ってから2バイト目の転送をはじめる(=1バイト目の転送が終わってから2バイト目の送信をはじめる)ように、次のようなコードにするのがよいか。ただし(***)のwhileは省略できるはず。
while(!(TX8_bReadTxStatus() & TX8_BUFFER_EMPTY)); TX8_PutChar(d1); while(!(TX8_bReadTxStatus() & TX8_COMPLETE)); while(!(TX8_bReadTxStatus() & TX8_BUFFER_EMPTY)); // (***) TX8_PutChar(d2); while(!(TX8_bReadTxStatus() & TX8_COMPLETE));
1バイト送信を次のように1つの関数にまとめるときは、上記のような方法が使えないので、悩ましい。
void PutChar(BYTE d){ while(!(TX8_bReadTxStatus() & TX8_BUFFER_EMPTY)); TX8_PutChar(d); }
現時点では、効率は悪いが次のように1バイトごとに送信完了をチェックする方法しか思いつかない。
void PutChar(BYTE d){ while(!(TX8_bReadTxStatus() & TX8_BUFFER_EMPTY)); TX8_PutChar(d); while(!(TX8_bReadTxStatus() & TX8_COMPLETE)); }
RX8のデータシートによると、RX8受信割り込みがかかる(=RX_REG_FULL=1となる)のは、Stopビットの中央(=ビットクロックの立ち上がり)。 受信割り込みがかかってから実際に割り込み処理がはじまるまでの時間を計測してみた。
#ref(): File not found: "TN8emg1.png" at page "akita/2012"
#ref(): File not found: "TN8emg2.png" at page "akita/2012"
下の緑がRXDで、0x00を受信したところ。つまりその立ち上がりがStopビットのはじまり、ということになる。9600bpsなので、1bitの時間は約104usなので、ここから52usのところで受信割り込みが発生していることになる。上の黄色が受信割り込みルーチン内でI/OポートをLにしている波形なので、この立下りが割り込み処理がはじまったところ、と考えてよい。これをみると、割り込み発生→割り込み処理開始、までのレイテンシはほとんど無視できると考えてよさそう。ただし上の2つの波形のように、10us程度のばらつきがあるようだ。この緑の波形はRXD端子で、RX8内ではビットレートの8倍のクロック(この場合の周期は104us/8=13us)に同期して動作するため、RXD端子の信号とクロックとの同期のタイミングのばらつき、と考えると順当か。
Subjectと本文の文字コードが違う、というのが原因のことが多い模様。 「署名」にUnicodeの文字を書いておいて返信メールの本文を強制的にすべてUnicodeにする、という方法が一番簡単か。
http://mbp-osaka.com/seo-truth/column/9652/ http://blog.livedoor.jp/shby/archives/51840789.html
シリアル受信割り込みを使うようにserialPort.DataReceived()を使っていると、当然ながらシリアル受信時はいつものその関数が呼ばれる。一時的に割り込みを使わずにserialPort.ReadByte()とかで読みたいときは、フラグなどを使って、DataReceived()内での受信処理をスキップさせないといけない。気づきにくいバグだった。
iPhoneでいつのまにか(機内モードを設定→解除すると消えてることが多いような気がする)APNの設定が消えてることがある。 SIMロックフリー版ではよくある現象のようで、iPhone構成ユーティリティでAPNのプロファイルをつくって入れておくと大丈夫っぽい。 https://discussionsjapan.apple.com/thread/10111338?start=0&tstart=0 http://b-mobile.jugem.jp/?eid=35
Exchangeでアカウントを作って、m.google.com からSyncを選んで、そこから設定できる。 http://sunny.tea-nifty.com/blog/2011/04/iphonegoogle-8a.html
ついでにここではGmail関係の設定もあって、"Send Mail As"と"Delete Email As Trash”も標準Mailアプリから使えるようになるらしい。(が、Send Mail Asがどうもうまくいかない=GmailアカウントがSenderになってしまう)
http://windswell-memo.blogspot.jp/2011/06/google-sync-for-iosmail-send-as.html
http://www.aivy.co.jp/BLOG_TEST/nagasawa/c/2011/06/google-sync.html
TCP/443とUDP/4365&3333あたり。
http://support.pogoplug.com/entries/20521316-pogoplug
http://www.fujixerox.co.jp/download/ こちらから機種・OSを選んでドライバ(インストーラ)をDL後、カスタム→IPアドレス(133.281.139.7)を指定して、検索しても見つからないが、そのまま次へ、を押すと、見つかって無事インストールできる模様。
http://support.apple.com/kb/TS1629?viewlocale=ja_JP
TCP/5223(とTCP/2195&2196)を使うのでファイアウオールをあけておくこと。
Sony純正であった。 http://www.sony.co.jp/Products/felica/consumer/download/kazashitelogon.html
http://yagup.s337.xrea.com/2011/07/otixo/
NiCd/NiMHは定電流充電しないといけないわけだけど、定電流ダイオードを使えばとりあえず作れる。なるほど。ただし過充電などの制御は要注意。 http://since20080425.blog32.fc2.com/blog-entry-387.html
ライセンスサーバを立ち上げ(直す)るときに手順。
(12/10/11追記) flexlmが使うポート(27000とmlm用の指定ポート)はファイアウオールを通すように設定するのを忘れずに。また実際に使われているライセンスファイルがどれなのかも、ダイアログ等で要確認。 ちなみにmlmのポート変更(決めうち)はこちら→http://www.mathworks.co.jp/support/solutions/ja/data/1-9OM8ZP/index.html?solution=1-9OM8ZP
(15/01/21追記)mlmは27005あたりが順当。いずれもTCPをあける(たぶん双方向)。
このあたりを参考に、DisplayLinkドライバで、Macから認識はされるが、画面が真っ白になってしまう。 http://blog.saizo.net/?eid=827303
こちらによると、輝度が高すぎてUSB給電がぎりぎりっぽい、とのこと。たしかに輝度を落としたら問題なさそう。 http://www.amazon.co.jp/%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%83%AD%E3%83%BC-7%E5%9E%8B%E3%83%AF%E3%82%A4%E3%83%89-USB2-0%E7%94%A8-%E6%B6%B2%E6%99%B6%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4-FTD-W71USB/dp/B001QVJ83C
これを愛用していたんだけど、しょっちゅうBluetooth接続が切れて困っていたら、バッテリの接触不良が起こりやすい、とのコメントが。接点の曲がり具合を調整してみる。
http://www.amazon.co.jp/The-Magic-Wireless-Charger-Mouse/dp/B004GCPJDQ
ついでに、Magic Trackpad用もあるようだ。
http://www.mobeetechnology.com/the-magic-bar.html
こういうストラップを松葉紐、と呼ぶようで、着脱可能なものも製品としてあるもよう。 http://www.daioshop.jp/shopdetail/002008000002
http://the-fool.me/wordpress/customize/favicon.html
iPadでプレゼン(講義を含む)とかするとき、PowerPointをiPadのKeynoteでインポートするとだいたいレイアウトがくずれる。そこでPowerPoint→PDFにしたあと、こちらのPDF2KeynoteでKeynote形式に変換すればいいか、と思ったら、説明にも書いてあるように、iPadで開けないようだ。いったんMacのKeynoteで開いてから保存しなおすとiPadのKeynoteでも開ける、とのこと。
http://www.cs.hmc.edu/~oneill/freesoftware/pdftokeynote.html
基本機能でもインポートできるが、wmf2svgを使う方が確実っぽい。 http://inkscape.paix.jp/manual/basic-file.html
wmf2svgはこちらから。 http://code.google.com/p/wmf2svg/
使い方:
java -jar wmf2svg-0.9.2.jar [options...] [wmf filename] [svg filename]
何度やっても忘れるので・・・ http://web.kudpc.kyoto-u.ac.jp/manual/ja/login/pubkey#keygen_mac_linux
標準機能。ホーム+Sleepボタン。 http://www.iphone-quality.com/tips/screenshot/
WordPressの設定(というか追加)に関して、MySQLのrootのパスワードを忘れてしまってどうしようと思ったが、再設定の方法があった→http://sasuke.main.jp/mysqlrootpass.html
ついでにMySQL関係をWebから設定できるphpMyAdminがなかなか便利。 http://www.dbonline.jp/phpmyadmin/
TimingAnalyzerでつくった波形から、VerilogHDL形式のテストベンチをはくスクリプトを書いてみた。これをTimingAnalyzerのscript/ディレクトリに入れておき、波形をつくったあとでこのスクリプトを実行すると、script/ディレクトリ内にtest_vectors.vというファイルがつくられる。これをISEなどでつくったVerilogテストベンチ(Test Fixture)のひながたにはりつける。(もとからあるinitial文などは消してしまう)
#ref(): File not found: "verilog_test_vectors.py" at page "akita/2012"
サンギョウサプライ。けっこういろいろある。 http://www.e-sangyo.jp/
昔のISE10のころはvbwという波形ファイルの生成ができたんだけど、最近はできなくなっているもよう。 http://marsee101.blog19.fc2.com/blog-entry-437.html http://marsee101.blog19.fc2.com/blog-entry-1108.html このあたりによると、慣れればVerilogHDLでテストベンチを書くのも苦ではなくむしろ便利、とのことだが、慣れるまではちょっと面倒そうな予感。
http://marsee101.blog19.fc2.com/blog-entry-1043.html こちらによると、TimingAnalyzerというアプリがあって、波形(タイミングチャート)の編集はできる模様。 http://www.timing-diagrams.com/dokuwiki/doku.php
値の入力/編集はPulseから。バス値の入力にちょっとクセがあって、Pulseで値を変えようとするとL/Hしか入らないが、Editで値を直接入力(16進数なら00、2進数なら0000、など)したあとは、PulseからIncreent/Decrementできる。
ScriptでVHDLテストベンチ形式での書き出しはできるが、スクリプトを読む限り、それほど面倒そうでもないのでVerilogHDLテストベンチ形式で書き出すのもそれほど面倒ではなさそうなので、時間ができたらやってみたいと思う。
数値表示ならできる模様。 http://nanapi.jp/6319/
reg [7:0] dat[0:4];
みたいにRAMを書いて、ram[addr][b]みたいにアクセスしようとするが、どうも正しい値が返ってこない(常時0)。ram[0][b]みたいなアドレスが定数のアクセスはOKっぽい。いずれもBehaviorシミュレーションではOKだが、論理合成がうまくいかないようだ。RTLレベルの回路図をみようとしたが断念。CoreGeneratorでつくったRAMを使うのが吉か。
Xilinx ISE (14.1)で、ucfで指定しているピン配置等が、配置配線で反映されない、という現象に遭遇。いろいろ試してみた結果、ucfファイルの途中で行末コードが変わっているか制御コードが入っていたようで(ISEのエディタ画面では確認できない)、内容をEmacsにコピー→ISEで新規でつくってペースト、とすることで解消。「見えない文字」はやっかい。
FPGAに複数のタクトスイッチをつないで、コモンあり集合抵抗でまとめてプルダウン、という回路をつくったが、その動作が、1つのスイッチを押すと他のスイッチがつながっている入力ピンも同じように変化する、という現象に遭遇。オチとして、集合抵抗のコモンをGNDにつないでいなかった、というのが原因で、たしかにコモンがGNDにつながっていないと、各入力間が抵抗でつながっているだけ、ということになるので、1つの入力を変化させると他の入力も同じ電圧になる。
PSoCのSPIで、MISOの受信データが、波形をみると0x40のはずなんだけど、受信したデータをみると0x20になっている(1ビットずれている)、という現象に遭遇。 SPI終了の判定をSPI_COMPLETEフラグで見ているのが早すぎるのか?とも思ったが、シフトレジスタ→受信レジスタに転送後にSPI_COMPLETEが立つので、受信レジスタの内容が受信途中なので1ビットずれている、ということはありえない。
結論として、SPIモジュールのClockSyncが空欄(たしかSYSCLK direct)になっていて、SPIのクロックが意図していたVC1とは違っていてタイミングがずれていたのが原因の模様。
.NET Framework 3.5以降は、delegateを使わなくてもいいらしい。 http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/e412787f-586b-40ea-aa60-e6857aa44d68 (これの「2012年6月11日 13:56」のJittaさんの投稿)
→大量のデータを受信すると、受信終了時にハングっぽくなることがある(再現性低い)が、DataReceivedから受信したデータを1バイトずつInvokeしていたのが原因っぽい模様。
serialPort_DataReceived(...) { ... n = serialPort.BytesToRead; serialPort.Read(buf, 0, n); for (int i = 0; i < n; i++) this.ReceiveByte((Int32)buf[i]); }
これを//以下のようにbufごとまとめてInvokeして、ReceiveByte関数のほうで順番に処理する、とすると大丈夫そうな模様。
http://d.hatena.ne.jp/sxhxtxa/20090128/1233165255 こちらで紹介されている「スケッチ風ドロー」がなかなか便利そうな模様。
いろいろやり方はあるが、「薄くカットする」というのが順当か。
http://333bankin.blog58.fc2.com/blog-entry-664.html
どうも苦手だったけど、コツがわかった気がする。 最初の点から接線方向にドラッグし、その後マウスの移動で、その接線方向を保ったままで曲線を変えられる。 http://www.sturnus.net/inkscape/guide/line.html
"Fantastic LXML wrapper..."とでてDXF出力ができない件、どうもInksscape側のknown bugのようで、次のバージョンでは改善される見込み、とのこと。 https://answers.launchpad.net/inkscape/+question/146050
http://caih.org/open-source-software/fixing-inkscape-in-mac-os-x/
https://bugs.launchpad.net/inkscape/+bug/819209
EagleUpでできる。基板そのものはけっこう簡単だけど、載っている部品まで、となると、個別に3Dモデルとつくらないといけないので、かなり面倒そうだ。
http://www.emergeplus.jp/?page_id=1318
WiX Editを使うと、インストーラの作成が楽ちん。 http://www.02.246.ne.jp/~torutk/windows/wixandwixedit.html ただし日本語の情報は少なめで、英語でもちゃんとしたマニュアルやチュートリアルはないようなので、MLなどの情報をあさるのが現実的か。
で、インストール時のUIで、Licence Agreementを出さないようにする方法がないかと調べてみたら、同じことを考えている人がやっぱりいた。 http://stackoverflow.com/questions/597025/how-to-build-a-minimal-wix-installer-ui-without-a-license-page
GStreamerというフレームワークが、いろいろできそう&クラスプラットフォームで便利そうな予感。 http://sourceforge.jp/magazine/03/06/16/1621207
termsrv.dllを直接書き換える、というのでできそうな模様。リモートデスクトップ接続中だとこのdllを書き換えできないので、コンソールから入ってxedit等で作業すべき。 http://walbrix.net/blog/2010/05/windows7.html
ついでに、コンソールでの作業だけでいいや、というとき便利なtelnet接続はこちら。http://axela5004.blog74.fc2.com/blog-entry-422.html
送受信したデータでのエラー率のBit Error Rate(BER)は、ビットごとのエラーを測るわけだけど、PCのUARTで送ったデータと受けたデータをバイト単位で比較するのでは、スタートビットが化けていたときに、バースト誤りになって、正しいBERは測れない。つまり、PCのUARTという1バイト単位という抽象化された(?)単位では、BERは測れない。
そこで、PSoCを使って、送信ビットと受信ビットのXNORをとって、それが1のときだけTX8のBitClockをカウントする、という手法をとってみる。TX8のBitClockは、送信データ(START/STOPビット以外)の8ビット分の間だけビットの中央で立ち上がるクロックなので、都合がよい。 こんな感じ。TX_DUTが測定したいデバイスへ送る送信ビット、RX_DUTが受信ビット、これらのXNORをとったのがCMPoutで、それを外部でCMPinにつないでCounter8の動作をコントロールする。GI/GO間の接続を使って、このCMPoutとCMPinをつなごうと考えたんだけど、どうやってもRX_DUTとCMPinが同じRIバスを使うことになってしまう(XNORのRIからの入力とXNORの出力からつながるRIが同じRIになってしまう。別の行に配置しようにも、Counter8のクロックがTX8DUTのData Clock Outとつながらないといけないので、同じ行に配置しないといけない。あれ、Counter8のクロックは、左隣のディジタルブロックからもとれるけど、これはTX8の場合はData Clock Outになるのかな?いや、そうだとしてもやっぱり同じ行に配置しないといけないので、さきほどの問題は解消されないから、CMPin/outか、DataClockOut/Counter8-ENのどちらかを外部でつながいといけないはずだ。 (12/08/07追記) PSoC TRFのp.343(17.1.13)のTX8の記述によると、ディジタルブロックで隣のブロックにつなげられる信号はPrimary Output F1なんだけど、TX8でのF1は、シリアル出力(送信データ)であって、DataClockではないようだ。残念。
#ref(): File not found: "PSoC_BER.png" at page "akita/2012"
(12/08/07追記) BitClockをいっかいGOに出して、をれをGIに戻す、という接続にすれば外部配線なしでできた。
#ref(): File not found: "PSoC_BER2.png" at page "akita/2012"
http://www.facebook.com/hogehoge みたいにアクセスできるようにする方法 http://www.facebook.com/notes/pawafanpeji-gou-zhu-jiang-zuo/fanpejinourlwo-bian-gengsuru/106386289435599
http://d.hatena.ne.jp/jasmine_88/20120401/1333268128 これによると、少なくともWindowsならそのままコピー&ペーストでいけそうなんだけど、どうもうまくいかずにラスタ(ビットマップ)形式で貼り付けられてしまう。そこで、貼り付け時に「形式を指定して貼り付け」を選んで、"拡張メタファイル形式"で貼り付けしてみると、ベクタ形式のまま貼り付けられそうな模様。
MacのInkscapeだと、Cut&Pasteでオブジェクトをコピペ(Inkscape内・他のWord等のアプリへ)するとBitmap画像になったりする。XQuartsの設定でなおる模様。ちなみにWindowsはもとから問題なし。
http://wiki.inkscape.org/wiki/index.php/FAQ_(Japanese) 「Inkscapeでコピーアンドペーストがいろいろおかしいです」
PCBE05がはくドリルデータは、XやYが同じ値の穴は座標を省略する、というフォーマットになっているようだ。(例えばX0Y0のあとがX0Y10だと、Y10だけ) 基本的にはこれでも大丈夫なはずだけど、FusionPCBにこのドリルデータを送ると、ヘンなところに穴があるよ?と言われる。原因がよくわからないので、以前バージョンのPCBE04ではいたドリルデータを、Olimex向けに拡張ガーバーっぽいドリルデータに変換するプログラム(出典失念:buildx.batなど)を使って変換したドリルデータだったらOKだった。この両者を比べてみると、明らかな違いは、その同一座標の省略しかないっぽい。そこで、それを補完するawkスクリプトを書いてみた。
awk -f hole_conv.awk Hole.hol(PCBE05がはいたドリルデータ) > 変換後のドリルデータ
#ref(): File not found: "hole_conv.awk" at page "akita/2012"
※(2012/09/26修正)X座標の値が6桁の行の取り扱いにミスがあったので差し替え。
ちなみに各データの例。
PCBE04のドリルデータ | #ref(): File not found: "Hole_PCBE04.hol" at page "akita/2012" |
↑をbuildxで変換したドリルデータ | #ref(): File not found: "Hole_PCBE04conv.hol" at page "akita/2012" |
PCBE05のドリルデータ | #ref(): File not found: "Hole_PCBE05.hol" at page "akita/2012" |
http://arms22.blog91.fc2.com/blog-entry-185.html ちょっと加工すればドリルも読める模様。
なんでだ?と思ったらFAQのようだ。ターミナル内の文字コードをSJISにしていたからだった。 http://q.hatena.ne.jp/1227674929
要は3.3Vを与えておけばよい。
ガーバーを読み込んで「了解」ボタンで切削を始めようとしてもはじまらないときは、 「切り込み深さ」と「切り込みピッチ」が0になっていないか要確認。どちらかが0のときは、切削(ドリル加工も)が行われない。「切り込みピッチ」を使わない(=1回で穴をあける)ときも、切り込みピッチには切り込み深さと同じ値を入力しておく。
TX8のデータシートによると、TX8_COMPLETE(送信完了)フラグをreadするとクリア(reset)される、とある。それじゃポーリングで送信完了を判定できないんじゃ?と思ったが、送信完了していない間はTX8_COMPLETEフラグは立っていない(0)が、送信完了したあとの最初のポーリングでの読み出しで立っている(1)のを読み出したら、そのときにフラグが0になるけど、送信完了の判定は済んでいるので大丈夫、ということになる。
「11/11/22: PSoC RX8受信割り込みにかかる時間」で書いたことを忘れていた。だいたい10usぐらいかかる。500kbpsで連続受信しているときは、だいたい20us/byteなので、1倍と受信ごとに割り込みをかけるのはけっこうタイミング的にきびしい。実際、連続して受信すると、2バイト連続まではなんとかなるが、3バイト連続だと2or3バイト目を落としてしまう模様。4バイト連続だと、2or3バイト目が落ちるが、4バイト目は受信できる、といった調子。
Emacsで行末コードを、sjis-macでCRのみ、にしていたが、ターミナルは基本的にUnixなので、行末コードはLFのみ(CR+LFでも可)。したがって、Emacsで編集したスクリプト(シェルスクリプトとかawkとか)をnkf -Luで変換して実行、ということになるが、毎回それをするのは面倒なので、Emacsの行末コードをsjis-unix、またはsjis、としておくのが無難か。(スクリプトで1行目でエラー、みたいな一見謎のエラーは行末コードが原因のことがけっこうある)
Eagleで設計したデータとPCBEで設計したデータを相乗りさせるときとか、相互に読み込みたいんだけど、標準機能ではどうもうまくいかない。Eagleでガーバー&ドリルをはいて、PCBEでガーバーを読み込むと微妙にアパーチャが変わっているのと、そもそもドリルを読み込む機能がない。 というわけで、変換スクリプトを自作。
#ref(): File not found: "e2p_conv.sh" at page "akita/2012"
#ref(): File not found: "e2p_conv.awk" at page "akita/2012"
ちなみに参考にしたガーバーのコマンドのリファレンス:http://www.gitc.pref.nagano.lg.jp/joho/kaisetsu/gbf_s.pdf
※(12/07/31追記)長方形アパーチャに対応していなかったのを修正して差し替え。 ※(12/08/01追記)D01コマンドの解釈を少し間違えていたので差し替え。(フラッシュ→描画、のときにフラッシュの座標から描画をはじめるのが正しい) ※(12/08/01追記)座標が4桁の場合の変換にミスがあったので差し替え。
FAQのようだ。自動的にFWが更新されるので、少し待って抜き差しすればよい、とのこと。 http://www.facebook.com/note.php?note_id=61909342625
一筋縄ではいなかなそう。 http://do-gugan.com/~furuta/archives/2010/12/vmware_fusion_3.html
起動時にタイトル画面を表示させない、などなど。
http://d.hatena.ne.jp/SiyaF/20081226/1230272251
textBoxのKeyPressイベントで、e.KeyCode (or e.KeyChar)がKeys.Enterかどうかで判別できる
http://jeanne.wankuma.com/tips/csharp/form/cobolerform.html
SeeedStudioのNFC ShieldでFelicaを読んでみた。 ライブラリPN532.cppが、ほとんどMiFARE決めうちの書き方をしているので、いろいろ書き換えないといけない。
具体的には、例えばカードを読むreadPassiveTargetID(uint8_t cardbaudrate)は、パケット構造がMiFARE決めうちに書いてあるので、例えばFelicaならば次のようなパケットにして、cardbaudrare=1 (Felica 212kbps)で、バイト数をあわせて書き込めばよい。
pn532_packetbuffer[0] = PN532_INLISTPASSIVETARGET; pn532_packetbuffer[1] = 1; // max 1 cards at once (we can set this to 2 later) pn532_packetbuffer[2] = cardbaudrate; pn532_packetbuffer[3] = 0x00; pn532_packetbuffer[4] = 0xff; pn532_packetbuffer[5] = 0xff; pn532_packetbuffer[6] = 0x00; pn532_packetbuffer[7] = 0x00; if (! sendCommandCheckAck(pn532_packetbuffer, 8)) // for Felica
WinXPまでだと、何かのアプリが使っていて削除などをできないファイルに対して、どのアプリがロックをしているのかを調べる"Who Locks Me"というのがあったけど、Vistaから使えない。 で、代替ソフト。 http://suiseidreaming.blog45.fc2.com/blog-entry-7.html
VisualStudioだと、作ったプログラムをインストールするためのインストーラ(*.msi)をプロジェクトとしてつくることができるが、VisualC# Expressなどではできない。
そこで、オープンソースのインストーラ作成ツールWiXを使うとよさそう。
http://takuan93.blog62.fc2.com/blog-entry-29.html
実行ファイル(*.exe)のインストールだけなら、これですぐに作れそう。 [#oeab06e3]
ただ、.NET Frameworkが必要なプログラムだと、再配布版.NET Frameworkをインストールするように促したり(or自動でインストールしたり)したいわけだけど、それでもできることはできそうだ。まだ詳しく読んでないけど、とりあえず。 http://www.softark.net/wix/lesson05.html#CH-5.1 http://cml.s10.xrea.com/ej/WiX/install_dotnet.htm
プログラムのインストール/アンインストールを繰り返していると、ファイルを開くプログラム、としてそれを選べなくなることがある模様。レジストリをいじることになる。 http://okwave.jp/qa/q1788671.html
新PC(Win7/64bit)で、どうもUSBの挙動がおかしい。 FT232を挿しても、デバイスドライバではCOMポートがあるのに、TeraTerm等でリストに出てこない&開けない、ドライバを更新しようとするとハング、など。PCをリブートするとなおる。 で、マザーボードの型番+USB、あたりで検索してみると、似た症状の人がいて、PCがSleepから復帰するとUSBデバイスが使えなくなる、とあって、どうもビンゴっぽい。USB3.0対応のチップセットなので、そのあたりのドライバのバグっぽい雰囲気。
結論として、BIOSやUSBホストのドライバなどを最新のものに更新したら、大丈夫っぽい雰囲気。
教訓:初モノに注意&とりあえずもろもろ最新に更新すべし
2mm厚のアクリル板だと、出力100%・速度5.3%(標準)ぐらいがちょうどいい。 小さい穴をあけるときは、出力30%・速度30%〜5%ぐらいが順当か。
(12/08/08追記)PPI(パルス/インチ)は1000ぐらいがよさそう。ちなみにPPIは、レーザーを出す間隔。標準の2インチレンズだとレーザービーム径0.127mmなので、PPI=1000だと0.0254mmごとなのでかなり重なる。PPIが大きいほど素材に熱がたまりやすいことになる。普通の切断であれば、材料と厚さを選ぶと設定される標準パラメータでだいたい大丈夫そう。
http://pc-kaden.net/log/eid130.html
ATmega2560用のライブラリを書いていて、ところどころにdefine(__ATmega2560)を条件としてコードを書いていたんだけど、ピン互換のATmega640に書き込んでみたら(ArduinoIDEでATmega640ボードを使うように選択して)、動作がおかしい。と思ってよく考えたら、define(__ATmega640)を条件として加えておかなければいけないことに気づいた。あたりまえといえばあたりまえ。
PowerPointヘルプによると、テーマを「別名で保存」するときに「既定のテーマ.thmx」というファイル名で保存すると、それが既定となるらしい。ヘンな仕様。
昨日の続き。別ウインドウ上のコントロールを制御するのに、とりあえずで一番楽なのは、その別ウインドウのフォーム.Designer.csに書いてある、そのコントロールの属性をprivateからpublicにする方法か。
http://vsug.jp/tabid/63/forumid/45/threadid/9186/scope/posts/Default.aspx
あとpictureBoxに自分で作った画像を表示させる手順は、Bitmapクラスの実体をつくって、pictureBox.Imageをbmpにする http://homepage3.nifty.com/midori_no_bike/CS/graphics.html
ついでに、そのBitmapクラスの実体をいじるときは、BitmapDataをReadWriteでUnlockして中身をいじり、最後にUnlockする。(Unlockした時点で、元のbmpに書き戻される)
http://xptn.dtiblog.com/blog-entry-99.html http://social.msdn.microsoft.com/Forums/ja/csharpexpressja/thread/cb586cbf-4c06-49af-8d6e-077466ee2b7a
(おまけ)VisualC# Expressで、Consoleで出力される「出力ウインドウ」の出し方(なぜかデフォルトで表示されないようになっている)は、「デバッグ」→「ウインドウ」→「出力」
(おまけ)乱数のつくりかた http://dobon.net/vb/dotnet/programing/random.html
(おまけ)平方根の求め方。Math.Sqrt()を使う。(どうもこの書き方になかなか慣れられない) http://www.atmarkit.co.jp/fdotnet/dotnettips/691squareroot/squareroot.html
画像読み込みはBitmap型変数をnewで作るときにファイル名を指定すればOK。 http://dobon.net/vb/dotnet/graphics/imagefromfile.html
で、開く別ウインドウは、元ウインドウとは独立に動いてほしい(別ウインドウを表示したあとも元ウインドウを操作したい)ので、いわゆる「モードレス・ダイアログ」として開けばよい。 要は、別のFormをWindowsフォームとして追加しておいて、そいつをnewでつくって。.Show()すればよい。 http://www.atmarkit.co.jp/fdotnet/dotnettips/139dialog/dialog.html
で、その別ウインドウへの画像の表示は、ちょっと一筋縄ではいかない。
まず読み込んだBitmap型変数の中の画素の値を参照するのは、GetPixelだと異様に遅いので、unsafeでポインタを使うのが、まだましか。 http://blog.moro-tyo.net/2006/10/post-6.html
これで取得した画素の値を別ウインドウに表示させるのは、このあたりの方法を使えばよさそうだけど、まだ理解しきれていないので、今度。
http://vsug.jp/tabid/63/forumid/-1/threadid/4495/scope/posts/Default.aspx http://dobon.net/vb/dotnet/form/accessanotherformdata.html
PSoCでロータリーエンコーダ( http://elm-chan.org/docs/tec/te04.html )をカウントする方法を調べてみる。 定番としては、A相とB相のどちらかで割り込みをかけ、もう一方の0/1でカウントup/downする、という方法だけど、そもそもCPU性能が低いPSoCではあまり得策ではない。
で、こんな方法を発見。 http://bluefish.orz.hm/sdoc/bb_psoc.html#ロータリーエンコーダ
要はカウンタを2つ(up用とdown用)用意して、A相とB相を、ClockとEnableに接続(upとdownで逆に)することで、回転方向に応じてどちらかのカウンタの値が変化(PSoCのカウンタはダウンカウンタなので、値は減る)するので、その差をとろう、という方法。なるほど。あたまいー。
http://blogs.wankuma.com/rapt/archive/2010/04/22/188276.aspx ここを参考に、実行ディレクトリを指定した方がよさそう。 あと、2回目以降、なぜかcmdプロンプト画面が開かないことがあるようで、pauseでデバッグもできないことがあった。一度タスクを削除して、もう一度つくりなおしたらOK
Emacs22からはTabで補完、がデフォルトらしいが、Spaceで補完、も設定できる。 http://blog.sociono.net/?cid=8845
http://windows7faq.net/2009/11/post_10.html
行/列の全体を選択したあとで、Ctrl-"+"で追加できる。
http://www.kmonos.net/lib/caldix.ja.html
こんな方法で可能。 http://rapislazuli.dyndns.org/d/20101225.html
ただしFTDIのVCPドライバは若干クセモノの模様。 http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Favrdude36
ISOイメージからインストール用USBメモリをつくるMicrosoft純正ツールがある、とのこと。 http://www.atmarkit.co.jp/fwin2k/win2ktips/1248win7usb/win7usb.html
ただし64bitOSのブートディスクは32bitOSからは作成できない。 http://wiki.livedoor.jp/kou1okada/d/Windows7%20%A5%D9%A1%BC%A5%BF%C8%C7
bootsect.exeさえあればブートローダを打ち込める。 http://wiki.livedoor.jp/kou1okada/d/Windows7%20%A5%D9%A1%BC%A5%BF%C8%C7
s.ToString("X"); とすると16進数標記の文字列が得られる、などなど。
おまけ:byte型変数の値をASCIIコードとして対応文字への変換:char型にcastしてToString()する http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29500&forum=11
かなり変態的。
Leonard | ATmega32U | (other function) |
D0 | PD2 | RX |
D1 | PD3 | TX |
D2 | PD1 | SDA |
D3 | PD0 | SCL |
D4 | PD4 | ADC8 |
D5 | PC6 | |
D6 | PD7 | ADC10 |
D7 | PE6 | |
D8 | PB4 | ADC11 |
D9 | PB5 | ADC12 |
D10 | PB6 | ADC13 |
D11 | PB7 | |
D12 | PD6 | ADC9 |
D13 | PC7 | |
A0 | PF7 | ADC7 |
A1 | PF6 | ADC6 |
A2 | PF5 | ADC5 |
A3 | PF4 | ADC4 |
A4 | PF1 | ADC1 |
A5 | PF0 | ADC0 |
分解してみたのでメモ。スイッチのすぐ横に半田が盛ってある端子があり、そこから線を引っ張り出しやすい。半押しで、コモン−半押し間が導通、長押しで、コモン-長押し間が導通。
#ref(): File not found: "NEX-C3_SW.jpg" at page "akita/2012"
DisplayLinkのalpha版ドライバでいける、とのこと。 http://ameblo.jp/kurabeat/entry-11250448559.html
http://www.inflidge.co.jp/products/lcb-50/index.html こちらのLCB-50で、印加電圧を6Vぐらいにすると、5秒くらいではんだがとける。だいたいとけたら印加電圧を下げておしまい。すごく早くできれいにできる。
スイッチサイエンスで売っているポリプロピレン紙( http://www.switch-science.com/products/detail.php?product_id=822 )をCraftROBOで切ってはんだマスクをつくってみる。 こちらを参考に、PCBE→pcbe2outlineで枠線化→2回なぞるようにコピー→ガーバー出力→NCコンバータでDXFへ、として、品質:1、紙:33の設定でカット。
カット自体はそこそこうまくいく。セロハンテープでおおむねはがせるが、残った部分はカッターやピンセットで抜く。 ところがクリームはんだをぬってみると、ヘラで少し強く押し付けると、ポピプロピレン紙のマスクが破れそうになってしまう。意外と弱い。あまり強く押し付けてはだめなようだ。
ただdefined(__AVR_ATmega640__)を追加していけばいいんだろう、と思っていたら、そんなに甘くなかった。ATmega640を指定してmakeすると、アセンブル時に"illegal opcode elpm"というエラーが出る。なんじゃそりゃ?と思ってみたらら、ATmega640(ROM:64KB)とATmega1280(128KB)・ATmega2560(256KB)では大きく違っていて、ブートローダ関連のelpmという命令(!)が、ATmega640には存在しないらしい(ATmega640/1280/2560のデータシートに書いてある)。どうもROMサイズが64KBだとポインタが16bitに収まるで、128KB以上だと16bitを越えるのでページ切替がいるから、みたいな理由の模様。 http://www.societyofrobots.com/robotforum/index.php?topic=8448.0
というわけで、いろいろ調べた結果、Optibootのソースコードを参考に、
pgm_read_word_far(addr);
という関数を、
pgm_read_word_near(addr);
に書き換えることで、elpmという命令を使わないようにできるようだ。stk500boot.cを見ると、例えば
#if defined(RAMPZ) data = pgm_read_word_far(address); #else data = pgm_read_word_near(address); #endif
となっているので、 RAMPZというシンボルをdefineすることでこの切替をできそうなもんなんだけど、どうもうまくいかないので手動で書き換えて、コンパイル&書き込み&ArduinoIDEからの転送がうまくできた。
http://www.nihonkohden.co.jp/iryo/point/dispo_electrode/type.html 基材もゲルも両方が粘着ゲル、というのが、はりなおしも効いていい、ということか。
ついでに、電極と皮膚との接触部分の話。 http://motor.geocities.jp/ysuga0731/robot/technique/codewarrior/emg_fft.htm
lxmlがいる、というエラーが出るが、その対処方法: http://nanitsuku.blogspot.jp/2011/12/macinkscapedxf.html
そういう製品がありそうだなあ、と思ったら、フツーにぴったりサイズがあうようだ。 http://d.hatena.ne.jp/OkibiWorksLabo/20100504/breadboard
BODとかCLK8とかの各フラグのチェック/アンチェックを個別に指定もできるが、Arduinoファームウエア書き込みの時のように、結果としてヒューズビットの値(HIGHとかEXTENDとかLOWとか)の値がわかっている場合は、下の方にある各ヒューズの値を16進数で直接入力できる。(それにあわせて各フラグの状態も変わる)
http://kitahei.cocolog-nifty.com/youyou/2007/07/windows_xp_ece3.html
似てるけどクライアント側で複数サーバを切り替えるのはこちら。 http://www.rep1.co.jp/staff/tech/windows/rdp_wt_-windows_tips-.htm
付属CD-ROMからインストールしたあと、アップデートをかけられるが、 付属CD-ROMをなくしてしまうと、どうしようもない。 と思ったら、こんな方法で「インストールしてあること」にすればダウンロード後に新規インストールできるようだ http://www.dfguo.com/?p=24
金沢大のVPNはF5 FirePassだが、MacOSX Lionでは動作しないようだ。 https://discussions.apple.com/thread/3192517?start=0&tstart=0 このあたりをたどっていくと、こんなスクリプトを発見。 https://fuhm.net/software/f5vpn-login/ これで無事VPS接続できた。
sudo make install
後、
f5vpn-login username@fp01.kanazawa-u.ac.jp
でいける。2回目からは引数は不要(前回のsessionのユーザ名・ホスト名が使われる)
sudo ln -s /usr/bin/f5vpn-login /usr/bin/vpn
のようにシンボリックリンク(ショートカット)を作っておくと起動が楽チン
FW越しの場合に開けるべきポートはUDP/54925 http://solutions.brother.co.jp/support/html/mfc7820n_jp/doc/html/body/mfc-39-09a.html
ファイバオプティクプレート(FOP)というのがある。原理はファイバースコープみたいなもの。 http://jp.hamamatsu.com/products/other/pd021/index_ja.html この延長で行けば、空間の1点からの等方的に発せられている光を、撮像素子上の1点にのみ集めることができるような気がするけど、どうなんだろう。とりあえずこのFOPを1個サンプルで買えないか問い合わせてみる。
PSoC1でなにかシステムを作るとき、プロトタイプを作りやすいように、外観がArduino互換のボードを作る、というのは、なかなかいい案のような気がしてきた。 ArduinoShieldでPSoC5が載っている、というのはやっている事例がある。 http://www.cypress.com/?app=forum&id=2233&rID=59733 http://www.egr.msu.edu/classes/ece480/capstone/fall11/group01/#about ArduinoShieldが載るPSoC5ボードは既にある、同じもののようだ。https://pachube.com/feeds/39657 名前もズバりPSoCduino。まんま。(ECE480というのは授業のチームの名前?)ただ、少なくともPSoC1はなさそうだ。
シリアル経由でPSoC1にプログラムを書き込むという事例はここにあった。 http://jm7muu.com/index.php?PSoC%2FBootloader
フリーのコンパイラを使えばArduinoIDEみたいなのを作れるかな?と思ったけど、周辺をいじらないといけないのでPSoC Designerを使うのがよさそう。setup()とloop()を使うArduinoソースの流儀に変換するラッパーだけつくればよさそう。(いらんか)
System.Threading.Thread.Sleep(x); でxミリ秒ウエイト。 http://d.hatena.ne.jp/shikaku/20080714/p3
どうもリボンUIには慣れられないなあと思っていたら、やはり同じような向きは多いようだ。アドオンで昔風の「メニュー」を使えるようにするアドオンがあった。http://e-website.org/archives/2011/05/tips-office-201.html http://www.ka-net.org/ribbon/ri10.html
Mac用はないのか?と思ったが、よく考えたらMacのOfficeは、リボンとは別に、上に昔風のメニューが出ているんだった。
http://www.koetec.com/blog/?p=32 なるほど。熱電対に直接エアをあてて温度をキャリブレーションしている。
ValueChangedイベントは、スライダを動かすたびに発生する。たしか昔のSliderBarコントロールでは、スライダの移動が止まって少したってから発生する、というイベントがあったような記憶があるんだけど(あいまい)、TrackBarでも、MouseUpイベントならば、スライダの移動が止まったとき≒マウスをはなしたとき、をとらえられる。
デバッグ用にUART通信をマグネットコネクタ経由でみていたのだが、ときどき、変わるはずのない変数の値の変化がおこり、原因をさぐってみたら、コネクタの接触がグラグラしていて、ときどき0x00とか0x80とかの値が送られて(送信されて)いて、その値をマイコン側で受信して変数の変化をさせている(そういうプログラムを組んであった)、というのが原因だった。てっきり、変わるはずのない変数が変わっているからコンパイラのバグかとうたがっていたが、もっと身近なところに原因があった、というオチ。
「カタログファイル」というもの。開くアプリの関連付けとかの情報を記録している。基本的にはWindowsでは使わないので消しても大丈夫・・・ということのようだ。(またMacで作られる) http://q.hatena.ne.jp/1216437586
なかなか覚えられないので備忘録。 http://en.wikipedia.org/wiki/Switch
つまりPoleが回路(スイッチ)の数、Throwがスイッチあたりの接点の数、ということ。
https://neji-speed.com/ns/start
PSoCにはRAMが256バイト以上あるものがあるが、標準のCコンパイラでは、配列でまとめて256バイト以上を扱えない。つまり、BYTE x[500];とかはできない。 ただし、以下の方法でRAM中の絶対アドレスを指定することで、いわゆるラージ・メモリ・モデルとなり、256バイト以上も扱えるようになる。
#pragma abs_address:0x100 BYTE d[1024]; #pragma end_abs_address
ちなみにRAMの0x100〜はバンク1。バンク0とバンク7(最終バンク)はそれぞれデータ用とスタック用だが、これら以外は配列などに使うことができる。バンクをまたがった256バイト以上の連続した配列などでも大丈夫。
1つのSambaサーバの別ボリュームに対して、それぞれ別のアカウントで接続、というのは、どうもできないようだ。(Sambaサーバ1つに対して1つのアカウント。2つ目以降は、1つ目と同じアカウントしか使えない)net useコマンドで接続しようとしても、そのようなエラーになる。(ちなみにMacでは↓の方法でできる)
Ctrl+ドラッグで、15度ごとに円弧/扇形の角度を設定。Shift+クリックで、円(楕円)に戻す。 http://inkscape.paix.jp/manual/drawshape-arc.html
ちなみに2つの円を描いてパス→差分、で真ん中が抜けたドーナツ型になる。 http://www.sturnus.net/inkscape/guide/bucket.html
パスワードをページごとに保存できるように、認証時に出てくるメッセージ(デフォルトでは'PukiWikiAuth')を変更したほうがいい。 ja.lng.phpの「$_msg_auth」に、'PukiWikiAuth'のように書かれているので、これをページごとに変えればよい。
標準では、ユーザディレクトリではPHPを実行できないようになっているようなので、/etc/apache2/mods-enabled/php5.conf中のコメントに従って、指定箇所をコメントアウト(してapache2を再起動)すればOK http://blog.livedoor.jp/kimura_khs/archives/cat_50051532.html http://ohhappy.org/blog/linux/533.html
http://urasandesu.blogspot.jp/2010/02/eclipse-arduino-01.html によると、PがLow Power版(あとは違いはSignatureぐらい)、ということらしいが、何が違うんだろう。製造プロセス?データシートをみると、たしかに少しだけPのほうが消費電力が小さいようだが、動作速度vs電源電圧などは、同じようだ。
Finger→サーバに接続、で、"smb://ユーザ名@サーバ名/共有フォルダ名"と書く。(初回はパスワード入力を求められる)
ATmega328を使っているいろいろなArduinoで、boards.txtに書いてあるブートローダが arduinoのものとoptibootのものがあるようだが、optibootというのは arduino互換のコンパクトなブートローダ、ということらしい。 http://arms22.blog91.fc2.com/blog-entry-380.html
http://www.technoveins.co.jp/develop/eagle/layer.htm
主なものはこんな感じ。
ATmega328Pなどでは、ヒューズビットのRSTDISBLを1にすることで、 /RESETピンをIOピン(PC6)として使うことができるが、 これをセットしてしまうと、いわゆるISPでは書込ができなくなる。 (ISPは、/RESETピンとSPIで書込をする方法)
で、ATmegaのデータシートを読むと、ATmegaの プログラム書込方法には、AVRISPmk2などを使うISPモード以外に、 「パラレルモード」と「高電圧シリアルモード(HVS)」というのがあり、 それぞれ専用の書込機や自作ハードで書込ができるが、 HSVはピン数の少ないAVRしか対応していないものが多い。 実際、ATmega328Pのデータシートを読むと、 パラレルモードでの書込と通常ISPモードでの書込、しかできない。
パラレルモードでは、PortB, PortC, PortDのピンを使って パラレルで書込をする方法で、16本近いピンを使う。
従って、ATmega328Pで/RESETをIOピン(PC6)として使うように RSTDISBLヒューズを書き込んでしまうと、シリアルで書込をする方法は なくなる。
http://www.geocities.jp/altshibabou/etc/avr_checkds.html
http://119.245.187.76/app-def/S-100/acchorike/index.php?ATmega
http://sfukuda.at.webry.info/201005/article_5.html
http://elm-chan.org/works/avrx/report.html
こんなの。 http://creativecommons.jp/licenses/
基本的な使い方はこのあたり。 http://home.h08.itscom.net/albatros/webshop/eagle_f.html
ちなみによく使いそうな部品で、ぱっと見どこにあるかわからないもの:100milピンヘッダ=con-lstb、 半田ジャンパ=jumber
使いたい部品がライブラリにないと難儀をするわけだが、他の回路図/基板で使われているならば、その設計データの部品をライブラリに抜き出して、それを自分の設計から使う(Library->Use)、というテもある。 やり方は、このあたり(exp-project-lbr.ulpを使う)。http://pc.watanet.com/?p=621 例えば:
それか検索してみると、ちょくちょくひっかかる。 例えば:
似てるんだけどビンゴの部品がない場合は、似ているやつに微修正を加える。 微修正はこのあたりとか。 http://www.picfun.com/Eagle/Eagle33.html http://www.picfun.com/Eagle/Eagle34.html http://www.piclist.com/images/www/hobby_elec/eagle11.htm http://www.piclist.com/images/www/hobby_elec/eagle12.htm
http://www.geocities.jp/zattouka/GarageHouse/Tool/Fritzing/MakeParts/MakeParts.htm
やっとつながって理解ができた。 http://garretlab.web.fc2.com/arduino/inside/arduino/Ardino.h/digitalPinToPort.html http://garretlab.web.fc2.com/arduino/inside/arduino/wiring_digital.c/pinMode.html
このあたりの情報を総合すると、 /(arduino)/hardware/arduino/core/arduino/Arduino.h /(arduino)/hardware/arduino/variants/pins_arduino.h あたりの情報でつながっている。Arduinoのピン番号とATmegaのポート/ピン番号の定義は、pins_arduino.hでのport_to_mode_PGM[]やdigital_pin_to_port_PGM[]などから決まる。
元はOpenLog (https://github.com/nseidle/OpenLog/wiki )で、 https://github.com/nseidle/OpenLog/wiki/Flashing-Firmware からリンクのある https://github.com/nseidle/OpenLog/zipball/master から最新版FWをとってくると、OpenLog_v3というのがあって、ArduinoIDE1.0でコンパイルできるようだ。 というわけで、SDLogger用にMCUやF_CLK(ArduinoIDEからBoardをSDLoggerに)選んでを指定してコンパイルすればよさそうな模様。
SDLoggerの書込速度向上のために、水晶を上限の20MHzに交換してみたが、それにあわせてF_CLKを設定してコンパイルして書き込みたいところだが、ブートローダの転送速度も、標準の57600bpsから、この水晶の交換にあわせて変わっているので、boards.txtに書いてあるブートローダの転送速度を変えればよさそうなものだが、実行環境によってはシリアルの転送速度を半端な値(例えば水晶を14.7456MHzから20MHzに交換すると57600bps×(20MHz/14.7456MHz)=78125bpsとなる)に設定できない(転送時にIDEでシリアル設定に失敗する旨のエラーが出る)ので、ブートローダそのものを、F_CLKを変更して再コンパイルするべき。
SDLoggerのブートローダは https://github.com/magnuskarlsson/SDLogger のboot644から。 make sdloggerに、SDLogger用のブートローダの設定(MCUやF_CLKなど)が書いてあるので、これを書き換えてmakeする。 が、WinAVRを入れてあるのだがEEWEがundeclaredだ、というエラーが出る。 https://groups.google.com/group/nycresistormicrocontrollers/browse_thread/thread/bb42e0a52b8cea1c?pli=1 によると、EEWEビットはEEPEビットと同義、のようなので、とりあえずATmegaBOOT.cのEEWE(一カ所)をEEPEに書き換えればコンパイルは通る。これをAVRISPmk2で書き込めばいいのかな。
/Arduino/libraries/ や~/Arduino/hardware/(ボード名)/boards.txt においておけば、ArduinoIDE起動時に読み込んでくれる。ちなみに、~/Arduino の場所は変更できるので、Dropbox内とかに置いておくといろんなところから共用できる。 (12/03/16追記)board.txtをこれらの場所に置いておくと、コンパイル時にArduino.hが見つからない、というエラーが出るようだ。なんで?ちなみに??.build.variantを=standardなどに指定しておかないと、pin_arduino.hが見つからん、というエラーが出るので、variantを指定しておくべき。
こんな感じでいけるっぽい。
img = new IplImage(320, 240, BitDepth.U8, 3);
Cv.Line(img, new CvPoint(xs, ys), new CvPoint(xe, ye), new CvColor(0, 255, 0));
pictureBoxIpl1.RefreshIplImage(img);
FPGA Cafeで分けていただいてJAISTで加工したPOM(ポリアセタール)フィルム(厚さ0.2mm)+千住金属クリーム半田でリフローしてみたが、0.65mmTSOPの足がちょくちょくブリッジしているようだ。またQFNも、半田が多すぎて裏側でショートしているのか、ちょくちょく動作しないものがある。やはりちょっと半田が多いようだ。もう少し薄い0.1mmぐらいがいいんだろうか。
それなりにいろいろあるようだ。 最も確実なのは、AtmelのAVRstudioから書込機AVRISPmk2でICSP(SPI)でプログラム(hex)→fuse→lockbitの順に書き込む、ということのようだ。
https://sites.google.com/site/hananekosugan/electro/arduino_burn_memo
http://yuki-lab.jp/hw/AVRISPmkII/index.html
http://www.geocities.jp/arduino_diecimila/make/ae-atmega/index.html
http://www.geocities.jp/arduino_diecimila/use/attiny.html#AE-ATmega
ArduinoMegaはstk500v2というプロトコル(Atmel ApplicationNote AVR068)でプログラムの書き込みを行う。最初が0x1bから始まるバイナリ列だが、LED Tile互換のATmega2560Vボード(3.3Vなので8MHz)で、avrdudeでターミナルモードにしてみようとすると、応答が返ってこずにTimeoutとなる。
avrdude -p m2560 -P COM1 -c stk500v2 -b 115200 -v -v -v -t
Acknowrichで1バイトずつ転送すると正しい応答が返ってくるが、連続して転送すると応答が返ってこない。というわけで、通信速度が速すぎてブートローダでの処理が追いついていないっぽいので、stk500v2の上の方で定義されているビットレートを57600bpsに落としてみたら、連続転送でもavrdudeでもArduinoIDEからの書き込みでもOKとなった。
ちなみにbootloaderの書き込みモードへの移行は、main()の最初の方でタイムアウトが設定されていて(boot_timeout)、標準では約1秒になっている。つまりリセット後、約1秒待って書込みモードに移行しなければ、書き込んであるプログラムの実行が始まることになる。
http://the-fool.me/wordpress/customize/favicon.html
特にArduinoMegaのブートローダは、stk500v2プロトコルに変更されているので、それまでのUnoとかのブートローダとは大きく異なる。ブートローダの入っているディレクトリも別。(hardware/arduino/bootloader/{atmega,stk500v2}/) で、stk500v2のほうのmakeがどうもうまくいかなくていろいろ調べたが、結論として、Makefileをちゃんと読むと、WinAVR用、と書いてあるので、http://sourceforge.net/projects/winavr/ からWinAVRをインストールすると、ProgrammerNotepadというエディタ(というか統合環境)のも一緒にインストールされて、こいつ用のプロジェクトファイル(*.pnproj)が使える。
で、ProgrammerNotepadでプロジェクトを開いてmakeするが、MCUとF_CPUとBOOTLOADER_ADDRESSをターゲットMCUにあわせて設定してmakeする。ただしmake mega2560のように、Makefileに書いてある情報もある。この場合は、コマンドプロンプトからmakeすればOK(WinAVRをインストールするとコンパイラ等へのパスは通っている)
ちなみにstk500v2ブートローダのソースはこちら→https://github.com/arduino/Arduino-stk500v2-bootloader/blob/master/Makefile
誰かやってそうだなあ、と思ったが、まとまったライブラリとしてはないっぽい。 単品だとこちらぐらい→http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1266675196
AVRISPmkIIとかで書き込むとき、AVRStudioから書き込む方法もある。 http://www.geocities.jp/jun930/ele/burn_bootloader.html
ただしヒューズビットとロックビットに注意。詳細はATmegaのデータシートにあるが、おおざっぱには、ヒューズビットはクロック源の設定とかBrown-outの設定とか。ロックビットは、ブートローダなどがフラッシュを書き換えられるようにするかどうか。 http://www.geocities.jp/arduino_diecimila/bootloader/index.html http://www.geocities.jp/bokunimowakaru/diy/arduino/ae-atmega.html
で、肝心のブートローダは、(arduino)/hardware/arduino/bootloader/atmega/にソースがあるが、標準でMakefileに書いてあるのは、328Pとか1280用など。つまり、すべての純正Arduinoボード用のブートローダが入っているわけではない。 メモリ領域とかをあわせてMakefileを書き換えてコンパイルしてもいいが、探すと見つかることもある。(っていうかあるはず)たとえばATmega2560用(というかArduinoMega2560用)はこちら→http://www.cbxdragbike.com/arduino/new/ (12/03/09追記)このページは古いようだ。ArduinoMegaは、stk500v2というブートローダを使う模様。だたしこれのmakeのしかたがイマイチわからない。*.pnprojってなんだ?これっぽいんだが、echo.exeを使うようで、WindowsのAVR Studioだとcmd.exeの組み込みechoとどう区別するんだ?http://nemuisan.blog.bai.ne.jp/?eid=188089
ちなみにコンパイルはコマンドプロンプトから行うが、AVRStudioをインストールすると、AVR Studio Command Prompt、というのがあるので、それを使うと、パスなどが通ったコマンドプロンプトが起動するので、ここでコンパイルする。
http://isi.kicks-ass.net:8080/isi/bakilog-2.0/isiduino-mini
こういう理屈らしい。 http://plaza.rakuten.co.jp/jashi/diary/201107240000/
Ctrl+Alt+Breakで切り替えられるが、Mac+Parallesだとうまく効かないようなので、そういうときは、Default.rdpを直接編集。 具体的にはscreen mode id:i: を2にする http://news.mynavi.jp/articles/2010/02/25/w7/index.html
ターゲット側に、パスコンなどのVDD-GND間の容量がある程度ついていると、電源供給そのものができなくなるようだ。(Power was nog toggled!...と出る) 以前、PowerCycleモードでの書き込みに失敗することはあって、電源の立ち上がり時間が問題なのかと思っていたんだけど、電源供給そのものができなくなる、ということは、ON時の突入電流が過大だと判断して制限がかかるんだろうか。 具体的には、MiniProgをつなぐ端子の直近に0.1uFを1個と、そこから離れて0.1uFを2個の合計0.3uFのときはNGで、端子直近の0.1uFをはずすとOKだった。 とりあえずPowerCycleモード書き込みを使うときは、パスコンは要注意、のようだ。
f = 0; while(f == 0);
みたいなプログラムで、他の割り込みルーチンでf=1;とすることでこのループを抜けさせるような場合、最適化がかかって、無限ループになってしまう。 Arduinoコンパイラの最適化の度合いは、どうも変えられないようで、その変数をvolatile修飾子をつけて最適化から外すとよさそうな模様。 http://d.hatena.ne.jp/propella/20081210/p1 http://plaza.rakuten.co.jp/CPU4Edu/20017
ふだんプログラム書きに使っていないMacでArduinoを使って見ようとすると、シリアルポートが現れない。dmesgをみると、initDevice failedとなっている。いろいろ調べた結果、FTDIのドライバを新しくすればOKとなった。
昔は、Xcodeをインストールしたら、ついでにgccも入っていたはずなんだけど、Xcode4.3は、手動で入れないといけないようだ。(Preferences→Downloads→Componentsから"Command Line Tools”) http://d.hatena.ne.jp/mujiryouhin/20120222/1329893707
ライブラリのソースを読んでみたところ、受信ピンの割り込みで受信開始、のようだ。ふむ。 ただし受信がはじまったらソフトウエアで1ビット分待ちながら受信、なので同時受信はできない。ふむ。 タイマ割り込みをうまく使えば複数受信もできそうな気がするが、なんとなくめんどいな。
設定から変更するのではなく、最初に書いたとき(直前に書いたとき?)にplain textかHTMLかだったか、を引き継ぐようだ。 http://www.ajaxtower.jp/gmail/sent/index12.html
基本的にはレジスタをごにょごにょしている。 http://gaje.jp/technotes/arduino-core/
ボーレートの横のListBoxで、no line endingを選べば、上のBOX入力時の最後のEnterは送られない。NewLineだと、Enter(0x0d)も送られる。
同じ品種で電源に応じて上限が変わる、というわけではないようだ。 例えばATmega2560(無印)-16は電源は5Vのみで16MHzまで。ATmega2560V-8は、電源は1.8V〜5Vで8MHzまで。つまりATmega2560Vを5Vで16MHzで動かすことはできない。製造プロセスが違うのかな。(PSoCは品種は同じで、電源電圧に応じてCPUCLKの上限が変わる)
http://arduino.densikit.com/home/howtomakelibrary/kiso-hen
http://pspunch.com/pd/article/arduino_is_c.html SIGNALかISRで書く。そのほか、setup()とloop()の仕掛けとか。
ビンゴ。Dotuinoでやっている。 http://arms22.blog91.fc2.com/?tag=Dotsduino
/etc/apache2/mods-enabled/ に、/etc/apache2/mods-avaiable/userdir*のリンクをつくる。 http://www.logos.ic.i.u-tokyo.ac.jp/~s1s5/pukiwiki/index.php?Linux%2FDebian%2Fapache
環境設定→ユニバーサルアクセス、から設定できる http://www.miuxmiu.com/archives/2011/09/17/mac_os_x_lion_double_tap_drag_setting_method.html
サーバを更新してから、大きなファイルが添付できなくなっていた。attach.ini.phpに指定しているファイルサイズの上限を設定しているのにおかしいな、と思ったら、php.iniのほうに、phpでアップロードできるファイルの上限、が書いてあって、これが、前のサーバ(のphp)と変わっているんだと思われる。ちなみにいまのUbuntu11のphpでは、8MBになっていた。
http://ml.php.gr.jp/pipermail/php-users/2004-November/024236.html
ちなみにエラーメッセージ(/var/log/apache2/error.log)はこんな感じ。
[Fri Feb 10 17:22:28 2012] [error] [client 133.28.96.227] PHP Warning: POST Content-Length of 9796817 bytes exceeds the limit of 8388608 bytes in Unknown on line 0, referer: http://???
というわけで、/etc/php5/apache2/php.iniを変更してapache2を再起動してOK
Win側で仮想PSプリンタをつくって、そこを通して印刷、でできそうなんだけど、どうもうまくいかない。(Win側はテスト印刷までOK。MacからIP接続プリンタの追加で、Win側のIPアドレス/キュー名指定するが、印刷が通らない。プロトコルをLPDにしているから、だろうか) http://www.manabii.info/2006/02/mac-windows.html http://ejwt.eco.coocan.jp/pc/pc49.html http://www.1010uzu.com/boyaki/201002-15232426.html
FAQのようだ。まずはGoogleAppsのカレンダーの設定で、外部にも共有(をできるようにする)、をチェックすると、カレンダーの設定でPrivate Addressが出てくるようになる。 https://groups.google.com/a/googleproductforums.com/forum/#!category-topic/calendar/importing-and-exporting/Jp_TnIzaNFM
載っているUSBホストコントローラのMAX3421Eのデータシートによれば、SPIのクロック周波数の上限は26MHz、とのこと。なので理論上の上限は26Mbps、ということになる。 実質1MB/sとして、1GBのデータだと1時間、というところか。
Arduino PTP Library(w/ USB Host Library)の勝手がだいたいわかってきた。プログラムの書き方の定型がある。
HexDump dmp; ptp->GetObjectHandles(0xFFFFFFFF, 0, 0, &dmp); // 生データdump(最初の3つがParameter) PTPObjHandleParser prs; ptp->GetObjectHandles(0xFFFFFFFF, 0, 0, &prs); // Parseされたデータ(Parseは
ちなにcanoneos.hだと、EOS用に特化した関数がけっこうある。 EOSCaptureあたりを参考にしてみると、CanonEOS型のオブジェクト(!)Eosをつかうと、 Eos.Capture()で撮影ができたりする。
カメラから画像データを吸い出すのは、GetObjectを使うはずだが、そのときのデータの流れがいまいちよくわかっていないので、GetObjectHandlesのサンプル(PTPObjectHandles)で試してみることにする。HexDump *hexを引数にして呼び出せば、だーっと出てくるものなんだろうか。
http://nekosan0.bake-neko.net/connection_rtc.html ※Arduino1.0用は、Wireの関数名が少し変わっている(send→writeなど)ので微調整。 このRTC8564の仕様だと、読み出しは、I2CのSTART→Write(アドレス)→STOPを送らずに、次のSTART→読み出し→STOP、という手順のはずなのだが、1回目のWriteでendTransmissionしてSTOPを送ってしまっている。まあたしかにこれで読み出し対象のアドレスは設定できるので、たしかに所望のアドレスの読み出しはできる。
ArduinoUnoだとD10〜D13だが、ArduinoMegaだとD50〜D53だったりして、ピンの位置が違ってシールドがそのまま使えない。そこで最近は、ATmegaのICSPピン(2x3ピン)にもSPIの信号が出ていることを使って、ICSPピンにつながる2x3のソケットを備えて、どのArduinoでもSPIが使えるシールド、が増えているようだ。純正Ethernetシールドとか。http://arduino.cc/en/Main/ArduinoEthernetShield
こちらを参考に。 http://www.circuitsathome.com/?s=7d
SPIのピン配置がArduinoMegaとArduinoUnoは異なるので、配線を変更。 具体的には、以下のピンを変更
http://dev.tetrastyle.net/2012/01/arduino-mega-sparkfun-usb-host-shield.html (ついでに:GPIOもつかう http://dev.tetrastyle.net/2012/01/usb-host-shield-lcd.html)
なかなか頭に入らないので備忘録。 要は、いろんなOSで標準サポート(ドライバが標準でついている)の USB-シリアル、というところ。 http://www.recursion.jp/avrcdc/driverj.html
PSoC Designer5.0のときは、問題なく動いていたんだけど、そのプロジェクトを5.1に移行して見ると、どうも動かない。boot.tplっぽいけど、とりあえず以下のように、まずは内蔵OSCで起動して、main()の最初の方で手動でExtClkを使うように変更する、というのが、手っ取り早そうではある。 http://d.hatena.ne.jp/harre_orz/mobile?sid=23&date=20110606§ion=1307365914
Serial等のprintやwriteで、文字列中に"\x00"として0x00を出力しようとすると、当然ながら、文字列の終端記号として扱われるので、0x00とそこから先は出力されない。これはprintでも、バイナリ用のwriteでも同様。 で、write(0x00)とやっても、やっぱり0x00は出力されない。 write((int)0x00)とやってもだめで、int d = 0; write(d); とやるとOK。これしか方法がないんだろうか。
→(12/01/31追記)やはりFAQのようだ。CastすればOKのようだ。Serial.writeなら(int)、Wire.writeなら(byte)にCastする。
TouchPadShieldのタッチセンサICのMPR121が、触ってなくてもけっこうノイズを拾うことが多い。とくにスイッチング電源などが近くにあると影響が大きいような気がする。
で、対策のうち、いちばん簡単なのは、設定レジスタでDebounceを設定すること。これは、値の変化が連続して○回起こったらTouch/Releaseと判定する、という回数。
マニュアルには書いてないが、ボーレート設定のところに、リストから選ぶのではなくて直接数値を入れると、そのボーレートに設定できる。
基本的にはICSP、つまりAVR-ISPmk2で書き込む https://sites.google.com/site/hananekosugan/electro/arduino_burn_memo
ちょっとトリッキーな方法として、FT232のBitBangモードを使って書き込む方法や、他のArduinoを使って書き込む、という方法もある模様。 http://d.hatena.ne.jp/LaclefYoshi/20110108/1294475337 http://www.geocities.jp/arduino_diecimila/bootloader/index.html
設定すればちゃんと使えるようだ。 http://nekosan0.bake-neko.net/structure_digital_port.html
Sparkfunで売っているArduino USB Host SheildとArduinoADKは、↓のUSB Host Shield Libraryと微妙にバージョンが違うようだ。 http://www.circuitsathome.com/mcu/usb-host-shield-library-version-2-0-released ん?でもこれは、新バージョンのSparkfunのUSB Host ShieldならOKということ?(調査中) http://d.hatena.ne.jp/bs-android/20110920/1316469238
原理的にはできるはず。 http://penguin.tantin.jp/hard/Arduino/home_made_board.html http://nekosan0.bake-neko.net/outline_composition.html
だいたいPCBEでガーバー入力できそうな雰囲気。(拡張ガーバー)
いろいろ解読して、なんとなくわかってきた。 https://github.com/magnuskarlsson/SDLogger/wiki
基本的に、Arduino環境を使ってファームウエアを書き込むのは、ここの手順による。 https://github.com/magnuskarlsson/SDLogger/wiki/SDLogger-firmware-restore hardware\SDLogger\boards.txt をみると、
OpenLog.name=SDLogger firmware restore .. OpenLog.build.core=Restore
とあるので、Restore/以下のソースが使われることになるので、必要であればこれらをいじってUploadすればよい。ちなみにここでbootloaderも指定しているので、MCUを変えることもできそうな気配。
ついでに、ATmega1284P用の設定はあるのかな?と思ったら、参考になりそうな情報を発見。 http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1273415167/30 ちなみにArduino1.0あたりのhardware\tols\avr\etc\avrdude.confにはATmega1284P用の設定が書いてあるので、それをコピーしてくるのが早そうな気配。
http://aleatorik.blog119.fc2.com/blog-entry-121.html
添付ファイルつきメール投稿をできるようにするためにいろいろ調べて、結局Postieというプラグインにたどり着いた。これでできるが、メールサーバがPOP3Sだとphp5-imapを入れないといけない。で、apt-getで入れてもうまく動かず、phpinfo()でみても、imapが動いている形跡がない。
いろいろ調べた結果、php5-imapを入れた後、apache2-ctlでApacheを再起動しないといけなかった、というオチ。(apach2起動時にphpを組み込むので、phpの構成を変えたらapache2を再起動しないといけない)
ssl://????でポートを995にすれば、POP3Sも使える。 また定期的に自動でチェックしてくれるわけではなく、 wp-mail.phpをたたくとチェックする。 http://wordpress.org/support/topic/post-to-wordpress-through-gmail http://futuremix.org/2009/01/wordpress-27-mail-post
ついでに、長すぎる本文を自動的に短くできないのかな?と思ったら、方法自体はあるようだけど、どうもうまくいかないので、とりあえずメモ。 http://www.managehp.com/blog/?p=48 (12/01/31追記)テーマごとに記事を表示しているところを探し、the_contentをthe_excerptに変える。その他、適宜記事全体へのリンクを出させたりする。例えばテーマ"the-go-green-theme"の場合なら、index.phpを以下のような感じに。 <div class="postentry"><?php the_excerpt(); ?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>">(Read All Post Message)</a>
泣けてくるくらい便利。s = "hoge"やs = "a" + "bc"みたいな代入や結合ができるところは、Stringクラスっぽいが、s[0]みたいな、char[]的な扱いもできる。 http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=1460
ここを参考にやってみたら、できたっぽい。~/Library/Application Support/Wine/prefixes/(アプリケーション名)/dosdevice に、USBデバイス(/dev/tty.usbserial-???等)へのシンボリックリンクをcom1としてはればOK http://debugitos.main.jp/index.php?Ubuntu%2FTips#qd9206c8
OpenSourceHardwareコミュニティの力、おそるべし。 Arduino+USBホストシールドでデジカメのシャッターを切ったりしている。
要は研究室の掲示板を電子化して、投稿があったら通知があるようにしたいんだけど、 WordPressあたりがよさそうな雰囲気。というわけで情報のポインタの備忘録。
Arduino1.0から大きく仕様が変わっている。
=指定周波数のPWM波を出す関数tone(PIN, FREQ, TIME) http://www.geocities.jp/zattouka/GarageHouse/micon/Arduino/Melody/Melody.htm
http://www.sparkfun.com/products/10508
Arduinoとピンヘッダでつなげ、と書いてあるが、回路図を見ると、3つのGNDがつながっているので、どれか1つでいいだろう、とGNDの1つだけArduinoとつないでみたら、動かない。まさかと思って導通チェックしてみると、3つのうちの1つしか回路のGNDとつながっていなかった。このGNDをArduinoのGNDとつないだら動いた。つまり、回路図が厳密には正確ではない。
TweakUIで変更できる。 http://www.atmarkit.co.jp/fwin2k/win2ktips/330placebar/placebar.html
http://www.applied-electronics.com/category/prototyping-services/
自室の行き先表示器のボタンスイッチの効きが悪くなってきたので、この際、Arduino Ethernetシールドでつくりなおしてみようかと考えてみる。 Webサーバ自体はけっこう簡単にできるようだ。http://kousaku-kousaku.blogspot.com/2008/11/arduinoethernet-shield.html
タッチセンサのほうは、こいつを使ってみる→http://www.sparkfun.com/products/10508
I2Cでとれるタッチセンサだが、Arduino用のライブラリはないようなので、サンプルソースを参考に書くことになりそう。
ピンの機能をAnalogOutにするだけででは、そのピンの駆動モードは変わらないみたいだ。"High-Z Analog"になっているかを確認するようにしたほうがよい。
基本中の基本だけど忘れないうちに。http://www.jitaku-server.net/samba_setup.html
あとmountコマンドでmountするときのuser名・group名は、mountのオプションとして-o 'uid=???,gid=???'で設定。
拡張子の付け方は、半田面=Solder、部品面=Component、という流儀。(ちなみに半田面=Bottom、部品面=Top、という流儀もある)
設定できるようだ。使ってみようかな。PCBEと同じようにあわせると結構便利なのかもしれない。 http://hsgw.blog10.fc2.com/blog-entry-24.html (12/01/07追記)修飾キー(Ctrl/Cmd等)を伴わない、例えば「A」キーだけ、というのは変えられないようだ。。。 (12/03/23追記)その設定は~/.eaglerc に書いてある。
いわゆるNC(no connection)ピンといっても、本当に内部で何もつながっていないピンと、何もつないではいけないピン、というのがある。加速度センサMMA7455の場合だと、3,10番ピンは"No internal connection, Leave unconnected or connect to Ground"と注記があるので、本当に何もつながっていないピンと思われる。一方、11番ピンは、同じくNCだけど注記には"Leave unconnected or connect to Ground"と書いてあり、実際、GND以外の信号線をつないでみたら、動かなかった。こういうこともあるので注意。
I2Cm(I2Cマスタのソフトウエア実装モジュール)がうまく動かない、と思っていたら、ビンゴ。SCL/SDAに使うピンをOpenDrainLowに設定「してはいけない」。HighZのままに「しておかなければならない」。 http://bluefish.orz.hm/sdoc/psoc_memo.html#I2Cm%E3%81%8C%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84%EF%BC%88100112%EF%BC%89